Go to the documentation of this file.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
00026 #include "csextern.h"
00027 #include "csutil/parray.h"
00028 #include "csutil/scf_implementation.h"
00029 #include "csutil/stringarray.h"
00030 #include "csutil/util.h"
00031 #include "iutil/cmdline.h"
00032
00034 struct CS_CRYSTALSPACE_EXPORT csCommandLineOption
00035 {
00037 char *Name;
00039 char *Value;
00041 csCommandLineOption (char *iName, char *iValue)
00042 {
00043 Name = iName;
00044 Value = iValue;
00045 }
00047 ~csCommandLineOption ()
00048 { delete [] Name; delete [] Value; }
00049 };
00050
00051
00053 class CS_CRYSTALSPACE_EXPORT csCommandLineParser :
00054 public scfImplementation1<csCommandLineParser, iCommandLineParser>
00055 {
00056 private:
00058 typedef csPDelArray<csCommandLineOption> csCommandLineOptionVector;
00059
00061 csCommandLineOptionVector Options;
00063 csStringArray Names;
00064
00066 csCommandLineOption *FindOption (const char *iName, size_t iIndex) const;
00067
00069 csString resDir;
00071 csString appDir;
00073 csString appPath;
00074 public:
00076 csCommandLineParser (iBase *Parent = 0);
00078 csCommandLineParser (int argc, const char* const argv[]);
00080 virtual ~csCommandLineParser();
00081
00087 virtual void Initialize (int argc, const char* const argv[]);
00088
00090 virtual void Reset ();
00092 virtual const char *GetOption (const char *iName, size_t iIndex = 0) const;
00093
00099 virtual const char *GetName (size_t iIndex = 0) const;
00101 virtual void AddOption (const char *iName, const char *iValue);
00103 virtual void AddName (const char *iName);
00105 virtual bool ReplaceOption (const char *iName, const char *iValue,
00106 size_t iIndex = 0);
00108 virtual bool ReplaceName (const char *iValue, size_t iIndex = 0);
00112 virtual bool GetBoolOption (const char *iName,
00113 bool defaultValue = false);
00114
00121 virtual const char* GetResourceDir ();
00122
00127 virtual const char* GetAppDir ();
00128
00132 virtual const char* GetAppPath ();
00133
00135 virtual const char* GetOptionName (size_t iIndex) const;
00137 virtual const char *GetOption (size_t iIndex = 0) const;
00138 };
00139
00140 #endif // __CS_CMDLINE_H__