| /* See COPYING.txt for the full license governing this code. */ |
| /** |
| * \file SDL_visualtest_sut_configparser.h |
| * |
| * Header for the parser for SUT config files. |
| */ |
| |
| #ifndef _SDL_visualtest_sut_configparser_h |
| #define _SDL_visualtest_sut_configparser_h |
| |
| /** Maximum length of the name of an SUT option */ |
| #define MAX_SUTOPTION_NAME_LEN 100 |
| /** Maximum length of the name of a category of an SUT option */ |
| #define MAX_SUTOPTION_CATEGORY_LEN 40 |
| /** Maximum length of one enum value of an SUT option */ |
| #define MAX_SUTOPTION_ENUMVAL_LEN 40 |
| /** Maximum length of a line in the paramters file */ |
| #define MAX_SUTOPTION_LINE_LENGTH 256 |
| |
| /* Set up for C function definitions, even when using C++ */ |
| #ifdef __cplusplus |
| extern "C" { |
| #endif |
| |
| /** |
| * Describes the different kinds of options to the SUT. |
| */ |
| typedef enum { |
| SDL_SUT_OPTIONTYPE_STRING = 0, |
| SDL_SUT_OPTIONTYPE_INT, |
| SDL_SUT_OPTIONTYPE_ENUM, |
| SDL_SUT_OPTIONTYPE_BOOL |
| } SDLVisualTest_SUTOptionType; |
| |
| /** |
| * Represents the range of values an integer option can take. |
| */ |
| typedef struct SDLVisualTest_SUTIntRange { |
| /*! Minimum value of the integer option */ |
| int min; |
| /*! Maximum value of the integer option */ |
| int max; |
| } SDLVisualTest_SUTIntRange; |
| |
| /** |
| * Struct that defines an option to be passed to the SUT. |
| */ |
| typedef struct SDLVisualTest_SUTOption { |
| /*! The name of the option. This is what you would pass in the command line |
| along with two leading hyphens. */ |
| char name[MAX_SUTOPTION_NAME_LEN]; |
| /*! An array of categories that the option belongs to. The last element is |
| NULL. */ |
| char** categories; |
| /*! Type of the option - integer, boolean, etc. */ |
| SDLVisualTest_SUTOptionType type; |
| /*! Whether the option is required or not */ |
| SDL_bool required; |
| /*! extra data that is required for certain types */ |
| union { |
| /*! This field is valid only for integer type options; it defines the |
| valid range for such an option */ |
| SDLVisualTest_SUTIntRange range; |
| /*! This field is valid only for enum type options; it holds the list of values |
| that the option can take. The last element is NULL */ |
| char** enum_values; |
| } data; |
| } SDLVisualTest_SUTOption; |
| |
| /** |
| * Struct to hold all the options to an SUT application. |
| */ |
| typedef struct SDLVisualTest_SUTConfig |
| { |
| /*! Pointer to an array of options */ |
| SDLVisualTest_SUTOption* options; |
| /*! Number of options in \c options */ |
| int num_options; |
| } SDLVisualTest_SUTConfig; |
| |
| /** |
| * Parses a configuration file that describes the command line options an SUT |
| * application will take and populates a SUT config object. All lines in the |
| * config file must be smaller than |
| * |
| * \param file Path to the configuration file. |
| * \param config Pointer to an object that represents an SUT configuration. |
| * |
| * \return zero on failure, non-zero on success |
| */ |
| int SDLVisualTest_ParseSUTConfig(char* file, SDLVisualTest_SUTConfig* config); |
| |
| /** |
| * Free any resources associated with the config object pointed to by \c config. |
| */ |
| void SDLVisualTest_FreeSUTConfig(SDLVisualTest_SUTConfig* config); |
| |
| /* Ends C function definitions when using C++ */ |
| #ifdef __cplusplus |
| } |
| #endif |
| |
| #endif /* _SDL_visualtest_sut_configparser_h */ |