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/typedvec.h"
00024 #include "csutil/csstrvec.h"
00025 #include "csutil/util.h"
00026
00027 struct csCommandLineOption;
00028
00030 class csCommandLineParser : public iCommandLineParser
00031 {
00032 private:
00033
00034 CS_DECLARE_TYPED_VECTOR_NODELETE (csCommandLineOptionVectorHelper, csCommandLineOption);
00035
00036 class csCommandLineOptionVector : public csCommandLineOptionVectorHelper
00037 {
00038 public:
00039 virtual ~csCommandLineOptionVector ();
00040 virtual bool FreeItem (csSome item);
00041 virtual int CompareKey (csSome Item, csConstSome Key, int Mode) const;
00042 };
00043
00044
00045 csCommandLineOptionVector Options;
00046
00047 csStrVector Names;
00048
00049
00050 csCommandLineOption *FindOption (const char *iName, int iIndex) const;
00051
00052 public:
00053 SCF_DECLARE_IBASE;
00054
00056 csCommandLineParser (iBase *Parent = NULL);
00058 csCommandLineParser (int argc, const char* const argv[]);
00060 virtual ~csCommandLineParser() {}
00061
00067 virtual void Initialize (int argc, const char* const argv[]);
00068
00070 virtual void Reset ();
00072 virtual const char *GetOption (const char *iName, int iIndex = 0) const;
00074 virtual const char *GetName (int iIndex = 0) const;
00076 virtual void AddOption (const char *iName, const char *iValue);
00078 virtual void AddName (const char *iName);
00080 virtual bool ReplaceOption (const char *iName, const char *iValue,
00081 int iIndex = 0);
00083 virtual bool ReplaceName (const char *iValue, int iIndex = 0);
00084 };
00085
00086 #endif // __CS_CMDLINE_H__