00001
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
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 ¶ms) 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 }