visualtest/include/SDL_visualtest_sut_configparser.h
author Ryan C. Gordon
Tue, 24 Jan 2017 00:03:36 -0500
changeset 10841 b9d6a3d65394
parent 7924 fcb86d323770
child 11382 2c50e79b19e0
permissions -rw-r--r--
audio: Fixed off-by-one error in upsampling.
     1 /* See COPYING.txt for the full license governing this code. */
     2 /**
     3  * \file SDL_visualtest_sut_configparser.h
     4  *
     5  * Header for the parser for SUT config files.
     6  */
     7 
     8 #ifndef _SDL_visualtest_sut_configparser_h
     9 #define _SDL_visualtest_sut_configparser_h
    10 
    11 /** Maximum length of the name of an SUT option */
    12 #define MAX_SUTOPTION_NAME_LEN 100
    13 /** Maximum length of the name of a category of an SUT option */
    14 #define MAX_SUTOPTION_CATEGORY_LEN 40
    15 /** Maximum length of one enum value of an SUT option */
    16 #define MAX_SUTOPTION_ENUMVAL_LEN 40
    17 /** Maximum length of a line in the paramters file */
    18 #define MAX_SUTOPTION_LINE_LENGTH 256
    19 
    20 /* Set up for C function definitions, even when using C++ */
    21 #ifdef __cplusplus
    22 extern "C" {
    23 #endif
    24 
    25 /**
    26  * Describes the different kinds of options to the SUT.
    27  */
    28 typedef enum {
    29     SDL_SUT_OPTIONTYPE_STRING = 0,
    30     SDL_SUT_OPTIONTYPE_INT,
    31     SDL_SUT_OPTIONTYPE_ENUM,
    32     SDL_SUT_OPTIONTYPE_BOOL
    33 } SDLVisualTest_SUTOptionType;
    34 
    35 /**
    36  * Represents the range of values an integer option can take.
    37  */
    38 typedef struct SDLVisualTest_SUTIntRange {
    39     /*! Minimum value of the integer option */
    40     int min;
    41     /*! Maximum value of the integer option */
    42     int max;
    43 } SDLVisualTest_SUTIntRange;
    44 
    45 /**
    46  * Struct that defines an option to be passed to the SUT.
    47  */
    48 typedef struct SDLVisualTest_SUTOption {
    49     /*! The name of the option. This is what you would pass in the command line
    50         along with two leading hyphens. */
    51     char name[MAX_SUTOPTION_NAME_LEN];
    52     /*! An array of categories that the option belongs to. The last element is
    53         NULL. */
    54     char** categories;
    55     /*! Type of the option - integer, boolean, etc. */
    56     SDLVisualTest_SUTOptionType type;
    57     /*! Whether the option is required or not */
    58     SDL_bool required;
    59     /*! extra data that is required for certain types */
    60     union {
    61         /*! This field is valid only for integer type options; it defines the
    62         valid range for such an option */
    63         SDLVisualTest_SUTIntRange range;
    64         /*! This field is valid only for enum type options; it holds the list of values
    65         that the option can take. The last element is NULL */
    66         char** enum_values;
    67     } data;
    68 } SDLVisualTest_SUTOption;
    69 
    70 /**
    71  * Struct to hold all the options to an SUT application.
    72  */
    73 typedef struct SDLVisualTest_SUTConfig
    74 {
    75     /*! Pointer to an array of options */
    76     SDLVisualTest_SUTOption* options;
    77     /*! Number of options in \c options */
    78     int num_options;
    79 } SDLVisualTest_SUTConfig;
    80 
    81 /**
    82  * Parses a configuration file that describes the command line options an SUT
    83  * application will take and populates a SUT config object. All lines in the
    84  * config file must be smaller than 
    85  *
    86  * \param file Path to the configuration file.
    87  * \param config Pointer to an object that represents an SUT configuration.
    88  *
    89  * \return zero on failure, non-zero on success
    90  */
    91 int SDLVisualTest_ParseSUTConfig(char* file, SDLVisualTest_SUTConfig* config);
    92 
    93 /**
    94  * Free any resources associated with the config object pointed to by \c config.
    95  */
    96 void SDLVisualTest_FreeSUTConfig(SDLVisualTest_SUTConfig* config);
    97 
    98 /* Ends C function definitions when using C++ */
    99 #ifdef __cplusplus
   100 }
   101 #endif
   102 
   103 #endif /* _SDL_visualtest_sut_configparser_h */