OpendTect  6.6
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  RCS: $Id$
10 ________________________________________________________________________
11 
12 
13 
14 -*/
15 
16 #include "convert.h"
17 #include "dbkey.h"
18 #include "genc.h"
19 #include "bufstringset.h"
20 #include "typeset.h"
21 #include "debug.h" // easier for test programs, declares od_init_test_program
22 
53 {
54 public:
55  CommandLineParser(const char*);
56  CommandLineParser(int argc,char** argv);
61  void setKeyHasValue(const char* key,int nrvals=1);
71  bool hasKey(const char*) const;
72  bool getVal(const char* key,BufferString&,
73  bool acceptnone=false,int valnr=1) const;
74  bool getVal(const char* key,DBKey&,
75  bool acceptnone=false,int valnr=1) const;
76  template <class T> bool getVal(const char* key,T&,
77  bool acceptnone=false,int valnr=1) const;
83  // following return empty string, invalid DBKey
84  // or Udf if the key is not present or
85  // carries no value
86  BufferString keyedString(const char* ky,int argnr=0) const;
87  template <class T>
88  T keyedValue(const char* ky,int argnr=0) const;
89 
90  bool isPresent(const char*) const;
92 
93  int nrArgs() const { return argv_.size(); }
97  bool isKey(int) const;
99  bool isKeyValue(int idx) const;
103  const OD::String& getArg(int idx) const { return *argv_[idx]; }
104  const OD::String& lastArg() const;
105 
106  const OD::String& getExecutable() const;
108 
109  mDeprecated ("Use BufferString createKey(const char*)")
110  static void createKey(const char* key,BufferString& res)
111  { res = "--"; res += key; }
112  static BufferString createKey( const char* key )
113  { return BufferString("--",key); }
114 
115  static void addKey(const char* key,BufferString& cmd,
116  const char* valstr=0);
118  static void addFilePath(const char*,BufferString& cmd);
123  static const char* sDataRootArg() { return "dataroot"; }
124  static const char* sSurveyArg() { return "survey"; }
126  BufferString getFullSurveyPath(bool* iscursurv=0) const;
127 
128 private:
129 
130  int indexOf(const char*) const;
131  void init(int,char**);
132  void init(const char*);
133 
137 
140 };
141 
142 //Implementation
143 
144 template <class T> inline
145 bool CommandLineParser::getVal( const char* key, T& val,
146  bool acceptnone, int valnr ) const
147 {
148  const int keyidx = indexOf( key );
149  if ( keyidx<0 )
150  return acceptnone;
151 
152  const int validx = keyidx + mMAX(valnr,1);
153  if ( !argv_.validIdx( validx ) || isKey(validx) )
154  return false;
155 
156  val = Conv::to<T>( argv_[validx]->buf() );
157 
158  return !mIsUdf(val);
159 }
160 
161 
163  int argnr ) const
164 {
165  BufferString ret;
166  getVal( ky, ret, false, argnr );
167  return ret;
168 }
169 
170 
171 template <class T> inline
172 T CommandLineParser::keyedValue( const char* ky, int argnr ) const
173 {
174  T ret = mUdf(T);
175  getVal( ky, ret, false, argnr );
176  return ret;
177 }
178 
CommandLineParser::executable_
BufferString executable_
Definition: commandlineparser.h:135
CommandLineParser::progname_
BufferString progname_
Definition: commandlineparser.h:134
CommandLineParser::keyedString
BufferString keyedString(const char *ky, int argnr=0) const
Definition: commandlineparser.h:162
CommandLineParser::CommandLineParser
CommandLineParser(int argc, char **argv)
BufferStringSet
Set of BufferString objects.
Definition: bufstringset.h:26
mIsUdf
#define mIsUdf(val)
Use mIsUdf to check for undefinedness of simple types.
Definition: undefval.h:289
mExpClass
#define mExpClass(module)
Definition: commondefs.h:177
CommandLineParser::nrvalues_
TypeSet< int > nrvalues_
Definition: commandlineparser.h:139
CommandLineParser::getExecutableName
const OD::String & getExecutableName() const
mMAX
#define mMAX(x, y)
Definition: commondefs.h:61
CommandLineParser::getVal
bool getVal(const char *key, DBKey &, bool acceptnone=false, int valnr=1) const
genc.h
typeset.h
CommandLineParser
Definition: commandlineparser.h:53
CommandLineParser::keyswithvalue_
BufferStringSet keyswithvalue_
Definition: commandlineparser.h:138
CommandLineParser::isKeyValue
bool isKeyValue(int idx) const
CommandLineParser::hasKey
bool hasKey(const char *) const
CommandLineParser::envVarBase
BufferString envVarBase() const
CommandLineParser::getFullSurveyPath
BufferString getFullSurveyPath(bool *iscursurv=0) const
CommandLineParser::createKey
static BufferString createKey(const char *key)
Definition: commandlineparser.h:112
CommandLineParser::lastArg
const OD::String & lastArg() const
CommandLineParser::init
void init(const char *)
CommandLineParser::addFilePath
static void addFilePath(const char *, BufferString &cmd)
DBKey
Definition: dbkey.h:21
mDeprecated
#define mDeprecated(msg)
Definition: plfdefs.h:215
CommandLineParser::setKeyHasValue
void setKeyHasValue(const char *key, int nrvals=1)
CommandLineParser::getNormalArguments
void getNormalArguments(BufferStringSet &) const
CommandLineParser::init
void init(int, char **)
CommandLineParser::getExecutable
const OD::String & getExecutable() const
convert.h
dbkey.h
CommandLineParser::getVal
bool getVal(const char *key, BufferString &, bool acceptnone=false, int valnr=1) const
CommandLineParser::getArg
const OD::String & getArg(int idx) const
Definition: commandlineparser.h:103
BufferString
OD::String with its own variable length buffer. The buffer has a guaranteed minimum size.
Definition: bufstring.h:40
bufstringset.h
CommandLineParser::indexOf
int indexOf(const char *) const
OD::String
encapsulates the read-access-only part of strings in OD.
Definition: odstring.h:31
CommandLineParser::CommandLineParser
CommandLineParser()
CommandLineParser::addKey
static void addKey(const char *key, BufferString &cmd, const char *valstr=0)
adds a space before but not after
mUdf
#define mUdf(type)
Use this macro to get the undefined for simple types.
Definition: undefval.h:274
CommandLineParser::argv_
BufferStringSet argv_
Definition: commandlineparser.h:136
CommandLineParser::isKey
bool isKey(int) const
Does the arg start with - or –.
CommandLineParser::keyedValue
T keyedValue(const char *ky, int argnr=0) const
Definition: commandlineparser.h:172
BufferStringSet::validIdx
virtual bool validIdx(int64_t i) const
Definition: bufstringset.h:45
CommandLineParser::isPresent
bool isPresent(const char *) const
Is string present as an argument.
CommandLineParser::nrArgs
int nrArgs() const
Definition: commandlineparser.h:93
CommandLineParser::sDataRootArg
static const char * sDataRootArg()
Definition: commandlineparser.h:123
debug.h
CommandLineParser::CommandLineParser
CommandLineParser(const char *)
CommandLineParser::sSurveyArg
static const char * sSurveyArg()
Definition: commandlineparser.h:124
TypeSet< int >

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