00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #include "DataStore.h"
00019
00020
00021
00022
00023 DataStore::DataStore()
00024 {
00025 init();
00026 }
00027
00028
00029 DataStore::~DataStore()
00030 {
00031 clear();
00032 }
00033
00034
00035 void DataStore::init()
00036 {
00037 }
00038
00039
00040 void DataStore::clear()
00041 {
00042 removeAllDataStacks();
00043 }
00044
00045
00046 void DataStore::refAdd()
00047 {
00048
00049 }
00050
00051
00052 void DataStore::refRelease()
00053 {
00054
00055 }
00056
00057
00058 bool DataStore::addDataStack(DataStack *stack)
00059 {
00060
00061 if(stack == NULL)
00062 return false;
00063
00064
00065 if(getDataStack(stack->getName()))
00066 return false;
00067
00068
00069 mStacks.push_back(stack);
00070
00071 return true;
00072 }
00073
00074
00075 DataStack* DataStore::createDataStack(const std::string &name)
00076 {
00077
00078 if(getDataStack(name))
00079 return NULL;
00080
00081
00082 DataStack *stack = new DataStack(name);
00083 stack->refAdd();
00084 mStacks.push_back(stack);
00085
00086 return stack;
00087 }
00088
00089
00090 DataStack* DataStore::getDataStack(const u32 id)
00091 {
00092 for(u32 i = 0; i < mStacks.size(); i++)
00093 {
00094 if(mStacks[i]->getID() == id)
00095 return mStacks[i];
00096 }
00097
00098 return NULL;
00099 }
00100
00101
00102 DataStack* DataStore::getDataStack(const std::string &name)
00103 {
00104 for(u32 i = 0; i < mStacks.size(); i++)
00105 {
00106 if(mStacks[i]->getName() == name)
00107 return mStacks[i];
00108 }
00109
00110 return NULL;
00111 }
00112
00113
00114 void DataStore::removeAllDataStacks()
00115 {
00116
00117 for(u32 i = 0; i < mStacks.size(); i++)
00118 delete mStacks[i];
00119
00120 mStacks.clear();
00121 }
00122
00123
00124 bool DataStore::removeDataStack(DataStack *stack)
00125 {
00126
00127 if(stack == NULL)
00128 return false;
00129
00130
00131 vector<DataStack*>::iterator it;
00132
00133 for(it = mStacks.begin(); it < mStacks.end(); it++)
00134 {
00135 DataStack *dstack = *it;
00136
00137 if(dstack == stack)
00138 {
00139 delete dstack;
00140 mStacks.erase(it);
00141 return true;
00142 }
00143 }
00144
00145
00146 return false;
00147 }
00148
00149
00150 bool DataStore::removeDataStack(const u32 id)
00151 {
00152
00153 vector<DataStack*>::iterator it;
00154
00155 for(it = mStacks.begin(); it < mStacks.end(); it++)
00156 {
00157 DataStack *dstack = *it;
00158
00159 if(dstack->getID() == id)
00160 {
00161 delete dstack;
00162 mStacks.erase(it);
00163 return true;
00164 }
00165 }
00166
00167
00168 return false;
00169 }
00170
00171
00172 bool DataStore::removeDataStack(const std::string &name)
00173 {
00174
00175 vector<DataStack*>::iterator it;
00176
00177 for(it = mStacks.begin(); it < mStacks.end(); it++)
00178 {
00179 DataStack *dstack = *it;
00180
00181 if(dstack->getName() == name)
00182 {
00183 delete dstack;
00184 mStacks.erase(it);
00185 return true;
00186 }
00187 }
00188
00189
00190 return false;
00191 }
00192
00193
00194
00195 void bindDataStore(asIScriptEngine *engine)
00196 {
00197
00198 int r;
00199
00200
00201 r = engine->RegisterObjectType("DataStore", sizeof(DataStore), asOBJ_REF); assert(r >= 0);
00202
00203
00204 r = engine->RegisterObjectBehaviour("DataStore", asBEHAVE_ADDREF, "void f()",
00205 asMETHOD(DataStore, refAdd), asCALL_THISCALL); assert(r >= 0);
00206 r = engine->RegisterObjectBehaviour("DataStore", asBEHAVE_RELEASE, "void f()",
00207 asMETHOD(DataStore, refRelease), asCALL_THISCALL); assert(r >= 0);
00208
00209
00210 r = engine->RegisterObjectMethod("DataStore", "void init()",
00211 asMETHOD(DataStore, init), asCALL_THISCALL); assert(r >= 0);
00212 r = engine->RegisterObjectMethod("DataStore", "void clear()",
00213 asMETHOD(DataStore, clear), asCALL_THISCALL); assert(r >= 0);
00214
00215 r = engine->RegisterObjectMethod("DataStore", "bool addDataStack(DataStack @)",
00216 asMETHOD(DataStore, addDataStack), asCALL_THISCALL); assert(r >= 0);
00217 r = engine->RegisterObjectMethod("DataStore", "DataStack@ createDataStack(const string &)",
00218 asMETHOD(DataStore, createDataStack), asCALL_THISCALL); assert(r >= 0);
00219
00220 r = engine->RegisterObjectMethod("DataStore", "DataStack@ getDataStack(const u32)",
00221 asMETHODPR(DataStore, getDataStack, (const u32), DataStack*),
00222 asCALL_THISCALL); assert(r >= 0);
00223 r = engine->RegisterObjectMethod("DataStore", "DataStack@ getDataStack(const string &)",
00224 asMETHODPR(DataStore, getDataStack, (const std::string &), DataStack*),
00225 asCALL_THISCALL); assert(r >= 0);
00226
00227 r = engine->RegisterObjectMethod("DataStore", "void removeAllDataStacks()",
00228 asMETHOD(DataStore, removeAllDataStacks), asCALL_THISCALL); assert(r >= 0);
00229 r = engine->RegisterObjectMethod("DataStore", "bool removeDataStack(DataStack @)",
00230 asMETHODPR(DataStore, removeDataStack, (DataStack*), bool),
00231 asCALL_THISCALL); assert(r >= 0);
00232 r = engine->RegisterObjectMethod("DataStore", "bool removeDataStack(const u32)",
00233 asMETHODPR(DataStore, removeDataStack, (const u32), bool),
00234 asCALL_THISCALL); assert(r >= 0);
00235 r = engine->RegisterObjectMethod("DataStore", "bool removeDataStack(const string &)",
00236 asMETHODPR(DataStore, removeDataStack, (const std::string &), bool),
00237 asCALL_THISCALL); assert(r >= 0);
00238 }
00239
00240