# 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  

list_manager.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/agent.h"
00026 #include "nel/ai/agent/agent_object.h"
00027 #include "nel/ai/agent/list_manager.h"
00028 
00029 namespace NLAIAGENT
00030 {
00031 
00032 /*
00033         ########################
00034         class IListBasicManager
00035         ########################
00036 */
00037         IListBasicManager::IListBasicManager():_List(NULL)
00038         {
00039         }
00040         IListBasicManager::IListBasicManager(IBaseGroupType *l):_List(l)
00041         {
00042 
00043         }
00044 
00045         IListBasicManager::IListBasicManager(const IListBasicManager &l):_List(l._List)
00046         {
00047                 l._List->incRef();
00048         }
00049 
00050         IListBasicManager::~IListBasicManager()
00051         {
00052                 if(_List != NULL) _List->release();
00053         }
00054 
00055         void IListBasicManager::save(NLMISC::IStream &os)
00056         {
00057                 os.serial( (NLAIC::CIdentType &) _List->getType() );
00058                 os.serial( *_List );
00059         }
00060 
00061         void IListBasicManager::load(NLMISC::IStream &is)
00062         {
00063                 NLAIC::CIdentTypeAlloc id;
00064                 is.serial( id );
00065                 if(_List != NULL) _List->release();
00066                 _List = (IBaseGroupType *)id.allocClass();
00067                 is .serial( *_List );
00068         }       
00069 
00070         void IListBasicManager::getDebugString(std::string &t) const
00071         {               
00072                 std::string b;
00073                 _List->getDebugString(b);
00074                 t += NLAIC::stringGetBuild("IListBasicManager<%4x>: _List:'%s'",this,b.c_str());
00075         }
00076 
00077         IObjectIA &IListBasicManager::operator = (const IObjectIA &b)
00078         {               
00079                 IListBasicManager &a = (IListBasicManager &)b;
00080                 *_List = *a._List;
00081                 return *this;
00082         }
00083 
00084         IObjetOp &IListBasicManager::operator += (const IObjetOp &a)
00085         {
00086                 _List->cpy(a);
00087                 return *this;
00088         }
00089 
00090         IObjetOp &IListBasicManager::operator -= (const IObjetOp &a)
00091         {               
00092                 _List->erase(a);
00093                 return *this;
00094         }
00095         
00096 
00097         const IObjectIA *IListBasicManager::operator[] (sint32 index) const
00098         {       
00099 #ifdef NL_DEBUG
00100                 sint s = _List->size();
00101 #endif
00102                 return (*_List)[index];
00103         }       
00104 
00105         bool IListBasicManager::isTrue() const
00106         {
00107                 return _List->isTrue();
00108         }
00109         IObjetOp *IListBasicManager::operator ! () const
00110         {
00111                 return !(*_List);
00112         }
00113         void IListBasicManager::push(const IObjectIA *o)
00114         {
00115                 _List->push(o);
00116         }
00117 
00118         void IListBasicManager::pushFront(const IObjectIA *o)
00119         {
00120                 _List->pushFront(o);
00121         }
00122         
00123         void IListBasicManager::cpy(const IObjectIA &o)
00124         {
00125                 _List->cpy(o);
00126         }
00127         const IObjectIA *IListBasicManager::pop()
00128         {
00129                 return _List->pop();
00130         }
00131         const IObjectIA *IListBasicManager::get() const
00132         {
00133                 return _List->get();
00134         }
00135         const IObjectIA *IListBasicManager::popFront()
00136         {
00137                 return _List->popFront();
00138         }
00139         const IObjectIA *IListBasicManager::getFront() const
00140         {
00141                 return _List->getFront();
00142         }
00143         sint32 IListBasicManager::size() const
00144         {
00145                 return _List->size();
00146         }
00147 
00148         const IObjectIA *IListBasicManager::find(const IObjectIA &obj) const
00149         {
00150                 return _List->find(obj);
00151         }
00152         void IListBasicManager::eraseFirst(const IObjectIA &obj)
00153         {
00154                 _List->erase(obj);
00155         }
00156         void IListBasicManager::eraseAll(const IObjectIA &obj)
00157         {
00158                 _List->eraseAll(obj);
00159         }
00160         void IListBasicManager::erase(const IObjectIA *o)
00161         {
00162                 _List->erase(o);
00163         }
00164         void IListBasicManager::erase(const IObjectIA &obj)
00165         {
00166                 _List->erase(obj);
00167         }
00168  
00169         void IListBasicManager::erase(std::list<const IObjectIA *> &l)
00170         {
00171                 _List->erase(l);
00172         }
00173         void IListBasicManager::clear()
00174         {
00175                 _List->clear();
00176         }       
00177 
00178         bool IListBasicManager::isEqual(const IBasicObjectIA &b) const  
00179         {
00180                 IListBasicManager &a = (IListBasicManager &)b;
00181                 return _List->isEqual(*a._List);
00182         }
00183 
00184         sint32 IListBasicManager::getMethodIndexSize() const
00185         {
00186                 return IBaseGroupType::getMethodIndexSize() + 0;
00187         }
00188 
00189         tQueue IListBasicManager::isMember(const IVarName *className,const IVarName *methodName,const IObjectIA &p) const
00190         {
00191                 return IBaseGroupType::isMember(className,methodName,p);
00192         }
00193 
00194         IObjectIA::CProcessResult IListBasicManager::runMethodeMember(sint32 h, sint32 m,IObjectIA *p)
00195         {
00196                 return IBaseGroupType::runMethodeMember(h,m,p);
00197         }
00198 
00199         IObjectIA::CProcessResult IListBasicManager::runMethodeMember(sint32 m,IObjectIA *p)
00200         {
00201                 return IBaseGroupType::runMethodeMember(m,p);
00202         }
00203 
00204 /*
00205         ########################
00206         class IListManager
00207         ########################
00208 */
00209         IListManager::IListManager(IBaseGroupType *l):IListBasicManager(l)
00210         {
00211 
00212         }
00213 
00214         IListManager::IListManager(const IListManager &l):IListBasicManager(l._List)
00215         {               
00216                 l._List->incRef();
00217         }
00218 
00219         IListManager::~IListManager()
00220         {       
00221         }
00222 
00223         bool IListManager::isEqual(const IBasicObjectIA &a) const
00224         {
00225                 const IListManager &l = (const IListManager &)a;
00226                 return l._List == _List;
00227         }
00228 
00229         IObjectIA::CProcessResult IListManager::sendMessage(IObjectIA *msg)
00230         {
00231                 CIteratorContener itr = _List->getIterator();
00232 
00233                 if(itr.isInEnd())
00234                 {
00235                         msg->release();
00236                 }
00237                 else
00238                 {
00239                         while(!itr.isInEnd())
00240                         {
00241                                 IObjectIA *obj = (IObjectIA *)(itr++);
00242                                 obj->sendMessage(msg);
00243                                 if(!itr.isInEnd()) msg->incRef();
00244                         }
00245                 }
00246                 return IObjectIA::CProcessResult();
00247         }
00248 
00249 /*
00250         ########################
00251         class CVectorGroupManager
00252         ########################
00253 */
00254         CVectorGroupManager::CVectorGroupManager(sint32 i):IListManager(new CVectorGroupType(i))
00255         {
00256         }
00257 
00258         CVectorGroupManager::CVectorGroupManager():IListManager(new CVectorGroupType())
00259         {
00260         }
00261 
00262         CVectorGroupManager::CVectorGroupManager(const CVectorGroupManager &l):IListManager(l)
00263         {
00264         }
00265 
00266         CVectorGroupManager::~CVectorGroupManager()
00267         {
00268         }
00269 
00270         const NLAIC::CIdentType &CVectorGroupManager::getType() const
00271         {
00272                 return IdVectorGroupManager;
00273         }
00274 
00275         const NLAIC::IBasicType *CVectorGroupManager::clone() const
00276         {
00277                 NLAIC::IBasicType *x = new CVectorGroupManager(*this);
00278                 return x;
00279         }
00280 
00281         const NLAIC::IBasicType *CVectorGroupManager::newInstance() const
00282         {
00283                 return new CVectorGroupManager();
00284         }
00285 
00286         void CVectorGroupManager::trie()
00287         {
00288                 // TODO : Sort the agent on the ID value.
00289                 throw;
00290         }
00291 
00292         const IObjectIA *CVectorGroupManager::getObject(const CObjectIdent &) const
00293         {
00294                 // TODO
00295                 throw;
00296                 return NULL;
00297         }
00298 
00299 /*
00300         ########################
00301         class CListGroupManager
00302         ########################
00303 */
00304         CListGroupManager::CListGroupManager():IListManager(new CGroupType())
00305         {
00306         }
00307 
00308         CListGroupManager::CListGroupManager(const CListGroupManager &l):IListManager(l)
00309         {
00310         }
00311 
00312         CListGroupManager::~CListGroupManager()
00313         {
00314         }
00315 
00316         const NLAIC::CIdentType &CListGroupManager::getType() const
00317         {
00318                 return IdListGroupManager;
00319         }
00320 
00321         const NLAIC::IBasicType *CListGroupManager::clone() const
00322         {
00323                 return new CListGroupManager(*this);
00324         }
00325 
00326         const NLAIC::IBasicType *CListGroupManager::newInstance() const
00327         {
00328                 return new CListGroupManager();
00329         }
00330 
00331         void CListGroupManager::trie()
00332         {
00333                 // TODO : Sort the agent on the ID value.
00334                 throw;
00335         }
00336 
00337         const IObjectIA *CListGroupManager::getObject(const CObjectIdent &) const
00338         {
00339                 // TODO.
00340                 throw;
00341                 return NULL;
00342         }
00343 }