Merge branch 'fixes' into main/rendor-staging
[ryzomcore.git] / nel / src / misc / cdb.cpp
blob445ec8dcf3860a042bcc43017b38bd55425edf69
1 // Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/>
2 // Copyright (C) 2010 Winch Gate Property Limited
3 //
4 // This source file has been modified by the following contributors:
5 // Copyright (C) 2013 Laszlo KIS-ADAM (dfighter) <dfighter1985@gmail.com>
6 //
7 // This program is free software: you can redistribute it and/or modify
8 // it under the terms of the GNU Affero General Public License as
9 // published by the Free Software Foundation, either version 3 of the
10 // License, or (at your option) any later version.
12 // This program is distributed in the hope that it will be useful,
13 // but WITHOUT ANY WARRANTY; without even the implied warranty of
14 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 // GNU Affero General Public License for more details.
17 // You should have received a copy of the GNU Affero General Public License
18 // along with this program. If not, see <http://www.gnu.org/licenses/>.
20 #include "stdmisc.h"
22 //////////////
23 // Includes //
24 //////////////
25 #include "nel/misc/cdb.h"
26 #include "nel/misc/cdb_branch.h"
27 #include "nel/misc/bit_mem_stream.h"
29 ////////////////
30 // Namespaces //
31 ////////////////
32 using namespace std;
34 #ifdef DEBUG_NEW
35 #define new DEBUG_NEW
36 #endif
38 namespace NLMISC{
40 CStringMapper *ICDBNode::_DBSM = NULL;
41 bool ICDBNode::verboseDatabase = false;
44 std::string ICDBNode::getFullName()
46 CSString sTmp;
47 sTmp.reserve(256);
48 _buildFullName(sTmp);
49 return sTmp;
50 // CCDBNodeBranch *pParent = getParent();
51 // if (pParent == NULL)
52 // return _DBSM->localUnmap(_Name);
53 // CSString sTmp;
54 // _buildFullName(sTmp);
55 // sTmp << ":" << sTmp;
56 // return sTmp;
58 // // climb the parent hierarchie
59 // while (pParent->getParent() != NULL)
60 // pParent = pParent->getParent();
62 // // now build the full name in desc order
63 // while (p)
65 // while (pParent->getParent() != NULL)
66 // {
67 // sTmp = *pParent->getName()) << ":" << sTmp;
68 // pParent = pParent->getParent();
69 // }
70 // return sTmp;
73 void ICDBNode::_buildFullName(CSString &fullName)
75 // we do not want to recurse up to the ROOT node - we stop 1 level down from the root
76 if (getParent() != NULL && getParent()->getParent() != NULL)
78 getParent()->_buildFullName(fullName);
79 fullName << ":" << _DBSM->localUnmap(_Name);
81 else
82 fullName = _DBSM->localUnmap(_Name);
85 void ICDBNode::releaseStringMapper()
87 if( _DBSM )
88 delete _DBSM;
89 _DBSM = NULL;