From 0ea5fc66924303d1bf73ba283a383e2aadee02f2 Mon Sep 17 00:00:00 2001 From: neodarz Date: Sat, 11 Aug 2018 20:21:34 +0200 Subject: Initial commit --- docs/doxygen/nel/a05477.html | 180 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 180 insertions(+) create mode 100644 docs/doxygen/nel/a05477.html (limited to 'docs/doxygen/nel/a05477.html') diff --git a/docs/doxygen/nel/a05477.html b/docs/doxygen/nel/a05477.html new file mode 100644 index 00000000..61faf96c --- /dev/null +++ b/docs/doxygen/nel/a05477.html @@ -0,0 +1,180 @@ + + +NeL: basic_agent.cpp Source File + + + +
+

basic_agent.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/agent/agent.h"
+00025 
+00026 namespace NLAIAGENT
+00027 {
+00028 
+00029         
+00030         IAgentComposite::IAgentComposite(const IAgentComposite &a): IBasicAgent(a),_SizeChild(0)
+00031         {
+00032                 std::list<IBasicAgent *>::const_iterator i = a._AgentList.begin();
+00033                 while(i != a._AgentList.end())
+00034                 {                               
+00035                         IBasicAgent *b = ( *i++ );
+00036                         addChild( b );                  
+00037                 }
+00038         }
+00039 
+00040         IAgentComposite::IAgentComposite(IBasicAgent *parent): IBasicAgent(parent != NULL ? (const IWordNumRef *) *parent:NULL),_SizeChild(0)
+00041         {
+00042                 if(parent) parent->addChild(this);
+00043         }
+00044 
+00045         IAgentComposite::IAgentComposite(IBasicAgent *parent,IMailBox   *m): IBasicAgent(parent != NULL ? (const IWordNumRef *) *parent:NULL,m),_SizeChild(0)
+00046         {
+00047                 if(parent) parent->addChild(this);
+00048         }
+00049 
+00050         IAgentComposite::~IAgentComposite()                     
+00051         {
+00052                 /*std::list<IBasicAgent *>::iterator i = _AgentList.begin();
+00053                 while(i != _AgentList.end())
+00054                 {                       
+00055                         IBasicAgent *b = (*i++);
+00056                 }*/
+00057                 deleteListe();
+00058         }
+00059 
+00060         void IAgentComposite::onKill(IConnectIA *a)
+00061         {
+00062                 //removeChild((const IBasicAgent *)a);
+00063                 IBasicAgent::onKill(a);
+00064         }
+00065 
+00066         // Ajoute un fils à l'agent.
+00067         std::list<IBasicAgent *>::iterator IAgentComposite::addChild(IBasicAgent *p)            
+00068         {                       
+00069                 p->incRef();
+00070                 _AgentList.push_front((IBasicAgent *)p);
+00071                 // Donne au fils accès à la boite aux lettres du père
+00072                 p->getMail()->addMailBox( this->getMail() );
+00073                 _SizeChild ++;
+00074 
+00075                 return _AgentList.begin();
+00076         }
+00077 
+00078         void IAgentComposite::cpyChild(const IBasicAgent &p)
+00079         {
+00080                 _AgentList.push_front((IBasicAgent *)p.clone());
+00081                 _SizeChild ++;
+00082         }
+00083         
+00084         void IAgentComposite::removeChild(std::list<IBasicAgent *>::iterator &iter)
+00085         {                                       
+00086                 _AgentList.erase(iter);
+00087                 _SizeChild --;
+00088         }
+00089 
+00090         void IAgentComposite::removeChild(const IBasicAgent &p)
+00091         {                       
+00092                 std::list<IBasicAgent *>::iterator i = _AgentList.begin();
+00093                 while(i != _AgentList.end())
+00094                 {                                       
+00095                         if(*((*i)) == p)
+00096                         {
+00097                                 (*i)->release();
+00098                                 _AgentList.erase(i);
+00099                                 // Supprime chez l'ancien fils la boite au lettre du père
+00100                                 p.getMail()->removeMailBox( this->getMail() );
+00101                                 _SizeChild --;
+00102                                 return;
+00103                         }
+00104                         i++;
+00105                 }
+00106         }
+00107 
+00108         void IAgentComposite::removeChild(const IBasicAgent *p)
+00109         {                       
+00110                 std::list<IBasicAgent *>::iterator i = _AgentList.begin();
+00111                 while(i != _AgentList.end())
+00112                 {                                       
+00113                         IBasicAgent *c = *i;
+00114                         if(c == p)
+00115                         {
+00116                                 _AgentList.erase(i);                            
+00117                                 p->getMail()->removeMailBox( this->getMail() );
+00118                                 c->release();
+00119                                 _SizeChild --;
+00120                                 // Supprime chez l'ancien fils la boite au lettre du père                               
+00121                                 break;
+00122                         }
+00123                         i++;
+00124                 }
+00125         }
+00126         void IAgentComposite::deleteListe()
+00127         {
+00128                 std::list<IBasicAgent *>::iterator i = _AgentList.begin();
+00129                 while(i != _AgentList.end())
+00130                 {                               
+00131                         IBasicAgent *b = (*i++);
+00132                         b->setParent(NULL);
+00133                         b->release();                           
+00134                 }
+00135                 _SizeChild = 0;
+00136         }
+00137 
+00138         void IAgentComposite::save(NLMISC::IStream &os)
+00139         {                               
+00140                 IBasicAgent::save(os);
+00141 
+00142                 sint32 size = _AgentList.size();
+00143                 os.serial(size);
+00144                 std::list<IBasicAgent *>::const_iterator i = _AgentList.begin();
+00145                 while(i != _AgentList.end())
+00146                 {
+00147                         IBasicAgent &a = *(*i++);
+00148                         os.serial( (NLAIC::CIdentType &) a.getType() );
+00149                         a.save(os);                     
+00150                 }
+00151         }
+00152 
+00153         void IAgentComposite::load(NLMISC::IStream &is)
+00154         {                       
+00155                 deleteListe();
+00156                 IBasicAgent::load(is);
+00157                 NLAIC::CIdentTypeAlloc id;
+00158                 sint32 i;                       
+00159                 
+00160                 is.serial(i);
+00161                 _SizeChild = 0;
+00162                 while(i--)
+00163                 {
+00164                         is.serial( id );
+00165                         IBasicAgent &a = *((IBasicAgent *)id.allocClass());
+00166                         a.load(is);
+00167                         addChild(&a);
+00168                 }
+00169         }               
+00170 }
+

Generated on Tue Mar 16 06:22:39 2004 for NeL by + +doxygen +1.3.6
+ + -- cgit v1.2.1