# 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  

msg_connect.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 
00025 #include "nel/ai/agent/msg_connect.h"
00026 #include "nel/ai/agent/agent_digital.h"
00027 #include "nel/ai/script/interpret_message_connect.h"
00028 #include "nel/ai/agent/object_type.h"
00029 #include "nel/ai/script/codage.h"
00030 #include "nel/ai/script/object_unknown.h"
00031 
00032 
00033 namespace NLAIAGENT
00034 {
00035         CConnectObjectValueMsg::CConnectObjectValueMsg( std::list<IObjectIA *> &l, NLAISCRIPT::CMessageClass *b):CMessageScript(l,b)
00036         {
00037                 set(0, new CStringType( CStringVarName("<undefined>") ) );
00038         }
00039 
00040         CConnectObjectValueMsg::CConnectObjectValueMsg(NLAISCRIPT::CMessageClass *b):CMessageScript(b)
00041         {       
00042                 CVectorGroupType *x = new CVectorGroupType(1);          
00043                 setMessageGroup(x);
00044                 setGroup(CMessageGroup::msgScriptingGroup);             
00045                 set(0, new CStringType(CStringVarName("<undefined>")) );
00046         }
00047 
00048         CConnectObjectValueMsg::CConnectObjectValueMsg(IBasicAgent *agent):
00049                         CMessageScript((NLAISCRIPT::CMessageClass *)NLAISCRIPT::CConnectObjectValueMsgClass::IdConnectObjectValueMsgClass.getFactory()->getClass())
00050         {               
00051                 CVectorGroupType *x = new CVectorGroupType(1);
00052                 setMessageGroup(x);
00053                 setGroup(CMessageGroup::msgScriptingGroup);
00054                 set(0, new CStringType(CStringVarName("<undefined>")) );
00055         }
00056 
00057         CConnectObjectValueMsg::CConnectObjectValueMsg(const CConnectObjectValueMsg &m): CMessageScript(m)
00058         {
00059         }
00060 
00061         CConnectObjectValueMsg::~CConnectObjectValueMsg()
00062         {
00063         }
00064 
00065         const NLAIC::IBasicType *CConnectObjectValueMsg::clone() const
00066         {
00067                 const NLAIC::IBasicType *x;
00068                 x = new CConnectObjectValueMsg(*this);
00069                 return x;
00070         }
00071 
00072         const NLAIC::CIdentType &CConnectObjectValueMsg::getType() const
00073         {
00074                 if ( getCreatorClass() ) 
00075                         return getCreatorClass()->getType();
00076                 else
00077                         return IdConnectObjectValueMsg;
00078         }       
00079 
00080         void CConnectObjectValueMsg::getDebugString(std::string &t) const
00081         {
00082                 std::string txt;
00083                 get()->getDebugString(txt);
00084                 t += NLAIC::stringGetBuild("CConnectObjectValueMsg<%s>",txt.c_str());
00085         }
00086 
00087 
00088         tQueue CConnectObjectValueMsg::isMember(const IVarName *className,const IVarName *funcName,const IObjectIA &params) const
00089         {
00090 
00091                 tQueue r;
00092 
00093                 if(className == NULL)
00094                 {
00095                         if( (*funcName) == CStringVarName( "Constructor" ) )
00096                         {                                       
00097                                 r.push( CIdMethod( IMessageBase::getMethodIndexSize(), 0.0, NULL, new NLAISCRIPT::CObjectUnknown(new NLAISCRIPT::COperandVoid) ) );                     
00098                         }
00099                 }
00100 
00101                 if ( r.empty() )
00102                         return CMessageScript::isMember(className, funcName, params);
00103                 else
00104                         return r;
00105         }
00106 
00107         NLAIAGENT::IObjectIA::CProcessResult CConnectObjectValueMsg::runMethodeMember(sint32, sint32, NLAIAGENT::IObjectIA *)
00108         {
00109                 return IObjectIA::CProcessResult();
00110         }
00111 
00112         IObjectIA::CProcessResult CConnectObjectValueMsg::runMethodeMember(sint32 index, IObjectIA *context)
00113         {
00114                 IBaseGroupType *arg = (IBaseGroupType *) ( (NLAISCRIPT::CCodeContext *)context )->Param.back();
00115 
00116                 switch( index - IMessageBase::getMethodIndexSize() )
00117                 {
00118                 case 0:
00119                         {                                       
00120                                 IObjectIA *param = (IObjectIA *) arg->get();
00121                                 arg->popFront();
00122 #ifdef NL_DEBUG
00123                                 std::string buffer;
00124                                 param->getDebugString( buffer );
00125 #endif
00126                                 set(0, param);
00127                         }
00128                         break;
00129                 }
00130                 return IObjectIA::CProcessResult();
00131         }
00132 
00133         sint32 CConnectObjectValueMsg::getBaseMethodCount() const
00134         {
00135                 return CMessageScript::getBaseMethodCount() + 1;
00136         }
00137 }