Home | nevrax.com |
|
opcode_ldb.hGo to the documentation of this file.00001 00007 /* Copyright, 2000 Nevrax Ltd. 00008 * 00009 * This file is part of NEVRAX NEL. 00010 * NEVRAX NEL is free software; you can redistribute it and/or modify 00011 * it under the terms of the GNU General Public License as published by 00012 * the Free Software Foundation; either version 2, or (at your option) 00013 * any later version. 00014 00015 * NEVRAX NEL is distributed in the hope that it will be useful, but 00016 * WITHOUT ANY WARRANTY; without even the implied warranty of 00017 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00018 * General Public License for more details. 00019 00020 * You should have received a copy of the GNU General Public License 00021 * along with NEVRAX NEL; see the file COPYING. If not, write to the 00022 * Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, 00023 * MA 02111-1307, USA. 00024 */ 00025 #ifndef NL_OPCODE_LDB_H 00026 #define NL_OPCODE_LDB_H 00027 00028 namespace NLAISCRIPT 00029 { 00030 class CLdbOpCode : public IOpRunCode 00031 { 00032 public: 00033 static const NLAIC::CIdentType IdLdbOpCode; 00034 00035 private: 00036 NLAIAGENT::IObjectIA *_B; 00037 public: 00038 CLdbOpCode(const NLAIAGENT::IObjectIA &b); 00039 00040 NLAIAGENT::TProcessStatement runOpCode(CCodeContext &context); 00041 00042 void getDebugResult(std::string &,CCodeContext &context) const; 00043 00044 const NLAIC::IBasicType *clone() const 00045 { 00046 NLAIC::IBasicType *x = new CLdbOpCode(*_B); 00047 return x; 00048 } 00049 00050 const NLAIC::IBasicType *newInstance() const 00051 { 00052 return clone(); 00053 } 00054 00055 const NLAIC::CIdentType &getType() const 00056 { 00057 return IdLdbOpCode; 00058 } 00059 00060 void getDebugString(std::string &) const{ } 00061 00062 void save(NLMISC::IStream &os) 00063 { 00064 os.serial( (NLAIC::CIdentType &) _B->getType() ); 00065 _B->save(os); 00066 } 00067 00068 void load(NLMISC::IStream &is) 00069 { 00070 _B->release(); 00071 NLAIC::CIdentTypeAlloc id; 00072 is.serial( id ); 00073 _B = (NLAIAGENT::IObjectIA *)id.allocClass(); 00074 _B->load(is); 00075 } 00076 00077 virtual ~CLdbOpCode() 00078 { 00079 _B->release(); 00080 } 00081 }; 00082 00083 class CLdbMemberOpCode : public IOpRunCode 00084 { 00085 public: 00086 static const NLAIC::CIdentType IdLdbMemberOpCode; 00087 private: 00088 int _B; 00089 public: 00090 CLdbMemberOpCode(int b): 00091 _B(b) 00092 { 00093 } 00094 00095 00096 NLAIAGENT::TProcessStatement runOpCode(CCodeContext &context); 00097 00098 void getDebugResult(std::string &str,CCodeContext &context) const; 00099 00100 const NLAIC::IBasicType *clone() const 00101 { 00102 NLAIC::IBasicType *x = new CLdbMemberOpCode(_B); 00103 return x; 00104 } 00105 00106 const NLAIC::IBasicType *newInstance() const 00107 { 00108 return clone(); 00109 } 00110 00111 const NLAIC::CIdentType &getType() const 00112 { 00113 return IdLdbMemberOpCode; 00114 } 00115 00116 void getDebugString(std::string &) const{ } 00117 00118 void save(NLMISC::IStream &os) 00119 { 00120 sint32 b = (sint32) _B; 00121 os.serial( b ); 00122 } 00123 00124 void load(NLMISC::IStream &is) 00125 { 00126 sint32 b; 00127 is.serial(b); 00128 _B = (int) b; 00129 } 00130 00131 virtual ~CLdbMemberOpCode() 00132 { 00133 } 00134 }; 00135 00136 class CLdbStackMemberiOpCode : public IOpRunCode 00137 { 00138 public: 00139 static const NLAIC::CIdentType IdLdbStackMemberiOpCode; 00140 private: 00141 std::list<sint32> _I; 00142 public: 00143 CLdbStackMemberiOpCode(std::list<sint32> b): 00144 _I(b) 00145 { 00146 } 00147 00148 NLAIAGENT::TProcessStatement runOpCode(CCodeContext &context); 00149 00150 void getDebugResult(std::string &str,CCodeContext &context) const; 00151 00152 const NLAIC::IBasicType *clone() const 00153 { 00154 NLAIC::IBasicType *x = new CLdbStackMemberiOpCode(_I); 00155 return x; 00156 } 00157 00158 const NLAIC::IBasicType *newInstance() const 00159 { 00160 return clone(); 00161 } 00162 00163 const NLAIC::CIdentType &getType() const 00164 { 00165 return IdLdbStackMemberiOpCode; 00166 } 00167 00168 void getDebugString(std::string &) const{ } 00169 00170 void save(NLMISC::IStream &os) 00171 { 00172 std::list<sint32> &i = (std::list<sint32> &)_I; 00173 os.serialCont(i); 00174 } 00175 00176 void load(NLMISC::IStream &is) 00177 { 00178 is.serialCont(_I); 00179 } 00180 00181 virtual ~CLdbStackMemberiOpCode() 00182 { 00183 } 00184 }; 00185 00186 class CLdbHeapMemberiOpCode : public IOpRunCode 00187 { 00188 public: 00189 static const NLAIC::CIdentType IdLdbHeapMemberiOpCode; 00190 private: 00191 std::list<sint32> _I; 00192 sint32 _N; 00193 public: 00194 CLdbHeapMemberiOpCode(const std::list<sint32> &b,sint32 n): 00195 _I(b),_N(n) 00196 { 00197 } 00198 00199 NLAIAGENT::TProcessStatement runOpCode(CCodeContext &context); 00200 00201 void getDebugResult(std::string &str,CCodeContext &context) const; 00202 00203 const NLAIC::IBasicType *clone() const 00204 { 00205 NLAIC::IBasicType *x = new CLdbHeapMemberiOpCode(_I,_N); 00206 return x; 00207 } 00208 00209 const NLAIC::IBasicType *newInstance() const 00210 { 00211 return clone(); 00212 } 00213 00214 const NLAIC::CIdentType &getType() const 00215 { 00216 return IdLdbHeapMemberiOpCode; 00217 } 00218 00219 void getDebugString(std::string &) const{ } 00220 00221 void save(NLMISC::IStream &os) 00222 { 00223 std::list<sint32> &i = (std::list<sint32> &) _I; 00224 os.serialCont(i); 00225 sint32 n = _N; 00226 os.serial(n); 00227 } 00228 00229 void load(NLMISC::IStream &is) 00230 { 00231 is.serialCont(_I); 00232 is.serial(_N); 00233 } 00234 00235 virtual ~CLdbHeapMemberiOpCode() 00236 { 00237 } 00238 }; 00239 00240 class CLdbMemberiOpCode : public IOpRunCode 00241 { 00242 public: 00243 static const NLAIC::CIdentType IdLdbMemberiOpCode; 00244 private: 00245 std::list<sint32> _I; 00246 public: 00247 CLdbMemberiOpCode(std::list<sint32> b): 00248 _I(b) 00249 { 00250 } 00251 00252 NLAIAGENT::TProcessStatement runOpCode(CCodeContext &context); 00253 00254 void getDebugResult(std::string &str,CCodeContext &context) const; 00255 00256 const NLAIC::IBasicType *clone() const 00257 { 00258 NLAIC::IBasicType *x = new CLdbMemberiOpCode(_I); 00259 return x; 00260 } 00261 00262 const NLAIC::IBasicType *newInstance() const 00263 { 00264 return clone(); 00265 } 00266 00267 const NLAIC::CIdentType &getType() const 00268 { 00269 return IdLdbMemberiOpCode; 00270 } 00271 00272 void getDebugString(std::string &) const{ } 00273 00274 void save(NLMISC::IStream &os) 00275 { 00276 std::list<sint32> &i = (std::list<sint32> &)_I; 00277 os.serialCont(i); 00278 } 00279 00280 void load(NLMISC::IStream &is) 00281 { 00282 is.serialCont(_I); 00283 } 00284 00285 virtual ~CLdbMemberiOpCode() 00286 { 00287 } 00288 }; 00289 00290 class CLdbRefOpCode : public IOpRunCode 00291 { 00292 public: 00293 static const NLAIC::CIdentType IdLdbRefOpCode; 00294 private: 00295 int _B; 00296 public: 00297 CLdbRefOpCode(int b): 00298 _B(b) 00299 { 00300 } 00301 00302 NLAIAGENT::TProcessStatement runOpCode(CCodeContext &context); 00303 00304 void getDebugResult(std::string &str,CCodeContext &context) const; 00305 00306 const NLAIC::IBasicType *clone() const 00307 { 00308 NLAIC::IBasicType *x = new CLdbRefOpCode(_B); 00309 return x; 00310 00311 } 00312 00313 const NLAIC::IBasicType *newInstance() const 00314 { 00315 return clone(); 00316 } 00317 00318 const NLAIC::CIdentType &getType() const 00319 { 00320 return IdLdbRefOpCode; 00321 } 00322 00323 void save(NLMISC::IStream &os) 00324 { 00325 sint32 b = (sint32) _B; 00326 os.serial( b ); 00327 } 00328 00329 void load(NLMISC::IStream &is) 00330 { 00331 sint32 b; 00332 is.serial( b ); 00333 _B = (int) b; 00334 } 00335 00336 virtual ~CLdbRefOpCode() 00337 { 00338 } 00339 00340 }; 00341 } 00342 00343 #endif |