NASA Logo
Ocean Color Science Software

ocssw V2022
clo.h
Go to the documentation of this file.
1 #ifndef CLO_H
2 #define CLO_H
3 
4 #include <stdio.h>
5 #include <inttypes.h>
6 
7 #ifdef __cplusplus
8 extern "C" {
9 #endif
10 
11 
69 #define CLO_CHUNK_SIZE 32
70 
72 #define CLO_ARRAY_DELIMITER " \t,:[]()\""
73 
74 // Define a silly string max length
75 #define SILLYSTRING 4096
76 
91 };
92 
93 // forward reference for option structure
94 struct clo_option_t;
95 
101 typedef void (*clo_optionCallback_t)(struct clo_option_t *option);
102 
106 typedef struct clo_option_t {
107  char *key;
109  char *defaultVal;
110  char *desc;
111  char *valStr;
112  char *source;
114  void *cb_data;
115  int cb_flag;
116  char **strArray;
117  void *valArray;
118  int count;
119  char **aliases;
122  int position;
123 } clo_option_t;
124 
126 typedef struct clo_optionList_t {
135 
137 typedef struct clo_programMetadata_t {
138  char* tag;
139  char* value;
141 
148 
149 // global library settings
150 void clo_setIgnoreKeyCase(int val);
152 
153 void clo_setEnableDumpOptions(int val);
155 
158 
159 void clo_setVersion(const char *str);
160 void clo_setVersion2(const char* programName, const char* versionStr);
161 char* clo_getVersion();
162 
163 void clo_setHelpStr(const char *str);
164 char* clo_getHelpStr();
165 
166 void clo_setSelectOptionKeys(char *keys[]);
167 char **clo_getSelectOptionKeys();
168 
170 
171 clo_option_t* clo_createOption(const char *key, enum clo_dataType_t dataType,
172  const char *defaultVal, const char *desc);
173 void clo_addOptionAlias(clo_option_t *option, const char* alias);
174 void clo_addAlias(clo_optionList_t *list, const char *key, const char* alias);
177  enum clo_dataType_t dataType, const char *defaultVal,
178  const char* desc);
181 void clo_deleteOption(clo_option_t *option);
186 char* clo_getOptionRawString(clo_option_t *option);
187 
188 char* clo_getOptionString(clo_option_t *option);
189 int clo_getOptionBool(clo_option_t *option);
190 int clo_getOptionInt(clo_option_t *option);
191 int64_t clo_getOptionInt64(clo_option_t *option);
192 float clo_getOptionFloat(clo_option_t *option);
193 double clo_getOptionDouble(clo_option_t *option);
194 
195 char** clo_getOptionStrings(clo_option_t *option, int *count);
196 int* clo_getOptionBools(clo_option_t *option, int *count);
197 int* clo_getOptionInts(clo_option_t *option, int *count);
198 float* clo_getOptionFloats(clo_option_t *option, int *count);
199 double* clo_getOptionDoubles(clo_option_t *option, int *count);
200 
201 char* clo_getRawString(clo_optionList_t *list, const char *key);
202 char* clo_getString(clo_optionList_t *list, const char *key);
203 int clo_getBool(clo_optionList_t *list, const char *key);
204 int clo_getInt(clo_optionList_t *list, const char *key);
205 float clo_getFloat(clo_optionList_t *list, const char *key);
206 double clo_getDouble(clo_optionList_t *list, const char *key);
207 
208 char** clo_getStrings(clo_optionList_t *list, const char *key, int *count);
209 int* clo_getBools(clo_optionList_t *list, const char *key, int *count);
210 int* clo_getInts(clo_optionList_t *list, const char *key, int *count);
211 float* clo_getFloats(clo_optionList_t *list, const char *key, int *count);
212 double* clo_getDoubles(clo_optionList_t *list, const char *key, int *count);
213 
214 int clo_setOptionString(clo_option_t *option, const char *val, const char *source);
215 int clo_setString(clo_optionList_t *list, const char* key, const char *val, const char *source);
216 
217 // position option functions
223 
224 void clo_setEnableParOption(int val);
226 
227 void clo_printOptionVal(clo_option_t *option);
229 void clo_printOption(clo_option_t *option);
231 void clo_dumpOption(clo_option_t *option);
233 void clo_printVersion();
234 void clo_printHelpString();
236 
237 void clo_readString(clo_optionList_t *list, const char *str, const char *source);
238 void clo_readArgs(clo_optionList_t *list, int argc, char *argv[]);
239 void clo_readArgsPar(clo_optionList_t *list, int argc, char *argv[], int enableFileDescending);
241 void clo_readFile(clo_optionList_t *list, const char *fileName);
242 
243 int clo_isOptionSet(clo_option_t *option);
244 int clo_isSet(clo_optionList_t *list, const char *key);
245 
247 
248 void clo_addXmlProgramMetadata(const char* tag, const char* value);
250 
251 void clo_writeXmlStartTag(FILE *fout, int level, const char *tag);
252 void clo_writeXmlEndTag(FILE *fout, int level, const char *tag);
253 void clo_writeXmlTag(FILE *fout, int level, const char *tag, const char *value);
255 
256 void clo_trimDashes(char* str);
257 char* clo_trimDashesDup(const char* str);
258 
259 //void clo_resetFileRecursion();
260 
261 
262 #ifdef __cplusplus
263 }
264 #endif
265 
266 #endif
float clo_getFloat(clo_optionList_t *list, const char *key)
Definition: clo.c:1429
void clo_printOptions(clo_optionList_t *list)
Definition: clo.c:1931
float * clo_getOptionFloats(clo_option_t *option, int *count)
Definition: clo.c:1295
void clo_setIgnoreKeyCase(int val)
Definition: clo.c:389
char ** clo_getStrings(clo_optionList_t *list, const char *key, int *count)
Definition: clo.c:1469
int32 value
Definition: Granule.c:1235
clo_option_t * clo_copyOption(clo_option_t *option)
Definition: clo.c:741
clo_optionList_t * clo_createList()
Definition: clo.c:532
char * defaultVal
Definition: clo.h:109
float * clo_getFloats(clo_optionList_t *list, const char *key, int *count)
Definition: clo.c:1538
void clo_setEnableParOption(int val)
Definition: clo.c:1738
int position
Definition: clo.h:122
void(* clo_optionCallback_t)(struct clo_option_t *option)
Definition: clo.h:101
int storageSize
Definition: clo.h:127
double clo_getDouble(clo_optionList_t *list, const char *key)
Definition: clo.c:1447
@ CLO_TYPE_POSITION
Definition: clo.h:90
double clo_getOptionDouble(clo_option_t *option)
Definition: clo.c:1195
void clo_deleteList(clo_optionList_t *list)
Definition: clo.c:875
int positionStorageSize
Definition: clo.h:131
clo_optionList_t * clo_copyList(clo_optionList_t *list)
Definition: clo.c:799
void clo_writeXmlTag(FILE *fout, int level, const char *tag, const char *value)
Definition: clo.c:2410
@ CLO_TYPE_DOUBLE
Definition: clo.h:85
char * key
Definition: clo.h:107
int * clo_getOptionBools(clo_option_t *option, int *count)
Definition: clo.c:1251
void clo_printUsage(clo_optionList_t *list)
Definition: clo.c:1988
void clo_printOptionVal(clo_option_t *option)
Definition: clo.c:1756
int clo_writeXmlFile(clo_optionList_t *list, const char *filename)
Definition: clo.c:2568
int * clo_getInts(clo_optionList_t *list, const char *key, int *count)
Definition: clo.c:1515
int numAliases
Definition: clo.h:120
void clo_clearXmlProgramMetadata()
Definition: clo.c:2361
float32 * pos
Definition: l1_czcs_hdf.c:35
char * clo_trimDashesDup(const char *str)
Definition: clo.c:954
int64_t clo_getOptionInt64(clo_option_t *option)
Definition: clo.c:1140
double * clo_getOptionDoubles(clo_option_t *option, int *count)
Definition: clo.c:1317
void clo_setVersion(const char *str)
Definition: clo.c:448
char * clo_getOptionRawString(clo_option_t *option)
Definition: clo.c:1030
@ CLO_TYPE_FLOAT
Definition: clo.h:84
clo_option_t * clo_createOption(const char *key, enum clo_dataType_t dataType, const char *defaultVal, const char *desc)
Definition: clo.c:585
int clo_isOptionSet(clo_option_t *option)
Definition: clo.c:2257
char ** aliases
Definition: clo.h:119
void clo_setSelectOptionKeys(char *keys[])
int aliasStorageSize
Definition: clo.h:121
clo_option_t * clo_findOption(clo_optionList_t *list, const char *key)
Definition: clo.c:967
void clo_readFile(clo_optionList_t *list, const char *fileName)
Definition: clo.c:2210
int * clo_getBools(clo_optionList_t *list, const char *key, int *count)
Definition: clo.c:1492
void clo_addAlias(clo_optionList_t *list, const char *key, const char *alias)
Definition: clo.c:646
void clo_trimDashes(char *str)
Definition: clo.c:918
char * clo_getRawString(clo_optionList_t *list, const char *key)
Definition: clo.c:1339
void clo_printVersion()
Definition: clo.c:1968
@ CLO_TYPE_BOOL
Definition: clo.h:81
char ** strArray
Definition: clo.h:116
void clo_readArgsPar(clo_optionList_t *list, int argc, char *argv[], int enableFileDescending)
Definition: clo.c:2119
void clo_dumpOptions(clo_optionList_t *list)
Definition: clo.c:1999
void clo_printHelpString()
Definition: clo.c:1978
char * clo_getString(clo_optionList_t *list, const char *key)
Definition: clo.c:1357
char * clo_getHelpStr()
Definition: clo.c:501
@ CLO_TYPE_INT64
Definition: clo.h:83
clo_programMetadata_t ** entries
Definition: clo.h:146
void clo_deleteOption(clo_option_t *option)
Definition: clo.c:823
int clo_getEnableParOption()
Definition: clo.c:1747
int clo_getEnableDumpOptions()
Definition: clo.c:419
clo_optionCallback_t cb
Definition: clo.h:113
int clo_getBool(clo_optionList_t *list, const char *key)
Definition: clo.c:1375
int clo_getInt(clo_optionList_t *list, const char *key)
Definition: clo.c:1393
void clo_readOptions(clo_optionList_t *list, clo_optionList_t *readList)
Definition: clo.c:2173
list(APPEND LIBS ${NETCDF_LIBRARIES}) find_package(GSL REQUIRED) include_directories($
Definition: CMakeLists.txt:8
clo_option_t ** options
Definition: clo.h:129
char * valStr
Definition: clo.h:111
@ CLO_TYPE_INT
Definition: clo.h:82
char ** clo_getOptionStrings(clo_option_t *option, int *count)
Definition: clo.c:1226
void clo_dumpOption(clo_option_t *option)
Definition: clo.c:1896
void clo_setEnableDumpOptions(int val)
Definition: clo.c:410
@ CLO_TYPE_IFILE
Definition: clo.h:87
char filename[FILENAME_MAX]
Definition: atrem_corl1.h:122
void clo_printVals(clo_optionList_t *list)
Definition: clo.c:1845
@ CLO_TYPE_OFILE
Definition: clo.h:88
char ** clo_getSelectOptionKeys()
Definition: clo.c:523
int clo_getEnableExtraOptions()
Definition: clo.c:439
char * clo_getOptionString(clo_option_t *option)
Definition: clo.c:1050
double * clo_getDoubles(clo_optionList_t *list, const char *key, int *count)
Definition: clo.c:1561
int * clo_getOptionInts(clo_option_t *option, int *count)
Definition: clo.c:1273
void clo_setVersion2(const char *programName, const char *versionStr)
Definition: clo.c:464
void clo_insertOption(clo_optionList_t *list, clo_option_t *option)
Definition: clo.c:666
int clo_getPositionNumOptions(clo_optionList_t *list)
Definition: clo.c:1704
int count
Definition: clo.h:118
@ CLO_TYPE_HELP
Definition: clo.h:89
level
Definition: mapgen.py:188
char * desc
Definition: clo.h:110
void clo_writeXmlEndTag(FILE *fout, int level, const char *tag)
Definition: clo.c:2395
void * valArray
Definition: clo.h:117
int clo_getNumOptions(clo_optionList_t *list)
Definition: clo.c:1017
int numOptions
Definition: clo.h:128
void clo_addXmlProgramMetadata(const char *tag, const char *value)
Definition: clo.c:2345
int cb_flag
Definition: clo.h:115
void clo_readString(clo_optionList_t *list, const char *str, const char *source)
Definition: clo.c:2019
void clo_setEnableExtraOptions(int val)
Definition: clo.c:429
int clo_setString(clo_optionList_t *list, const char *key, const char *val, const char *source)
Definition: clo.c:1667
int clo_writeParameterFile(clo_optionList_t *list, const char *filename)
Definition: clo.c:2287
int clo_getOptionBool(clo_option_t *option)
Definition: clo.c:1087
void clo_printOption(clo_option_t *option)
Definition: clo.c:1865
int clo_getEnablePositionOptions()
Definition: clo.c:1695
int positionNumOptions
Definition: clo.h:132
clo_option_t * clo_getOption(clo_optionList_t *list, int i)
Definition: clo.c:908
char * source
Definition: clo.h:112
void * cb_data
Definition: clo.h:114
char * clo_getPositionString(clo_optionList_t *list, int pos)
Definition: clo.c:1723
clo_option_t * clo_getPositionOption(clo_optionList_t *list, int i)
Definition: clo.c:1716
void clo_readArgs(clo_optionList_t *list, int argc, char *argv[])
Definition: clo.c:2103
clo_option_t * clo_addOption(clo_optionList_t *list, const char *key, enum clo_dataType_t dataType, const char *defaultVal, const char *desc)
Definition: clo.c:684
enum clo_dataType_t dataType
Definition: clo.h:108
clo_option_t ** positionOptions
Definition: clo.h:133
float clo_getOptionFloat(clo_option_t *option)
Definition: clo.c:1167
clo_dataType_t
Definition: clo.h:80
char * clo_getVersion()
Definition: clo.c:478
int i
Definition: decode_rs.h:71
int clo_isSet(clo_optionList_t *list, const char *key)
Definition: clo.c:2270
@ CLO_TYPE_STRING
Definition: clo.h:86
int clo_getIgnoreKeyCase()
Definition: clo.c:401
void clo_setEnablePositionOptions(int val)
Definition: clo.c:1685
int clo_getOptionInt(clo_option_t *option)
Definition: clo.c:1113
Definition: aerosol.c:136
void clo_addOptionAlias(clo_option_t *option, const char *alias)
Definition: clo.c:632
int clo_setOptionString(clo_option_t *option, const char *val, const char *source)
Definition: clo.c:1579
void clo_writeXmlStartTag(FILE *fout, int level, const char *tag)
Definition: clo.c:2381
void clo_setHelpStr(const char *str)
Definition: clo.c:487
int count
Definition: decode_rs.h:79