File: args.h

package info (click to toggle)
paraview 4.0.1-1~bpo70%2B1
  • links: PTS, VCS
  • area: main
  • in suites: wheezy-backports
  • size: 526,572 kB
  • sloc: cpp: 2,284,430; ansic: 816,374; python: 239,936; xml: 70,162; tcl: 48,295; fortran: 39,116; yacc: 5,466; java: 3,518; perl: 3,107; lex: 1,620; sh: 1,555; makefile: 932; asm: 471; pascal: 228
file content (80 lines) | stat: -rw-r--r-- 2,440 bytes parent folder | download | duplicates (10)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
/* utilities for args parsing */
#ifndef args_h
#define args_h
#ifdef __cplusplus
extern "C" {
#endif
#ifdef _NEVER
} // to make emacs happy
#endif 
#include <stdlib.h>

/* 
   example how to use (typical usage): 
   
   long useX=0, verbosity=0; 
   double cruftLevel=0.5;
   char inputfile[1024] = "defaultvalue"; 
   double location[3] = {0}; 
   char **unparsed_args = NULL; 

   argt args[5] = {
   {BOOL_TYPE, "-useX", 1, &useX}, 
   {LONG_TYPE, "-verbosity", 1, &verbosity}, 
   {DOUBLE_TYPE, "-cruftiness", 1, &cruftLevel}, 
   {FLOAT_TYPE, "-loc", 3, location}, <------- note no ampersand (reference)
   {STRING_TYPE, "-in", 1024, inputfile} <------- note no ampersand (reference)
   }
   arg_expect_args(args, 5);
   arg_ignore_bad_args(1); <---- you probably want this on
   arg_parse_args(-1, argv, 1, &unparsed_args);  <-----typical usage: parse all args starting from argv[1]
   ---  OR: ----
   arg_parse_args(-1, argv, 1, NULL);  <-----if you don't care about unparsed args
*/
   
typedef long args_bool_t; 
typedef int args_int_t; 
typedef long args_long_t; 
typedef double args_double_t;
typedef char *args_string_t; 

typedef enum {
  BOOL_TYPE,   /* must be type long**/
  INT_TYPE, /*must be type int*  */ 
  LONG_TYPE,   /* must be type long* */
  LONG_ARRAY_TYPE,   /* DEPRECATED -- same as LONG_TYPE must be type long* */
  FLOAT_TYPE, /* must be type float* */
  FLOAT_ARRAY_TYPE,   /* DEPRECATED -- same as FLOAT_TYPE must be type float* */
  DOUBLE_TYPE, /* must be type double* */
  DOUBLE_ARRAY_TYPE,   /* DEPRECATED -- same as DOUBLE_TYPE must be type double* */
  STRING_TYPE  /* must be type (char *) */
} argtype;

typedef struct argt {
  argtype _type;
  char _flag[64];
  int _numvals; /* for arrays of values */
  void *_values; /* see enum for actual type */ 
} argt;


void debug_args(int iYesNo ); /* debugging unexpected behaviors parse_args */
void print_args(int argc, char *argv[] );
void arg_expect_args(argt args[], int numargs);
void arg_ignore_bad_args(int iYesNo);


/*!
  arg_parse_args
   return 0 on error, 1 if everything's OK.  
   parse argv, looking for flags set using arg_expect_args, starting at argv[1].
   Continue until no more valid args are found.  
   Removes all parsed args and options from argv and decrements numargs approprately.  Bad args are ignored, unless gIgnoreBadArgs is false; 
*/
int arg_parse_args(int *argc, char *argv[]);
#ifdef __cplusplus
}
#endif

#endif