• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 */
104