File: z_args.h

package info (click to toggle)
glhack 1.2-1
  • links: PTS
  • area: main
  • in suites: squeeze, wheezy
  • size: 24,604 kB
  • ctags: 18,992
  • sloc: ansic: 208,570; cpp: 13,139; yacc: 2,005; makefile: 1,161; lex: 377; sh: 321; awk: 89; sed: 11
file content (91 lines) | stat: -rw-r--r-- 3,233 bytes parent folder | download | duplicates (6)
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
81
82
83
84
85
86
87
88
89
90
91
//----------------------------------------------------------------------------
//  ARGS : command line arguments
//----------------------------------------------------------------------------
//
//  Z C++ Lib (C) 2001-2002 Andrew Apted
//
//  This program is free software; you can redistribute it and/or
//  modify it under the terms of the GNU General Public License
//  as published by the Free Software Foundation; either version 2
//  of the License, or (at your option) any later version.
//
//  This program is distributed in the hope that it will be useful,
//  but WITHOUT ANY WARRANTY; without even the implied warranty of
//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
//  GNU General Public License for more details.
//
//------------------------------------------------------------------------

#ifndef __Z_ARGS_H__
#define __Z_ARGS_H__

#include <string>
#include <vector>


namespace Z_Args
{
  /* ---- setup routines ---- */
  
  void Add(const char *name);
  void Add(const string& name);
  // add a single argument.  Names that start with `-' (or `/' in
  // Win32) will be treated as switches/options.

  void AddMany(int argc, const char **argv);
  // add a bunch of arguments, typically from the main() function.
  // Should not include the program's name.

  /* ---- normal query routines ---- */
   
  int Size();
  // get number of arguments

  string At(int index);
  // query the argument at the given index (0 to Size()-1).
   
  bool IsOption(int index);
  // returns true if the specified argument is an option or switch
  // (i.e. starts with `-' or (for Win32) '/').  Typically used to
  // find the filename(s) that occur before the options start.
   
  bool FindFwd(const string& opt_str, int *index = 0, int start = 0);
  // looks for the option string in the set of options.  If it exists,
  // sets `index' and returns true, otherwise returns false (and
  // `index' is unchanged).  Searching occurs fowards.  The start
  // position can be specified.  The option string should not include
  // any initial `-' or `/' chars.  The index pointer can be zero.
   
  string CheckOption(const string& opt_str);
  // if the given option exists in the arguments, then return the
  // following argument (the value of the option).  Returns the
  // empty string if the option doesn't exist or the next argument
  // wasn't valid.  The option string should not include any initial
  // `-' or `/' chars.
   
  void CheckSwitch(const string& switch_str, bool *var, 
      bool reverse = false);
  // if the given switch exists in the arguments, the boolean
  // variable is set to true.  If the user added a "no" prefix, the
  // variable is set to false instead.  The `reverse' flag can
  // negate the result, in case the variable name is opposite to what
  // the argument name suggests.  The switch string should not include
  // any initial `-' or `/' chars.

  /* ---- test/debug routines ---- */
   
  void TestShow();
  // print to stdout the current set of arguments.

  void TestFind();
  // check option finding routines, using "-test1 XXX" option and
  // "-test2" switch.
}

inline void Z_Args::Add(const string& name)
{ 
  Add(name.c_str()); 
}


#endif  /* __Z_ARGS_H__ */