00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef __UT_WorkArgs__
00022 #define __UT_WorkArgs__
00023
00024 #include "UT_API.h"
00025 #include <stdlib.h>
00026 #include "UT_Assert.h"
00027
00028 #define UT_INITIAL_ARGV_SIZE 256
00029
00030 class UT_API UT_WorkArgs {
00031 public:
00032 UT_WorkArgs();
00033 ~UT_WorkArgs();
00034
00035 void *operator new(size_t size);
00036 void operator delete(void *memory);
00037
00038 void appendArg(char *text) { setArg(myArgc, text); }
00039 void setArg(int idx, char *text);
00040
00041 int getArgc() const { return myArgc; }
00042 char *getArg(int idx) { return myArgv[idx]; }
00043 const char *getArg(int idx) const { return myArgv[idx]; }
00044 char **getArgv() { return myArgv; }
00045 const char **getArgv() const { return (const char **)myArgv; }
00046
00047 char *operator[](int i)
00048 { return (i < myArgc) ? myArgv[i]:0; }
00049 char *operator()(int i)
00050 { UT_ASSERT_P(i <= myArgc); return myArgv[i]; }
00051
00052 const char *operator[](int i) const
00053 { return (i < myArgc) ? myArgv[i]:0; }
00054 const char *operator()(int i) const
00055 { UT_ASSERT_P(i <= myArgc); return myArgv[i]; }
00056
00057 UT_WorkArgs( const UT_WorkArgs © );
00058 UT_WorkArgs &operator=( const UT_WorkArgs © );
00059
00060 private:
00061 void reserve( int num_elems );
00062 private:
00063 char **myArgv;
00064 int myArgc, myAlloc;
00065 char *myStackArgv[UT_INITIAL_ARGV_SIZE];
00066 };
00067
00068 #endif