libcfe  0.12.1
some useful C-functions
getparam.c File Reference
#include "config.h"
#include "getparam.h"
#include <stddef.h>
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include <string.h>
#include <libintl.h>
#include "len.h"
#include "char_to_int.h"
#include "char_to_double.h"
Include dependency graph for getparam.c:

Go to the source code of this file.

Data Structures

struct  _typeless
 

Macros

#define UNUSED(x)   (void)(x)
 Used to indicate that a function does not use a certain parameter. More...
 
#define ISVAR(o)   ((o.type & PARAM_ACTION_VAR) == PARAM_ACTION_VAR)
 
#define ISFUNC(o)   ((o.type & PARAM_ACTION_FUNC) == PARAM_ACTION_FUNC)
 
#define CANARG(o)   ((o.type & PARAM_OPTION_ARG_YES) == PARAM_OPTION_ARG_YES)
 
#define MAYARG(o)   ((o.type & PARAM_OPTION_ARG_MAYBE) == PARAM_OPTION_ARG_MAYBE)
 
#define REQUIREARG(o)   (CANARG(o) && !MAYARG(o))
 
#define NOARG(o)   ((o.type & PARAM_OPTION_ARG_YES) == 0)
 
#define TYPEBOOL(o)   ((o.type & PARAM_OPTION_BOOL) == PARAM_OPTION_BOOL)
 
#define TYPEINT(o)   ((o.type & ARG_TYPE_DOUBLE) == ARG_TYPE_INT)
 
#define TYPESTR(o)   ((o.type & ARG_TYPE_DOUBLE) == ARG_TYPE_STR)
 
#define TYPEDOUBLE(o)   ((o.type & ARG_TYPE_DOUBLE) == ARG_TYPE_DOUBLE)
 
#define MIN(a, b)   (a > b ? b : a)
 
#define MAX(a, b)   (a < b ? b : a)
 
#define TYPLESSVAR   struct _typeless
 
#define SETBOOL(var, v)   var.type=1; var.b=(short int)(v);
 
#define SETINT(var, v)   var.type=2; var.i=(long int)(v);
 
#define SETDOUBLE(var, v)   var.type=3; var.d=(long double)(v);
 
#define SETSTR(var, v)   var.type=4; var.s=(char *)(v);
 
#define SETVOID(var, v)   var.type=5; var.s=(void *)(v);
 
#define SETFAILED(var)   var.type=6;
 
#define SETNULL(var)   var.type=0;
 
#define ISNULL(var)   (var.type==0?1:0)
 
#define ISBOOL(var)   (var.type==1?1:0)
 
#define ISINT(var)   (var.type==2?1:0)
 
#define ISDOUBLE(var)   (var.type==3?1:0)
 
#define ISSTR(var)   (var.type==4?1:0)
 
#define ISVOID(var)   (var.type==5?1:0)
 
#define ISFAILED(var)   (var.type==6?1:0)
 
#define GETVAL(var, t)   (var.type==1?(t)var.b:(var.type==2?(t)var.i:(var.type==3?(t)var.d:(var.type==4?(t)var.s:(var.type==5?(t)var.s:(t)NULL)))))
 
#define GETNULL(var)   ((void *)NULL)
 
#define GETBOOL(var)   ((short int)var.b)
 
#define GETINT(var)   ((long int)var.i)
 
#define GETDOUBLE(var)   ((long double)var.d)
 
#define GETSTR(var)   ((char *)var.s)
 
#define GETVOID(var)   ((void *)var.s)
 
#define BIT_SET(b, o)   ((o & b) == b)
 
#define IS_FAIL_ON_UNKNOWN(o)   (BIT_SET(FAIL_ON_UNKNOWN, o))
 
#define ARG(o)   (TYPESTR(o)?arg_str:(TYPEINT(o)?arg_int:(TYPEDOUBLE(o)?arg_double:(TYPEBOOL(o)?arg_bool:""))))
 

Functions

short int check_bool (const char *s, size_t len)
 
short int char_to_bool (const char *s, size_t len)
 
int applyopt (option_t **o_all, option_t o, TYPLESSVAR arg)
 
TYPLESSVAR check_arg (option_t o, void *arg)
 
void print_options_help (option_t *o)
 
void print_options_config (option_t *o)
 
size_t add_config_options (option_t **o_in, option_t add[])
 
int getparam (option_t **o, int argc, char **argv)
 
int readconfig (option_t **o, const char *file, int options)
 

Macro Definition Documentation

◆ ARG

#define ARG (   o)    (TYPESTR(o)?arg_str:(TYPEINT(o)?arg_int:(TYPEDOUBLE(o)?arg_double:(TYPEBOOL(o)?arg_bool:""))))

Definition at line 69 of file getparam.c.

◆ BIT_SET

#define BIT_SET (   b,
 
)    ((o & b) == b)

Definition at line 67 of file getparam.c.

◆ CANARG

#define CANARG (   o)    ((o.type & PARAM_OPTION_ARG_YES) == PARAM_OPTION_ARG_YES)

Definition at line 19 of file getparam.c.

◆ GETBOOL

#define GETBOOL (   var)    ((short int)var.b)

Definition at line 61 of file getparam.c.

◆ GETDOUBLE

#define GETDOUBLE (   var)    ((long double)var.d)

Definition at line 63 of file getparam.c.

◆ GETINT

#define GETINT (   var)    ((long int)var.i)

Definition at line 62 of file getparam.c.

◆ GETNULL

#define GETNULL (   var)    ((void *)NULL)

Definition at line 60 of file getparam.c.

◆ GETSTR

#define GETSTR (   var)    ((char *)var.s)

Definition at line 64 of file getparam.c.

◆ GETVAL

#define GETVAL (   var,
 
)    (var.type==1?(t)var.b:(var.type==2?(t)var.i:(var.type==3?(t)var.d:(var.type==4?(t)var.s:(var.type==5?(t)var.s:(t)NULL)))))

Definition at line 59 of file getparam.c.

◆ GETVOID

#define GETVOID (   var)    ((void *)var.s)

Definition at line 65 of file getparam.c.

◆ IS_FAIL_ON_UNKNOWN

#define IS_FAIL_ON_UNKNOWN (   o)    (BIT_SET(FAIL_ON_UNKNOWN, o))

Definition at line 68 of file getparam.c.

◆ ISBOOL

#define ISBOOL (   var)    (var.type==1?1:0)

Definition at line 53 of file getparam.c.

◆ ISDOUBLE

#define ISDOUBLE (   var)    (var.type==3?1:0)

Definition at line 55 of file getparam.c.

◆ ISFAILED

#define ISFAILED (   var)    (var.type==6?1:0)

Definition at line 58 of file getparam.c.

◆ ISFUNC

#define ISFUNC (   o)    ((o.type & PARAM_ACTION_FUNC) == PARAM_ACTION_FUNC)

Definition at line 18 of file getparam.c.

◆ ISINT

#define ISINT (   var)    (var.type==2?1:0)

Definition at line 54 of file getparam.c.

◆ ISNULL

#define ISNULL (   var)    (var.type==0?1:0)

Definition at line 52 of file getparam.c.

◆ ISSTR

#define ISSTR (   var)    (var.type==4?1:0)

Definition at line 56 of file getparam.c.

◆ ISVAR

#define ISVAR (   o)    ((o.type & PARAM_ACTION_VAR) == PARAM_ACTION_VAR)

Definition at line 17 of file getparam.c.

◆ ISVOID

#define ISVOID (   var)    (var.type==5?1:0)

Definition at line 57 of file getparam.c.

◆ MAX

#define MAX (   a,
 
)    (a < b ? b : a)

Definition at line 32 of file getparam.c.

◆ MAYARG

#define MAYARG (   o)    ((o.type & PARAM_OPTION_ARG_MAYBE) == PARAM_OPTION_ARG_MAYBE)

Definition at line 20 of file getparam.c.

◆ MIN

#define MIN (   a,
 
)    (a > b ? b : a)

Definition at line 29 of file getparam.c.

◆ NOARG

#define NOARG (   o)    ((o.type & PARAM_OPTION_ARG_YES) == 0)

Definition at line 22 of file getparam.c.

◆ REQUIREARG

#define REQUIREARG (   o)    (CANARG(o) && !MAYARG(o))

Definition at line 21 of file getparam.c.

◆ SETBOOL

#define SETBOOL (   var,
 
)    var.type=1; var.b=(short int)(v);

Definition at line 45 of file getparam.c.

◆ SETDOUBLE

#define SETDOUBLE (   var,
 
)    var.type=3; var.d=(long double)(v);

Definition at line 47 of file getparam.c.

◆ SETFAILED

#define SETFAILED (   var)    var.type=6;

Definition at line 50 of file getparam.c.

◆ SETINT

#define SETINT (   var,
 
)    var.type=2; var.i=(long int)(v);

Definition at line 46 of file getparam.c.

◆ SETNULL

#define SETNULL (   var)    var.type=0;

Definition at line 51 of file getparam.c.

◆ SETSTR

#define SETSTR (   var,
 
)    var.type=4; var.s=(char *)(v);

Definition at line 48 of file getparam.c.

◆ SETVOID

#define SETVOID (   var,
 
)    var.type=5; var.s=(void *)(v);

Definition at line 49 of file getparam.c.

◆ TYPEBOOL

#define TYPEBOOL (   o)    ((o.type & PARAM_OPTION_BOOL) == PARAM_OPTION_BOOL)

Definition at line 23 of file getparam.c.

◆ TYPEDOUBLE

#define TYPEDOUBLE (   o)    ((o.type & ARG_TYPE_DOUBLE) == ARG_TYPE_DOUBLE)

Definition at line 26 of file getparam.c.

◆ TYPEINT

#define TYPEINT (   o)    ((o.type & ARG_TYPE_DOUBLE) == ARG_TYPE_INT)

Definition at line 24 of file getparam.c.

◆ TYPESTR

#define TYPESTR (   o)    ((o.type & ARG_TYPE_DOUBLE) == ARG_TYPE_STR)

Definition at line 25 of file getparam.c.

◆ TYPLESSVAR

#define TYPLESSVAR   struct _typeless

Definition at line 44 of file getparam.c.

◆ UNUSED

#define UNUSED (   x)    (void)(x)

Used to indicate that a function does not use a certain parameter.

Definition at line 15 of file getparam.c.

Function Documentation

◆ add_config_options()

size_t add_config_options ( option_t **  o_in,
option_t  add[] 
)

Definition at line 126 of file getparam.c.

◆ applyopt()

int applyopt ( option_t **  o_all,
option_t  o,
TYPLESSVAR  arg 
)

Definition at line 161 of file getparam.c.

Here is the caller graph for this function:

◆ char_to_bool()

short int char_to_bool ( const char *  s,
size_t  len 
)

Definition at line 151 of file getparam.c.

Here is the caller graph for this function:

◆ check_arg()

TYPLESSVAR check_arg ( option_t  o,
void *  arg 
)

Definition at line 195 of file getparam.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ check_bool()

short int check_bool ( const char *  s,
size_t  len 
)

Definition at line 142 of file getparam.c.

Here is the caller graph for this function:

◆ getparam()

int getparam ( option_t **  o,
int  argc,
char **  argv 
)

Definition at line 243 of file getparam.c.

Here is the call graph for this function:

◆ print_options_config()

void print_options_config ( option_t o)

Definition at line 104 of file getparam.c.

◆ print_options_help()

void print_options_help ( option_t o)

Definition at line 76 of file getparam.c.

◆ readconfig()

int readconfig ( option_t **  o,
const char *  file,
int  options 
)

Definition at line 395 of file getparam.c.

Here is the call graph for this function: