# Home    # nevrax.com   
Nevrax
Nevrax.org
#News
#Mailing-list
#Documentation
#CVS
#Bugs
#License
Docs
 
Documentation  
Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members   File Members   Related Pages   Search  

objects_load.cpp

Go 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 }