#include <retriever_bank.h>
Inheritance diagram for NLPACS::CRetrieverBank:

Nevrax France
Definition at line 51 of file retriever_bank.h.
Public Member Functions | |
| uint | addRetriever (const std::string &filename) |
| Loads the retriever named 'filename' (using defined search paths) and adds it to the bank. | |
| uint | addRetriever (const CLocalRetriever &retriever) |
| Adds the given retriever to the bank. | |
| void | clean () |
| Cleans the bank up. | |
| CRetrieverBank (bool allLoaded=true) | |
| Constructor. | |
| const CLocalRetriever & | getRetriever (uint n) const |
| Gets nth retriever. | |
| const std::vector< CLocalRetriever > & | getRetrievers () const |
| Returns the vector of retrievers. | |
| void | saveRetrievers (const std::string &path, const std::string &bankPrefix) |
| Write separate retrievers using dynamic filename convention. | |
| void | saveShortBank (const std::string &path, const std::string &bankPrefix, bool saveLr=true) |
| Write separate retrievers using dynamic filename convention. | |
| void | serial (NLMISC::IStream &f) |
| Serialises this CRetrieverBank. | |
| void | setLrInFileFlag (bool status) |
| Set the lr status. | |
| uint | size () const |
| Returns the number of retrievers in the bank. | |
Dynamic retrieve loading | |
| bool | allLoaded () const |
| void | diff (const std::set< uint > &newlr, std::set< uint > &in, std::set< uint > &out) |
| Diff loaded retrievers. | |
| const std::string & | getNamePrefix () const |
| bool | isLoaded (uint n) const |
| Tells if retriever is loaded. | |
| void | loadRetriever (uint n, NLMISC::IStream &s) |
| Loads nth retriever from stream. | |
| void | setNamePrefix (const char *prefix) |
| void | setRetrieverAsLoaded (uint n) |
| Insert a retriever in loaded list. | |
| void | unloadRetriever (uint n) |
| Unload nth retriever. | |
Static Public Member Functions | |
| URetrieverBank * | createRetrieverBank (const char *retrieverBank, bool loadAll=true) |
| void | deleteRetrieverBank (URetrieverBank *retrieverBank) |
Protected Attributes | |
| bool | _AllLoaded |
| All loaded ? | |
| std::set< uint > | _LoadedRetrievers |
| The loaded retrievers, if the retriever bank is not in loadAll mode. | |
| bool | _LrInRBank |
| Tells if retrievers should be read from rbank directly or streamed from disk. | |
| std::string | _NamePrefix |
| Bank name prefix. | |
| std::vector< CLocalRetriever > | _Retrievers |
| The retrievers stored in the retriever bank. | |
Friends | |
| class | URetrieverBank |
|
|
Constructor.
Definition at line 73 of file retriever_bank.h. References _AllLoaded, _LrInRBank, and allLoaded().
00073 : _AllLoaded(allLoaded), _LrInRBank(true) {} |
|
|
Loads the retriever named 'filename' (using defined search paths) and adds it to the bank.
Definition at line 94 of file retriever_bank.h. References _Retrievers, NLMISC::CIFile::close(), nldebug, NLMISC::CIFile::open(), NLPACS::CLocalRetriever::serial(), and uint.
00095 {
00096 NLMISC::CIFile input;
00097 _Retrievers.resize(_Retrievers.size()+1);
00098 CLocalRetriever &localRetriever = _Retrievers.back();
00099 nldebug("load retriever file %s", filename.c_str());
00100 input.open(filename);
00101 localRetriever.serial(input);
00102 input.close();
00103
00104 return _Retrievers.size()-1;
00105 }
|
|
|
Adds the given retriever to the bank.
Definition at line 91 of file retriever_bank.h. References _Retrievers, and uint.
00091 { _Retrievers.push_back(retriever); return _Retrievers.size()-1; }
|
|
|
Definition at line 284 of file retriever_bank.h. References _AllLoaded. Referenced by CRetrieverBank(), NLPACS::CGlobalRetriever::refreshLrAround(), and NLPACS::CGlobalRetriever::refreshLrAroundNow().
00284 { return _AllLoaded; }
|
|
|
Cleans the bank up.
Definition at line 70 of file retriever_bank.cpp. References _Retrievers, and uint.
00071 {
00072 uint i;
00073 for (i=0; i<_Retrievers.size(); ++i)
00074 {
00075 _Retrievers[i].flushFullOrderedChains();
00076 }
00077 }
|
|
||||||||||||
|
Create a retriever bank.
Definition at line 39 of file retriever_bank.cpp. References _AllLoaded, _NamePrefix, and file.
00040 {
00041 NL_ALLOC_CONTEXT( Pacs )
00042
00043 CIFile file;
00044 if (file.open( CPath::lookup(retrieverBank) ))
00045 {
00046 CRetrieverBank *bank = new CRetrieverBank();
00047
00048 bank->_AllLoaded = loadAll;
00049 bank->_NamePrefix = CFile::getFilenameWithoutExtension(retrieverBank);
00050
00051 file.serial(*bank);
00052
00053 return static_cast<URetrieverBank *>(bank);
00054 }
00055 else
00056 return NULL;
00057 }
|
|
|
Delete a retriever bank. Definition at line 60 of file retriever_bank.cpp. References r.
00061 {
00062 // Cast
00063 // nlassert (dynamic_cast<NLPACS::CRetrieverBank*>(retrieverBank));
00064 NLPACS::CRetrieverBank* r=static_cast<NLPACS::CRetrieverBank*>(retrieverBank);
00065
00066 // Delete
00067 delete r;
00068 }
|
|
||||||||||||||||
|
Diff loaded retrievers.
Definition at line 212 of file retriever_bank.h. References _LoadedRetrievers, _Retrievers, in, and uint.
00213 {
00214 std::set<uint>::iterator it;
00215
00216 for (it=_LoadedRetrievers.begin(); it!=_LoadedRetrievers.end(); ++it)
00217 {
00218 uint n = *it;
00219 if (n >= _Retrievers.size())
00220 continue;
00221 _Retrievers[n].LoadCheckFlag = true;
00222 }
00223
00224 for (it=newlr.begin(); it!=newlr.end(); ++it)
00225 {
00226 uint n = *it;
00227 if (n >= _Retrievers.size())
00228 continue;
00229 if (!_Retrievers[n].LoadCheckFlag)
00230 in.insert(n);
00231 _Retrievers[n].LoadCheckFlag = false;
00232 }
00233
00234 for (it=_LoadedRetrievers.begin(); it!=_LoadedRetrievers.end(); ++it)
00235 {
00236 uint n = *it;
00237 if (n >= _Retrievers.size())
00238 continue;
00239 if (_Retrievers[n].LoadCheckFlag)
00240 out.insert(n);
00241 _Retrievers[n].LoadCheckFlag = false;
00242 }
00243 }
|
|
|
Definition at line 278 of file retriever_bank.h. References _NamePrefix. Referenced by NLPACS::CGlobalRetriever::findCollisionChains(), NLPACS::CGlobalRetriever::refreshLrAround(), and NLPACS::CGlobalRetriever::refreshLrAroundNow().
00278 { return _NamePrefix; }
|
|
|
Gets nth retriever.
Definition at line 82 of file retriever_bank.h. References _Retrievers, nlassert, and uint. Referenced by NLPACS::CGlobalRetriever::check(), NLPACS::CGlobalRetriever::findAStarPath(), NLPACS::CGlobalRetriever::findCollisionChains(), NLPACS::CGlobalRetriever::findPath(), NLPACS::CGlobalRetriever::getMeanHeight(), NLPACS::CGlobalRetriever::getRetriever(), NLPACS::CGlobalRetriever::getSurfaceById(), NLPACS::CGlobalRetriever::initAll(), NLPACS::CGlobalRetriever::retrievePosition(), NLPACS::CGlobalRetriever::testCollisionWithCollisionChains(), and NLPACS::CGlobalRetriever::testMovementWithCollisionChains().
00083 {
00084 nlassert(n < _Retrievers.size());
00085 /* if (!_Retrievers[n].isLoaded())
00086 nlwarning("Trying to access rbank '%s', retriever %d not loaded", _NamePrefix.c_str(), n); */
00087 return _Retrievers[n];
00088 }
|
|
|
Returns the vector of retrievers.
Definition at line 76 of file retriever_bank.h. References _Retrievers. Referenced by NLPACS::CGlobalRetriever::check(), NLPACS::CGlobalRetriever::getIdentifier(), and NLPACS::CGlobalRetriever::makeLinks().
00076 { return _Retrievers; }
|
|
|
Tells if retriever is loaded.
Definition at line 287 of file retriever_bank.h. References _Retrievers, and uint. Referenced by NLPACS::CGlobalRetriever::selectInstances().
00288 {
00289 return (n < _Retrievers.size() && _Retrievers[n].isLoaded());
00290 }
|
|
||||||||||||
|
Loads nth retriever from stream.
Definition at line 246 of file retriever_bank.h. References _AllLoaded, _LoadedRetrievers, _NamePrefix, _Retrievers, nlwarning, s, and uint.
00247 {
00248 if (_AllLoaded || n >= _Retrievers.size() || _Retrievers[n].isLoaded())
00249 {
00250 nlwarning("RetrieverBank '%s' asked to load retriever %n whereas not needed, aborted", _NamePrefix.c_str(), n);
00251 return;
00252 }
00253
00254 s.serial(_Retrievers[n]);
00255 _LoadedRetrievers.insert(n);
00256 }
|
|
||||||||||||
|
Write separate retrievers using dynamic filename convention.
Definition at line 185 of file retriever_bank.h. References _Retrievers, NLMISC::IStream::serial(), and uint. Referenced by saveShortBank().
00186 {
00187 uint i;
00188 for (i=0; i<_Retrievers.size(); ++i)
00189 {
00190 NLMISC::COFile f(NLMISC::CPath::standardizePath(path) + bankPrefix + "_" + NLMISC::toString(i) + ".lr");
00191 f.serial(_Retrievers[i]);
00192 }
00193 }
|
|
||||||||||||||||
|
Write separate retrievers using dynamic filename convention.
Definition at line 196 of file retriever_bank.h. References _LrInRBank, saveRetrievers(), and serial().
00197 {
00198 NLMISC::COFile f(NLMISC::CPath::standardizePath(path) + bankPrefix + ".rbank");
00199
00200 _LrInRBank = false;
00201
00202 serial(f);
00203
00204 if (saveLr)
00205 saveRetrievers(path, bankPrefix);
00206 }
|
|
|
Serialises this CRetrieverBank.
Definition at line 114 of file retriever_bank.h. References _AllLoaded, _LrInRBank, _NamePrefix, _Retrievers, NLMISC::IStream::isReading(), NLMISC::CPath::lookup(), nlinfo, nlwarning, num, NLMISC::IStream::serial(), NLMISC::IStream::serialCont(), NLMISC::IStream::serialVersion(), uint, and uint32. Referenced by saveShortBank().
00115 {
00116 /*
00117 Version 0:
00118 - base version.
00119 Version 1:
00120 - saves & loads lr in rbank only if bool LrInFile true
00121 */
00122 uint ver = f.serialVersion(1);
00123
00124 bool lrPresent = true;
00125 if (ver > 0)
00126 {
00127 lrPresent = _LrInRBank;
00128 f.serial(lrPresent);
00129 }
00130
00131 if (f.isReading())
00132 {
00133 if (!_AllLoaded)
00134 {
00135 uint32 num = 0;
00136 f.serial(num);
00137 nlinfo("Presetting RetrieverBank '%s', %d retriever slots allocated", _NamePrefix.c_str(), num);
00138 _Retrievers.resize(num);
00139 }
00140 else if (lrPresent)
00141 {
00142 f.serialCont(_Retrievers);
00143 }
00144 else
00145 {
00146 uint32 num = 0;
00147 f.serial(num);
00148 _Retrievers.resize(num);
00149
00150 uint i;
00151 for (i=0; i<num; ++i)
00152 {
00153 std::string fname = NLMISC::CPath::lookup(_NamePrefix + "_" + NLMISC::toString(i) + ".lr", false, true);
00154 if (fname == "")
00155 continue;
00156
00157 NLMISC::CIFile f(fname);
00158 try
00159 {
00160 f.serial(_Retrievers[i]);
00161 }
00162 catch (NLMISC::Exception &e)
00163 {
00164 nlwarning("Couldn't load retriever file '%s', %s", fname.c_str(), e.what());
00165 _Retrievers[i].clear();
00166 }
00167 }
00168 }
00169 }
00170 else
00171 {
00172 if (lrPresent)
00173 {
00174 f.serialCont(_Retrievers);
00175 }
00176 else
00177 {
00178 uint32 num = _Retrievers.size();
00179 f.serial(num);
00180 }
00181 }
00182 }
|
|
|
Set the lr status.
Definition at line 111 of file retriever_bank.h. References _LrInRBank.
00111 { _LrInRBank = status; }
|
|
|
Definition at line 281 of file retriever_bank.h. References _NamePrefix.
00281 { _NamePrefix = prefix; }
|
|
|
Insert a retriever in loaded list.
Definition at line 259 of file retriever_bank.h. References _LoadedRetrievers, and uint.
00260 {
00261 _LoadedRetrievers.insert(n);
00262 }
|
|
|
Returns the number of retrievers in the bank.
Definition at line 79 of file retriever_bank.h. References _Retrievers, and uint.
00079 { return _Retrievers.size(); }
|
|
|
Unload nth retriever.
Definition at line 265 of file retriever_bank.h. References _AllLoaded, _LoadedRetrievers, _NamePrefix, _Retrievers, nlwarning, and uint.
00266 {
00267 if (_AllLoaded || n >= _Retrievers.size() || !_Retrievers[n].isLoaded())
00268 {
00269 nlwarning("RetrieverBank '%s' asked to unload retriever %n whereas not needed, aborted", _NamePrefix.c_str(), n);
00270 return;
00271 }
00272
00273 _Retrievers[n].clear();
00274 _LoadedRetrievers.erase(n);
00275 }
|
|
|
Definition at line 53 of file retriever_bank.h. |
|
|
All loaded ?
Definition at line 60 of file retriever_bank.h. Referenced by allLoaded(), NLPACS::URetrieverBank::createRetrieverBank(), CRetrieverBank(), loadRetriever(), serial(), and unloadRetriever(). |
|
|
The loaded retrievers, if the retriever bank is not in loadAll mode.
Definition at line 66 of file retriever_bank.h. Referenced by diff(), loadRetriever(), setRetrieverAsLoaded(), and unloadRetriever(). |
|
|
Tells if retrievers should be read from rbank directly or streamed from disk.
Definition at line 69 of file retriever_bank.h. Referenced by CRetrieverBank(), saveShortBank(), serial(), and setLrInFileFlag(). |
|
|
Bank name prefix.
Definition at line 63 of file retriever_bank.h. Referenced by NLPACS::URetrieverBank::createRetrieverBank(), getNamePrefix(), loadRetriever(), serial(), setNamePrefix(), and unloadRetriever(). |
|
|
The retrievers stored in the retriever bank.
Definition at line 57 of file retriever_bank.h. Referenced by addRetriever(), clean(), diff(), getRetriever(), getRetrievers(), isLoaded(), loadRetriever(), saveRetrievers(), serial(), size(), and unloadRetriever(). |
1.3.6