00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef __CS_CMDLINE_H__
00020 #define __CS_CMDLINE_H__
00021
00022 #include "iutil/cmdline.h"
00023 #include "csutil/csvector.h"
00024 #include "csutil/parray.h"
00025 #include "csutil/csstrvec.h"
00026 #include "csutil/util.h"
00027
00028 struct csCommandLineOption
00029 {
00031 char *Name;
00033 char *Value;
00035 csCommandLineOption (char *iName, char *iValue)
00036 {
00037 Name = iName;
00038 Value = iValue;
00039 }
00041 ~csCommandLineOption ()
00042 { delete [] Name; delete [] Value; }
00043 };
00044
00045
00047 class csCommandLineParser : public iCommandLineParser
00048 {
00049 private:
00051 typedef csPDelArray<csCommandLineOption> csCommandLineOptionVector;
00052
00054 csCommandLineOptionVector Options;
00056 csStrVector Names;
00057
00059 csCommandLineOption *FindOption (const char *iName, int iIndex) const;
00060
00061 public:
00062 SCF_DECLARE_IBASE;
00063
00065 csCommandLineParser (iBase *Parent = NULL);
00067 csCommandLineParser (int argc, const char* const argv[]);
00069 virtual ~csCommandLineParser() {}
00070
00076 virtual void Initialize (int argc, const char* const argv[]);
00077
00079 virtual void Reset ();
00081 virtual const char *GetOption (const char *iName, int iIndex = 0) const;
00083 virtual const char *GetName (int iIndex = 0) const;
00085 virtual void AddOption (const char *iName, const char *iValue);
00087 virtual void AddName (const char *iName);
00089 virtual bool ReplaceOption (const char *iName, const char *iValue,
00090 int iIndex = 0);
00092 virtual bool ReplaceName (const char *iValue, int iIndex = 0);
00096 virtual bool GetBoolOption (const char *iName,
00097 bool defaultValue = false);
00098 };
00099
00100 #endif // __CS_CMDLINE_H__