00001 #ifndef CLASSLIB_ARGZ_H
00002 # define CLASSLIB_ARGZ_H
00003
00004
00005
00006 # include "classlib/sysapi/system.h"
00007 # include <string>
00008 # include <vector>
00009
00010 namespace lat {
00011
00012
00013
00014
00015
00016
00017
00018 class Argz
00019 {
00020 public:
00021 Argz (void);
00022 Argz (const std::string &command);
00023 Argz (const char **argz);
00024 Argz (const char *a1, const char *a2);
00025 Argz (const char *a1, const char *a2, const char *a3);
00026 Argz (const char *a1, const char *a2, const char *a3, const char *a4);
00027 Argz (const Argz &x);
00028 Argz &operator= (const Argz &x);
00029 ~Argz (void);
00030
00031 Argz & clear (void);
00032 Argz & add (const char *arg);
00033 Argz & add (const char **argz);
00034 Argz & add (const Argz &x);
00035 const char ** argz (void) const;
00036 std::string quote (void) const;
00037
00038 private:
00039 void reargz (size_t n);
00040 void build (const char **argz);
00041 void build (const std::string &command);
00042
00043 std::string m_data;
00044 std::vector<char *> m_argz;
00045 };
00046
00047
00048
00049
00050 }
00051 #endif // CLASSLIB_ARGZ_H