/* 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 */