30 #include <lal/ConfigFile.h>
31 #include <lal/UserInputParse.h>
32 #include <lal/LALVCSInfoType.h>
157 #define XLALRegisterUvarMember(name,type,option,category,...) \
158 XLALRegister ##type## UserVar( &(uvar-> name), NULL, #name, option, UVAR_CATEGORY_ ## category, __VA_ARGS__)
164 #define XLALRegisterUvarAuxDataMember(name,type,cdata,option,category,...) \
165 XLALRegister ##type## UserVar( &(uvar-> name), cdata, #name, option, UVAR_CATEGORY_ ## category, __VA_ARGS__)
171 #define XLALRegisterNamedUvar(cvar,name,type,option,category,...) \
172 XLALRegister ##type## UserVar( cvar, NULL, name, option, UVAR_CATEGORY_ ## category, __VA_ARGS__)
179 #define XLALRegisterNamedUvarAuxData(cvar,name,type,cdata,option,category,...) \
180 XLALRegister ##type## UserVar( cvar, cdata, name, option, UVAR_CATEGORY_ ## category, __VA_ARGS__)
185 typedef enum tagUserVarCategory {
201 typedef enum tagUserVarLogFormat {
230 #define UVAR_SET(n) (XLALUserVarWasSet(&(uvar-> n)) ? 1 : 0)
231 #define UVAR_SET2(n1,n2) (UVAR_SET(n1) + UVAR_SET(n2))
232 #define UVAR_SET3(n1,n2,n3) (UVAR_SET2(n1,n2) + UVAR_SET(n3))
233 #define UVAR_SET4(n1,n2,n3,n4) (UVAR_SET3(n1,n2,n3) + UVAR_SET(n4))
234 #define UVAR_SET5(n1,n2,n3,n4,n5) (UVAR_SET4(n1,n2,n3,n4) + UVAR_SET(n5))
235 #define UVAR_SET6(n1,n2,n3,n4,n5,n6) (UVAR_SET5(n1,n2,n3,n4,n5) + UVAR_SET(n6))
242 #define UVAR_ALLSET2(n1,n2) (UVAR_SET2(n1,n2) == 2)
243 #define UVAR_ALLSET3(n1,n2,n3) (UVAR_SET3(n1,n2,n3) == 3)
244 #define UVAR_ALLSET4(n1,n2,n3,n4) (UVAR_SET4(n1,n2,n3,n4) == 4)
245 #define UVAR_ALLSET5(n1,n2,n3,n4,n5) (UVAR_SET5(n1,n2,n3,n4,n5) == 5)
246 #define UVAR_ALLSET6(n1,n2,n3,n4,n5,n6) (UVAR_SET6(n1,n2,n3,n4,n5,n6) == 6)
253 #define UVAR_ANYSET2(n1,n2) (UVAR_SET2(n1,n2) > 0)
254 #define UVAR_ANYSET3(n1,n2,n3) (UVAR_SET3(n1,n2,n3) > 0)
255 #define UVAR_ANYSET4(n1,n2,n3,n4) (UVAR_SET4(n1,n2,n3,n4) > 0)
256 #define UVAR_ANYSET5(n1,n2,n3,n4,n5) (UVAR_SET5(n1,n2,n3,n4,n5) > 0)
257 #define UVAR_ANYSET6(n1,n2,n3,n4,n5,n6) (UVAR_SET6(n1,n2,n3,n4,n5,n6) > 0)
264 #define UVAR_FMT "`--%s'"
265 #define UVAR_STR(n) "`--"#n"'"
266 #define UVAR_STR2AND(n1,n2) "`--"#n1"' and `--"#n2"'"
267 #define UVAR_STR2OR(n1,n2) "`--"#n1"' or `--"#n2"'"
268 #define UVAR_STR3AND(n1,n2,n3) "`--"#n1"', `--"#n2"', and `--"#n3"'"
269 #define UVAR_STR3OR(n1,n2,n3) "`--"#n1"', `--"#n2"', or `--"#n3"'"
270 #define UVAR_STR4AND(n1,n2,n3,n4) "`--"#n1"', `--"#n2"', `--"#n3"', and `--"#n4"'"
271 #define UVAR_STR4OR(n1,n2,n3,n4) "`--"#n1"', `--"#n2"', `--"#n3"', or `--"#n4"'"
272 #define UVAR_STR5AND(n1,n2,n3,n4,n5) "`--"#n1"', `--"#n2"', `--"#n3"', `--"#n4"', and `--"#n5"'"
273 #define UVAR_STR5OR(n1,n2,n3,n4,n5) "`--"#n1"', `--"#n2"', `--"#n3"', `--"#n4"', or `--"#n5"'"
274 #define UVAR_STR6AND(n1,n2,n3,n4,n5,n6) "`--"#n1"', `--"#n2"', `--"#n3"', `--"#n4"', `--"#n5"', and `--"#n6"'"
275 #define UVAR_STR6OR(n1,n2,n3,n4,n5,n6) "`--"#n1"', `--"#n2"', `--"#n3"', `--"#n4"', `--"#n5"', or `--"#n6"'"
279 #define DECL_REGISTER_UVAR(UTYPE,CTYPE) \
280 DECL_REGISTER_UVAR_AUX_DATA(UTYPE,CTYPE,void)
281 #define DECL_REGISTER_UVAR_AUX_DATA(UTYPE,CTYPE,DTYPE) \
282 int XLALRegister ##UTYPE## UserVar ( CTYPE *cvar, const DTYPE *cdata, const CHAR *name, CHAR optchar, UserVarCategory category, const CHAR *fmt, ... ) _LAL_GCC_PRINTF_FORMAT_(6,7)
#define _LAL_GCC_PRINTF_FORMAT_(NFMT, NARG)
unsigned char BOOLEAN
Boolean logical type, see Headers LAL(Atomic)Datatypes.h for more details.
uint64_t UINT8
Eight-byte unsigned integer; on some platforms this is equivalent to unsigned long int instead.
double REAL8
Double precision real floating-point number (8 bytes).
int64_t INT8
Eight-byte signed integer; on some platforms this is equivalent to long int instead.
char CHAR
One-byte signed integer, see Headers LAL(Atomic)Datatypes.h for more details.
uint32_t UINT4
Four-byte unsigned integer.
int32_t INT4
Four-byte signed integer.
const LALVCSInfo *const LALVCSInfoList[16]
NULL-terminated list of VCS and build information structures
Vector of type INT4, see DATATYPE-Vector types for more details.
Vector of type CHAR*, ie 'strings', see DATATYPE-Vector types for more details.
Epoch relative to GPS epoch, see LIGOTimeGPS type for more details.
Vector of type REAL8, see DATATYPE-Vector types for more details.
Vector of type UINT4, see DATATYPE-Vector types for more details.
Possible choices the user may select for an enumeration or bitflag.