Home | nevrax.com |
|
objects_load.cppGo to the documentation of this file.00001 00006 /* Copyright, 2000 Nevrax Ltd. 00007 * 00008 * This file is part of NEVRAX NEL. 00009 * NEVRAX NEL is free software; you can redistribute it and/or modify 00010 * it under the terms of the GNU General Public License as published by 00011 * the Free Software Foundation; either version 2, or (at your option) 00012 * any later version. 00013 00014 * NEVRAX NEL is distributed in the hope that it will be useful, but 00015 * WITHOUT ANY WARRANTY; without even the implied warranty of 00016 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00017 * General Public License for more details. 00018 00019 * You should have received a copy of the GNU General Public License 00020 * along with NEVRAX NEL; see the file COPYING. If not, write to the 00021 * Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, 00022 * MA 02111-1307, USA. 00023 */ 00024 #include "nel/ai/script/compilateur.h" 00025 #include "nel/ai/agent/agent_script.h" 00026 #include "nel/ai/script/type_def.h" 00027 #include "nel/ai/script/object_load.h" 00028 00029 00030 namespace NLAISCRIPT 00031 { 00032 00033 //************************************* 00034 // CLoadSelfObject 00035 //************************************* 00036 const NLAIAGENT::IBaseGroupType *CLoadSelfObject::getParam(CCodeContext &context) const 00037 { 00038 return (const NLAIAGENT::IBaseGroupType *)context.Stack[(int)context.Stack]; 00039 } 00040 00041 const NLAIAGENT::IObjectIA *CLoadSelfObject::getObject(CCodeContext &context) const 00042 { 00043 NLAIAGENT::IObjectIA *a = ((NLAIAGENT::IObjectIA *)context.Self); 00044 std::list<sint32>::const_iterator i = _I.begin(); 00045 int j; 00046 while(i != _I.end()) 00047 { 00048 j = *i++; 00049 a = (NLAIAGENT::IObjectIA *)a->getStaticMember(j); 00050 } 00051 return a; 00052 } 00053 00054 //************************************* 00055 // CLoadStackObject 00056 //************************************* 00057 00058 const NLAIAGENT::IBaseGroupType *CLoadStackObject::getParam(CCodeContext &context) const 00059 { 00060 return (NLAIAGENT::IBaseGroupType *)context.Stack[(int)context.Stack]; 00061 } 00062 00063 const NLAIAGENT::IObjectIA *CLoadStackObject::getObject(CCodeContext &context) const 00064 { 00065 NLAIAGENT::IObjectIA *a = (NLAIAGENT::IObjectIA *)context.Stack[(int)context.Stack - 1]; 00066 std::list<sint32>::const_iterator i = _I.begin(); 00067 int j; 00068 while(i != _I.end()) 00069 { 00070 j = *i++; 00071 a = (NLAIAGENT::IObjectIA *)a->getStaticMember(j); 00072 } 00073 return a; 00074 } 00075 00076 //************************************* 00077 // CLoadHeapObject 00078 //************************************* 00079 const NLAIAGENT::IBaseGroupType *CLoadHeapObject::getParam(CCodeContext &context) const 00080 { 00081 return (const NLAIAGENT::IBaseGroupType *)context.Stack[(int)context.Stack]; 00082 } 00083 00084 const NLAIAGENT::IObjectIA *CLoadHeapObject::getObject(CCodeContext &context) const 00085 { 00086 NLAIAGENT::IObjectIA *a = (NLAIAGENT::IObjectIA *)context.Heap[(int)_N]; 00087 std::list<sint32>::const_iterator i = _I.begin(); 00088 int j; 00089 while(i != _I.end()) 00090 { 00091 j = *i++; 00092 a = (NLAIAGENT::IObjectIA *)a->getStaticMember(j); 00093 } 00094 return a; 00095 } 00096 00097 } |