|  | /* See LICENSE.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_ */ | 
|  |  | 
|  | /* vi: set ts=4 sw=4 expandtab: */ |