Due to the lapse in federal government funding, NASA is not updating this website. We sincerely regret this inconvenience.
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