00001
00002
00003 #ifndef CLIARGLIST_H
00004 #define CLIARGLIST_H
00005
00006 #include <string>
00007 #include <iostream>
00008 #include "AData.h"
00009
00010 #include "Serializable.h"
00011
00012
00013 class AData;
00014
00028 class CliArgList: public Serializable
00029 {
00030 private:
00032 AData * head;
00034 AData * tail;
00036 AData * cursor;
00038 int num_args_;
00039
00040 public:
00042 CliArgList();
00043
00045 ~CliArgList();
00046
00049 void add_element(AData *dat);
00050
00053 void append_list(CliArgList *list);
00054
00056 void remove_all_elements();
00057
00059 void print_elements(ostream & outputstream);
00060
00062 void reset();
00063
00067 AData *next();
00068
00071 AData *inspect_next();
00072
00074 int num_args() { return num_args_; }
00075
00076
00077 private:
00078 friend class boost::serialization::access;
00079 template<class Archive>
00080 void serialize(Archive & ar, const unsigned int version) {
00081 this->pre_serialize(ar, version);
00082 try {
00083 ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP(Serializable);
00084 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION;
00085 }
00086 try {
00087 ar & BOOST_SERIALIZATION_NVP(head);
00088 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION;
00089 }
00090 try {
00091 ar & BOOST_SERIALIZATION_NVP(tail);
00092 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION;
00093 }
00094 try {
00095 ar & BOOST_SERIALIZATION_NVP(cursor);
00096 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION;
00097 }
00098 try {
00099 ar & BOOST_SERIALIZATION_NVP(num_args_);
00100 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION;
00101 }
00102 this->post_serialize(ar, version);
00103 }
00104
00105 };
00106
00107 BIE_CLASS_TYPE_INFO(CliArgList)
00108 BIE_CLASS_EXPORT_KEY(CliArgList)
00109 #endif