00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016 #ifndef __DATASTACK_H__
00017 #define __DATASTACK_H__
00018
00019
00020 #include "../dependencies.h"
00021 #include "ReferenceCounted.h"
00022 #include "DataStore.h"
00023
00024
00025 class DataStore;
00026
00027
00028
00033 class DataStack : public ReferenceCounted
00034 {
00035 public:
00036
00037
00040 DataStack(const std::string &name);
00042 ~DataStack();
00043
00045 void init();
00047 void clear();
00048
00049
00051 u32 getID() const;
00053 const std::string& getName() const;
00054
00056 u32 getSize() const;
00057
00063 template<typename T>
00064 bool setVar(const std::string &name, const T &value)
00065 {
00066
00067 std::stringstream ss;
00068 ss << value;
00069
00070
00071 if(ss.good())
00072 {
00073 mVars[name] = ss.str();
00074 return true;
00075 }
00076
00077
00078 else return false;
00079 };
00080
00086 template<typename T>
00087 T getVar(const std::string &name)
00088 {
00089
00090 std::map<std::string, std::string>::iterator it;
00091 it = mVars.find(name);
00092
00093
00094 if(it != mVars.end())
00095 {
00096 std::stringstream ss(it->second);
00097 T t;
00098
00099 ss >> t;
00100 return t;
00101 }
00102
00103
00104 else return NULL;
00105 };
00106
00111 std::string getVar(const std::string &name);
00112
00114 void removeVars();
00117 bool removeVar(const std::string &name);
00118
00121 bool saveBencode(const std::string &fileName);
00124 bool loadBencode(const std::string &fileName);
00125
00128 bool saveXML(const std::string &fileName);
00131 bool loadXML(const std::string &fileName);
00132
00133 private:
00134
00135
00136 static u32 mIDCount;
00137
00138
00139 u32 mID;
00140 std::string mName;
00141
00142 std::map<std::string, std::string> mVars;
00143 };
00144
00145 #endif