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__)
185typedef enum tagUserVarCategory {
201typedef 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.