OpendTect  6.3
commandlineparser.h
Go to the documentation of this file.
1 #pragma once
2 
3 /*+
4 ________________________________________________________________________
5 
6  (C) dGB Beheer B.V.; (LICENSE) http://opendtect.org/OpendTect_license.txt
7  Author: K. Tingdahl
8  Date: March 2013
9 ________________________________________________________________________
10 
11 
12 
13 -*/
14 
15 #include "genc.h"
16 #include "bufstringset.h"
17 #include "typeset.h"
18 #include "debug.h" // easier for test programs, declares od_init_test_program
19 
50 {
51 public:
52  CommandLineParser(const char*);
53  CommandLineParser(int argc,char** argv);
54  CommandLineParser();
58  void setKeyHasValue(const char* key,int nrvals=1);
64  void getNormalArguments(BufferStringSet&) const;
68  bool hasKey(const char*) const;
69  bool getVal(const char* key,BufferString&,
70  bool acceptnone=false,int valnr=1) const;
71  template <class T> bool getVal(const char* key,T&,
72  bool acceptnone=false,int valnr=1) const;
78  bool isPresent(const char*) const;
80 
81  int nrArgs() const { return argv_.size(); }
85  bool isKey(int) const;
87  bool isKeyValue(int idx) const;
91  const OD::String& getArg(int idx) const { return *argv_[idx]; }
92  const OD::String& lastArg() const;
93 
94  const OD::String& getExecutable() const;
95  const OD::String& getExecutableName() const;
96 
97  static void createKey(const char* key,BufferString& res)
98  { res = "--"; res += key; }
99  static void addKey(const char* key,BufferString& cmd,
100  const char* valstr=0);
102  static void addFilePath(const char*,BufferString& cmd);
107 private:
108 
109  int indexOf(const char*) const;
110  void init(int,char**);
111  void init(const char*);
112 
116 
119 };
120 
121 //Implementation
122 
123 template <class T> inline
124 bool CommandLineParser::getVal( const char* key, T& val,
125  bool acceptnone, int valnr ) const
126 {
127  const int keyidx = indexOf( key );
128  if ( keyidx<0 )
129  return acceptnone;
130 
131  const int validx = keyidx + mMAX(valnr,1);
132  if ( !argv_.validIdx( validx ) || isKey(validx) )
133  return false;
134 
135  return getFromString( val, argv_[validx]->buf(), mUdf(T) );
136 }
#define mExpClass(module)
Definition: commondefs.h:157
bool getFromString(int &, const char *, int udfval)
static void createKey(const char *key, BufferString &res)
Definition: commandlineparser.h:97
bool init()
BufferStringSet keyswithvalue_
Definition: commandlineparser.h:117
BufferString executable_
Definition: commandlineparser.h:114
Set of BufferString objects.
Definition: bufstringset.h:25
ObjectSet< T >::size_type indexOf(const ObjectSet< T > &os, const S &val)
Locate object in set.
Definition: objectset.h:173
int indexOf(const char *) const
Definition: commandlineparser.h:49
TypeSet< int > nrvalues_
Definition: commandlineparser.h:118
bool isKey(int) const
Does the arg start with - or –.
#define mUdf(type)
Use this macro to get the undefined for simple types.
Definition: undefval.h:270
encapsulates the read-access-only part of strings in OD.
Definition: odstring.h:29
bool validIdx(size_type i) const
Definition: bufstringset.h:39
const OD::String & getArg(int idx) const
Definition: commandlineparser.h:91
BufferStringSet argv_
Definition: commandlineparser.h:115
bool getVal(const char *key, BufferString &, bool acceptnone=false, int valnr=1) const
OD::String with its own variable length buffer. The buffer has a guaranteed minimum size...
Definition: bufstring.h:38
int nrArgs() const
Definition: commandlineparser.h:81
BufferString progname_
Definition: commandlineparser.h:113
#define mMAX(x, y)
Definition: commondefs.h:51

Generated at for the OpendTect seismic interpretation project. Copyright (C): dGB Beheer B. V. 2017