diff --git a/code/nel/include/nel/misc/cdb_manager.h b/code/nel/include/nel/misc/cdb_manager.h
new file mode 100644
index 000000000..de6ccd20f
--- /dev/null
+++ b/code/nel/include/nel/misc/cdb_manager.h
@@ -0,0 +1,184 @@
+// Ryzom - MMORPG Framework
+// Copyright (C) 2010 Winch Gate Property Limited
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as
+// published by the Free Software Foundation, either version 3 of the
+// License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with this program. If not, see .
+
+
+#ifndef CDB_MANAGER_H
+#define CDB_MANAGER_H
+
+#include "nel/misc/cdb_branch.h"
+#include "nel/misc/cdb_leaf.h"
+#include "nel/misc/cdb_bank_handler.h"
+#include "nel/misc/cdb_branch_observing_handler.h"
+
+namespace NLMISC{
+
+ /// Class that encapsulates the separate CDB components
+ class CCDBManager{
+
+ public:
+ /**
+ The constructor
+ @param maxBanks - The maximum number of banks to be used
+
+ */
+ CCDBManager( const char *rootNodeName, uint maxBanks );
+
+ ~CCDBManager();
+
+
+ /**
+ Returns the specified leaf node from the database.
+ @param name The name of the leaf node.
+ @param create Specifies if the node should be created if it doesn't exist yet.
+
+ */
+ CCDBNodeLeaf* getDbLeaf( const std::string &name, bool create = true );
+
+
+
+ /**
+ Returns the specified branch node from the database.
+ @param name The name of the branch.
+
+ */
+ CCDBNodeBranch* getDbBranch( const std::string &name );
+
+
+ /**
+ Deletes the specified database node.
+ @param name The name of the database node.
+
+ */
+ void delDbNode( const std::string &name );
+
+ /**
+ Adds an observer to a branch of the database.
+ @param branchName The name of the branch we want to observe
+ @param observer The observer we want to add
+ @param positiveLeafNameFilter A vector of strings containing the names of the leaves we want to observe
+
+ */
+ void addBranchObserver( const char *branchName, ICDBNode::IPropertyObserver *observer, const std::vector< std::string >& positiveLeafNameFilter = std::vector< std::string >() );
+
+ /**
+ Adds an observer to a branch of the database.
+ @param branch The branch we want to observe
+ @param observer The observer we want to add
+ @param positiveLeafNameFilter A vector of strings containing the names of the leaves we want to observe
+
+ */
+ void addBranchObserver( CCDBNodeBranch *branch, ICDBNode::IPropertyObserver *observer, const std::vector< std::string >& positiveLeafNameFilter = std::vector< std::string >() );
+
+
+ /**
+ Adds an observer to a branch of the database.
+ @param branchName The name of the branch we start from
+ @param dbPathFromThisNode The path to the branch we want to observe
+ @param observer The observer we want to add
+ @param positiveLeafNameFilter An array of strings containing the names of the leaves we want to observe
+ @param positiveLeafNameFilterSize The size of the array
+
+ */
+ void addBranchObserver( const char *branchName, const char *dbPathFromThisNode, ICDBNode::IPropertyObserver &observer, const char **positiveLeafNameFilter = NULL, uint positiveLeafNameFilterSize = 0 );
+
+
+ /**
+ Adds an observer to a branch of the database.
+ @param branch The branch we start from
+ @param dbPathFromThisNode The path to the branch we want to observe
+ @param observer The observer we want to add
+ @param positiveLeafNameFilter An array of strings containing the names of the leaves we want to observe
+ @param positiveLeafNameFilterSize The size of the array
+
+ */
+ void addBranchObserver( CCDBNodeBranch *branch, const char *dbPathFromThisNode, ICDBNode::IPropertyObserver &observer, const char **positiveLeafNameFilter, uint positiveLeafNameFilterSize );
+
+
+ /**
+ Removes an observer from a branch in the database.
+ @param branchName The name of the branch
+ @param observer The observer we want to remove
+
+ */
+ void removeBranchObserver( const char *branchName, ICDBNode::IPropertyObserver* observer );
+
+
+ /**
+ Removes an observer from a branch in the database.
+ @param branch The branch
+ @param observer The observer we want to remove
+
+ */
+ void removeBranchObserver( CCDBNodeBranch *branch, ICDBNode::IPropertyObserver* observer );
+
+
+ /**
+ Removes an observer from a branch in the database.
+ @param branchName The name of the branch we start from
+ @param dbPathFromThisNode The path to the branch we want to observe from the starting branch
+ @param observer The observer we want to remove
+
+ */
+ void removeBranchObserver( const char *branchName, const char *dbPathFromThisNode, ICDBNode::IPropertyObserver &observer );
+
+
+ /**
+ Removes an observer from a branch in the database.
+ @param branchName The name of the branch we start from
+ @param dbPathFromThisNode The path to the branch we want to observe from the starting branch
+ @param observer The observer we want to remove
+
+ */
+ void removeBranchObserver( CCDBNodeBranch *branch, const char *dbPathFromThisNode, ICDBNode::IPropertyObserver &observer );
+
+
+ /**
+ Adds a branch observer call flush observer. ( These are notified after the branch observers are notified )
+ @param observer The observer
+
+ */
+ void addFlushObserver( CCDBBranchObservingHandler::IBranchObserverCallFlushObserver *observer );
+
+
+ /**
+ Removes a branch observer call flush observer.
+ @param observer The observer
+ */
+ void removeFlushObserver( CCDBBranchObservingHandler::IBranchObserverCallFlushObserver *observer );
+
+ /**
+ Notifies the observers whose observed branches were updated.
+ */
+ void flushObserverCalls();
+
+ /**
+ Resets the specified bank.
+ @param gc GameCycle ( no idea what it is exactly, probably some time value )
+ @param bank The banks we want to reset
+
+ */
+ void resetBank( uint gc, uint bank );
+
+ protected:
+ CCDBBankHandler bankHandler;
+ CCDBBranchObservingHandler branchObservingHandler;
+ CRefPtr< CCDBNodeBranch > _Database;
+ };
+
+}
+
+#endif
+
diff --git a/code/nel/src/misc/cdb_manager.cpp b/code/nel/src/misc/cdb_manager.cpp
new file mode 100644
index 000000000..a13527217
--- /dev/null
+++ b/code/nel/src/misc/cdb_manager.cpp
@@ -0,0 +1,149 @@
+// Ryzom - MMORPG Framework
+// Copyright (C) 2010 Winch Gate Property Limited
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as
+// published by the Free Software Foundation, either version 3 of the
+// License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with this program. If not, see .
+
+#include "nel/misc/cdb_manager.h"
+
+namespace NLMISC{
+
+ CCDBManager::CCDBManager( const char *rootNodeName, uint maxBanks ) : bankHandler( maxBanks )
+ {
+ _Database = new CCDBNodeBranch( std::string( rootNodeName ) );
+ }
+
+ CCDBManager::~CCDBManager()
+ {
+ if( _Database != NULL )
+ {
+ _Database->clear();
+ delete _Database;
+ _Database = NULL;
+ }
+ }
+
+ CCDBNodeLeaf* CCDBManager::getDbLeaf( const std::string &name, bool create )
+ {
+ if( name.empty() )
+ return NULL;
+
+ CCDBNodeLeaf *leaf = NULL;
+ leaf = dynamic_cast< CCDBNodeLeaf* >( _Database->getNode( ICDBNode::CTextId( name ), create ) );
+ return leaf;
+ }
+
+ CCDBNodeBranch* CCDBManager::getDbBranch( const std::string &name )
+ {
+ if( name.empty() )
+ return NULL;
+
+ CCDBNodeBranch *branch = NULL;
+ branch = dynamic_cast< CCDBNodeBranch* >( _Database->getNode( ICDBNode::CTextId( name ), false ) );
+ return branch;
+ }
+
+
+ void CCDBManager::delDbNode( const stlpx_std::string &name )
+ {
+ if( name.empty() )
+ return;
+
+ _Database->removeNode( ICDBNode::CTextId( name ) );
+ }
+
+ void CCDBManager::addBranchObserver( const char *branchName, ICDBNode::IPropertyObserver *observer, const std::vector< std::string >& positiveLeafNameFilter )
+ {
+ CCDBNodeBranch *b = dynamic_cast< CCDBNodeBranch* >( _Database->getNode( ICDBNode::CTextId( std::string( branchName ) ), false ) );
+ if( b == NULL )
+ return;
+ branchObservingHandler.addBranchObserver( b, observer, positiveLeafNameFilter );
+ }
+
+ void CCDBManager::addBranchObserver( CCDBNodeBranch *branch, ICDBNode::IPropertyObserver *observer, const std::vector< std::string >& positiveLeafNameFilter )
+ {
+ if( branch == NULL )
+ return;
+ branchObservingHandler.addBranchObserver( branch, observer, positiveLeafNameFilter );
+ }
+
+ void CCDBManager::addBranchObserver( const char *branchName, const char *dbPathFromThisNode, ICDBNode::IPropertyObserver &observer, const char **positiveLeafNameFilter, uint positiveLeafNameFilterSize )
+ {
+ CCDBNodeBranch *b = dynamic_cast< CCDBNodeBranch* >( _Database->getNode( ICDBNode::CTextId( std::string( branchName ) ), false ) );
+ if( b == NULL )
+ return;
+ branchObservingHandler.addBranchObserver( b, dbPathFromThisNode, observer, positiveLeafNameFilter, positiveLeafNameFilterSize );
+ }
+
+ void CCDBManager::addBranchObserver( CCDBNodeBranch *branch, const char *dbPathFromThisNode, ICDBNode::IPropertyObserver &observer, const char **positiveLeafNameFilter, uint positiveLeafNameFilterSize )
+ {
+ if( branch == NULL )
+ return;
+ branchObservingHandler.addBranchObserver( branch, dbPathFromThisNode, observer, positiveLeafNameFilter, positiveLeafNameFilterSize );
+ }
+
+ void CCDBManager::removeBranchObserver( const char *branchName, ICDBNode::IPropertyObserver* observer )
+ {
+ CCDBNodeBranch *b = dynamic_cast< CCDBNodeBranch* >( _Database->getNode( ICDBNode::CTextId( std::string( branchName ) ), false ) );
+ if( b == NULL )
+ return;
+ branchObservingHandler.removeBranchObserver( b, observer );
+ }
+
+ void CCDBManager::removeBranchObserver( CCDBNodeBranch *branch, ICDBNode::IPropertyObserver* observer )
+ {
+ if( branch == NULL )
+ return;
+ branchObservingHandler.removeBranchObserver( branch, observer );
+ }
+
+ void CCDBManager::removeBranchObserver( const char *branchName, const char *dbPathFromThisNode, ICDBNode::IPropertyObserver &observer )
+ {
+ CCDBNodeBranch *b = dynamic_cast< CCDBNodeBranch* >( _Database->getNode( ICDBNode::CTextId( std::string( branchName ) ), false ) );
+ if( b == NULL )
+ return;
+ branchObservingHandler.removeBranchObserver( b, dbPathFromThisNode, observer );
+ }
+
+ void CCDBManager::removeBranchObserver( CCDBNodeBranch *branch, const char *dbPathFromThisNode, ICDBNode::IPropertyObserver &observer )
+ {
+ if( branch == NULL )
+ return;
+ branchObservingHandler.removeBranchObserver( branch, dbPathFromThisNode, observer );
+ }
+
+ void CCDBManager::addFlushObserver( CCDBBranchObservingHandler::IBranchObserverCallFlushObserver *observer )
+ {
+ if( observer == NULL )
+ return;
+ branchObservingHandler.addFlushObserver( observer );
+ }
+
+ void CCDBManager::removeFlushObserver( CCDBBranchObservingHandler::IBranchObserverCallFlushObserver *observer )
+ {
+ if( observer == NULL )
+ return;
+ branchObservingHandler.removeFlushObserver( observer );
+ }
+
+ void CCDBManager::flushObserverCalls()
+ {
+ branchObservingHandler.flushObserverCalls();
+ }
+
+ void CCDBManager::resetBank( uint gc, uint bank )
+ {
+ _Database->resetNode( gc, bankHandler.getUIDForBank( bank ) );
+ }
+
+}
diff --git a/code/ryzom/client/src/cdb_synchronised.cpp b/code/ryzom/client/src/cdb_synchronised.cpp
index 9aee26da8..2a161d295 100644
--- a/code/ryzom/client/src/cdb_synchronised.cpp
+++ b/code/ryzom/client/src/cdb_synchronised.cpp
@@ -58,7 +58,7 @@ uint32 NbDatabaseChanges = 0;
// CCDBSynchronised
//
//-----------------------------------------------
-CCDBSynchronised::CCDBSynchronised() : _Database(0), _InitInProgress(true), _InitDeltaReceived(0), bankHandler( NB_CDB_BANKS )
+CCDBSynchronised::CCDBSynchronised() : _InitInProgress(true), _InitDeltaReceived(0), CCDBManager( "SERVER", NB_CDB_BANKS )
{
}
@@ -82,7 +82,8 @@ void CCDBSynchronised::init( const string &fileName, NLMISC::IProgressCallback &
//Parse the parser output!!!
bankHandler.resetNodeBankMapping(); // in case the game is restarted from start
bankHandler.fillBankNames( CDBBankNames, INVALID_CDB_BANK + 1 );
- _Database = new CCDBNodeBranch("SERVER");
+ if( _Database == NULL )
+ _Database = new CCDBNodeBranch( "SERVER" );
_Database->init( read.getRootNode (), progressCallBack, true, &bankHandler );
}
}
@@ -305,7 +306,7 @@ void CCDBSynchronised::clear()
{
_Database->clear();
delete _Database;
- _Database = 0;
+ _Database = NULL;
}
// clear CCDBNodeBranch static data
@@ -324,93 +325,6 @@ void CCDBSynchronised::writeInitInProgressIntoUIDB()
}
-void CCDBSynchronised::resetBank( uint gc, uint bank ){
- _Database->resetNode( gc, bankHandler.getUIDForBank( bank ) );
-}
-
-void CCDBSynchronised::addBranchObserver( const char *branchName, NLMISC::ICDBNode::IPropertyObserver *observer, const std::vector< std::string >& positiveLeafNameFilter )
-{
- CCDBNodeBranch *b = dynamic_cast< CCDBNodeBranch* >( _Database->getNode( ICDBNode::CTextId( std::string( branchName ) ), false ) );
- if( b == NULL )
- return;
-
- branchObservingHandler.addBranchObserver( b, observer, positiveLeafNameFilter );
-}
-
-void CCDBSynchronised::addBranchObserver( NLMISC::CCDBNodeBranch *branch, NLMISC::ICDBNode::IPropertyObserver *observer, const std::vector< std::string >& positiveLeafNameFilter )
-{
- if( branch == NULL )
- return;
-
- branchObservingHandler.addBranchObserver( branch, observer, positiveLeafNameFilter );
-}
-
-void CCDBSynchronised::addBranchObserver( const char *branchName, const char *dbPathFromThisNode, NLMISC::ICDBNode::IPropertyObserver &observer, const char **positiveLeafNameFilter, uint positiveLeafNameFilterSize )
-{
- CCDBNodeBranch *b = dynamic_cast< CCDBNodeBranch* >( _Database->getNode( ICDBNode::CTextId( std::string( branchName ) ), false ) );
- if( b == NULL )
- return;
-
- branchObservingHandler.addBranchObserver( b, dbPathFromThisNode, observer, positiveLeafNameFilter, positiveLeafNameFilterSize );
-}
-
-void CCDBSynchronised::addBranchObserver( NLMISC::CCDBNodeBranch *branch, const char *dbPathFromThisNode, NLMISC::ICDBNode::IPropertyObserver &observer, const char **positiveLeafNameFilter, uint positiveLeafNameFilterSize )
-{
- if( branch == NULL )
- return;
- branchObservingHandler.addBranchObserver( branch, dbPathFromThisNode, observer, positiveLeafNameFilter, positiveLeafNameFilterSize );
-}
-
-void CCDBSynchronised::removeBranchObserver( const char *branchName, NLMISC::ICDBNode::IPropertyObserver* observer )
-{
- CCDBNodeBranch *b = dynamic_cast< CCDBNodeBranch* >( _Database->getNode( ICDBNode::CTextId( std::string( branchName ) ), false ) );
- if( b == NULL )
- return;
- branchObservingHandler.removeBranchObserver( b, observer );
-}
-
-void CCDBSynchronised::removeBranchObserver( NLMISC::CCDBNodeBranch *branch, NLMISC::ICDBNode::IPropertyObserver* observer )
-{
- if( branch == NULL )
- return;
- branchObservingHandler.removeBranchObserver( branch, observer );
-}
-
-void CCDBSynchronised::removeBranchObserver( const char *branchName, const char *dbPathFromThisNode, NLMISC::ICDBNode::IPropertyObserver &observer )
-{
- CCDBNodeBranch *b = dynamic_cast< CCDBNodeBranch* >( _Database->getNode( ICDBNode::CTextId( std::string( branchName ) ), false ) );
- if( b == NULL )
- return;
- branchObservingHandler.removeBranchObserver( b, dbPathFromThisNode, observer );
-}
-
-void CCDBSynchronised::removeBranchObserver( NLMISC::CCDBNodeBranch *branch, const char *dbPathFromThisNode, NLMISC::ICDBNode::IPropertyObserver &observer )
-{
- if( branch == NULL )
- return;
- branchObservingHandler.removeBranchObserver( branch, dbPathFromThisNode, observer );
-}
-
-void CCDBSynchronised::addFlushObserver( NLMISC::CCDBBranchObservingHandler::IBranchObserverCallFlushObserver *observer )
-{
- if( observer == NULL )
- return;
- branchObservingHandler.addFlushObserver( observer );
-}
-
-void CCDBSynchronised::removeFlushObserver( NLMISC::CCDBBranchObservingHandler::IBranchObserverCallFlushObserver *observer )
-{
- if( observer == NULL )
- return;
- branchObservingHandler.removeFlushObserver( observer );
-}
-
-void CCDBSynchronised::flushObserverCalls()
-{
- branchObservingHandler.flushObserverCalls();
-}
-
-
#ifdef TRACE_READ_DELTA
#undef TRACE_READ_DELTA
#endif
diff --git a/code/ryzom/client/src/cdb_synchronised.h b/code/ryzom/client/src/cdb_synchronised.h
index f7c21f01b..cc151cbcb 100644
--- a/code/ryzom/client/src/cdb_synchronised.h
+++ b/code/ryzom/client/src/cdb_synchronised.h
@@ -22,8 +22,7 @@
#include "nel/misc/cdb.h"
#include "nel/misc/cdb_branch.h"
-#include "nel/misc/cdb_bank_handler.h"
-#include "nel/misc/cdb_branch_observing_handler.h"
+#include "nel/misc/cdb_manager.h"
/**
* Class to manage a database of properties
@@ -31,11 +30,8 @@
* \author Nevrax France
* \date 2002
*/
-class CCDBSynchronised
+class CCDBSynchronised : public NLMISC::CCDBManager
{
- /// database
- NLMISC::CRefPtr _Database;
-
/// string associations
std::map _Strings;
@@ -146,8 +142,6 @@ public:
}
}
- void resetBank( uint gc, uint bank );
-
private:
friend void impulseDatabaseInitPlayer( NLMISC::CBitMemStream &impulse );
@@ -157,22 +151,6 @@ private:
bool allInitPacketReceived() const { return _InitDeltaReceived == 2; } // Classic database + inventory
void writeInitInProgressIntoUIDB();
-
- NLMISC::CCDBBankHandler bankHandler;
- NLMISC::CCDBBranchObservingHandler branchObservingHandler;
-
-public:
- void addBranchObserver( const char *branchName, NLMISC::ICDBNode::IPropertyObserver *observer, const std::vector< std::string >& positiveLeafNameFilter = std::vector< std::string >() );
- void addBranchObserver( NLMISC::CCDBNodeBranch *branch, NLMISC::ICDBNode::IPropertyObserver *observer, const std::vector< std::string >& positiveLeafNameFilter = std::vector< std::string >() );
- void addBranchObserver( const char *branchName, const char *dbPathFromThisNode, NLMISC::ICDBNode::IPropertyObserver &observer, const char **positiveLeafNameFilter = NULL, uint positiveLeafNameFilterSize = 0 );
- void addBranchObserver( NLMISC::CCDBNodeBranch *branch, const char *dbPathFromThisNode, NLMISC::ICDBNode::IPropertyObserver &observer, const char **positiveLeafNameFilter, uint positiveLeafNameFilterSize );
- void removeBranchObserver( const char *branchName, NLMISC::ICDBNode::IPropertyObserver* observer );
- void removeBranchObserver( NLMISC::CCDBNodeBranch *branch, NLMISC::ICDBNode::IPropertyObserver* observer );
- void removeBranchObserver( const char *branchName, const char *dbPathFromThisNode, NLMISC::ICDBNode::IPropertyObserver &observer );
- void removeBranchObserver( NLMISC::CCDBNodeBranch *branch, const char *dbPathFromThisNode, NLMISC::ICDBNode::IPropertyObserver &observer );
- void addFlushObserver( NLMISC::CCDBBranchObservingHandler::IBranchObserverCallFlushObserver *observer );
- void removeFlushObserver( NLMISC::CCDBBranchObservingHandler::IBranchObserverCallFlushObserver *observer );
- void flushObserverCalls();
};
diff --git a/code/ryzom/client/src/interface_v3/interface_manager.cpp b/code/ryzom/client/src/interface_v3/interface_manager.cpp
index 5cb70e401..fa1fdd335 100644
--- a/code/ryzom/client/src/interface_v3/interface_manager.cpp
+++ b/code/ryzom/client/src/interface_v3/interface_manager.cpp
@@ -103,6 +103,8 @@
#include "../client_chat_manager.h" // for emotes
#include "../entities.h"
+#include "../../common/src/game_share/ryzom_database_banks.h"
+
#include "chat_text_manager.h"
#include "../npc_icon.h"
@@ -253,10 +255,9 @@ int CInterfaceManager::DebugTrackGroupsGetId( CInterfaceGroup *pIG )
#endif // AJM_DEBUG_TRACK_INTERFACE_GROUPS
// ------------------------------------------------------------------------------------------------
-CInterfaceManager::CInterfaceManager()
+CInterfaceManager::CInterfaceManager() : NLMISC::CCDBManager( "ROOT", NB_CDB_BANKS )
{
_Instance = this;
- _DbRootNode = new CCDBNodeBranch("ROOT");
interfaceLinkUpdater = new CInterfaceLink::CInterfaceLinkUpdater();
_ScreenW = _ScreenH = 0;
_LastInGameScreenW = _LastInGameScreenH = 0;
@@ -361,10 +362,11 @@ CInterfaceManager::~CInterfaceManager()
_Templates.clear();
_Instance = NULL;
- if (_DbRootNode)
+ if (_Database)
{
- delete _DbRootNode;
- _DbRootNode = NULL;
+ _Database->clear();
+ delete _Database;
+ _Database = NULL;
}
// release the local string mapper
@@ -502,7 +504,7 @@ void CInterfaceManager::uninitLogin()
CInterfaceLink::removeAllLinks();
ICDBNode::CTextId textId("UI");
- _DbRootNode->removeNode(textId);
+ _Database->removeNode(textId);
{
uninitActions();
@@ -597,7 +599,7 @@ void CInterfaceManager::uninitOutGame()
disableModalWindow();
- //_DbRootNode->display("");
+ //_Database->display("");
CBotChatManager::getInstance()->setCurrPage(NULL);
CInterfaceItemEdition::getInstance()->setCurrWindow(NULL);
@@ -627,7 +629,7 @@ void CInterfaceManager::uninitOutGame()
//nlinfo ("%d seconds for removeAllLinks", (uint32)(ryzomGetLocalTime ()-initStart)/1000);
initStart = ryzomGetLocalTime ();
ICDBNode::CTextId textId("UI");
- _DbRootNode->removeNode(textId);
+ _Database->removeNode(textId);
//nlinfo ("%d seconds for removeNode", (uint32)(ryzomGetLocalTime ()-initStart)/1000);
// Init the action manager
@@ -1160,7 +1162,7 @@ void CInterfaceManager::uninitInGame1 ()
// remove DB entry
ICDBNode::CTextId textId("UI");
- _DbRootNode->removeNode(textId);
+ _Database->removeNode(textId);
// Uninit the action manager
{
@@ -3327,13 +3329,13 @@ void CInterfaceManager::updateAllLocalisedElements()
// ------------------------------------------------------------------------------------------------
bool CInterfaceManager::addDBObserver (ICDBNode::IPropertyObserver* observer, ICDBNode::CTextId id)
{
- return _DbRootNode->addObserver(observer, id);
+ return _Database->addObserver(observer, id);
}
// ------------------------------------------------------------------------------------------------
bool CInterfaceManager::removeDBObserver (ICDBNode::IPropertyObserver* observer, ICDBNode::CTextId id)
{
- return _DbRootNode->removeObserver(observer, id);
+ return _Database->removeObserver(observer, id);
}
// ------------------------------------------------------------------------------------------------
@@ -3431,26 +3433,13 @@ sint32 CInterfaceManager::getDbValue32 (const std::string & name)
// ------------------------------------------------------------------------------------------------
CCDBNodeLeaf* CInterfaceManager::getDbProp(const std::string & name, bool bCreate)
{
- if (name.empty()) return NULL;
- CCDBNodeLeaf *pDBNL = NULL;
- pDBNL = dynamic_cast(_DbRootNode->getNode( ICDBNode::CTextId(name), bCreate ));
- return pDBNL;
+ return getDbLeaf( name, bCreate );
}
// ------------------------------------------------------------------------------------------------
void CInterfaceManager::delDbProp(const std::string & name)
{
- if (name.empty()) return;
- _DbRootNode->removeNode( ICDBNode::CTextId(name) );
-}
-
-// ------------------------------------------------------------------------------------------------
-CCDBNodeBranch *CInterfaceManager::getDbBranch(const std::string &name)
-{
- if (name.empty()) return NULL;
- CCDBNodeBranch *nodeBranch;
- nodeBranch = dynamic_cast(_DbRootNode->getNode( ICDBNode::CTextId(name), false ));
- return nodeBranch;
+ delDbNode( name );
}
// ------------------------------------------------------------------------------------------------
@@ -6113,7 +6102,7 @@ void CInterfaceManager::createLocalBranch(const std::string &fileName, NLMISC::I
//Parse the parser output!!!
CCDBNodeBranch *localNode = new CCDBNodeBranch("LOCAL");
localNode->init( read.getRootNode (), progressCallBack );
- _DbRootNode->attachChild(localNode,"LOCAL");
+ _Database->attachChild(localNode,"LOCAL");
// Create the observers for auto-copy SERVER->LOCAL of inventory
ServerToLocalAutoCopyInventory.init("INVENTORY");
@@ -6652,85 +6641,3 @@ bool CInterfaceManager::parseTokens(ucstring& ucstr)
return true;;
}
-void CInterfaceManager::addBranchObserver( const char *branchName, NLMISC::ICDBNode::IPropertyObserver *observer, const std::vector< std::string >& positiveLeafNameFilter )
-{
- CCDBNodeBranch *b = dynamic_cast< CCDBNodeBranch* >( _DbRootNode->getNode( ICDBNode::CTextId( std::string( branchName ) ), false ) );
- if( b == NULL )
- return;
-
- branchObservingHandler.addBranchObserver( b, observer, positiveLeafNameFilter );
-}
-
-void CInterfaceManager::addBranchObserver( NLMISC::CCDBNodeBranch *branch, NLMISC::ICDBNode::IPropertyObserver *observer, const std::vector< std::string >& positiveLeafNameFilter )
-{
- if( branch == NULL )
- return;
-
- branchObservingHandler.addBranchObserver( branch, observer, positiveLeafNameFilter );
-}
-
-void CInterfaceManager::addBranchObserver( const char *branchName, const char *dbPathFromThisNode, NLMISC::ICDBNode::IPropertyObserver &observer, const char **positiveLeafNameFilter, uint positiveLeafNameFilterSize )
-{
- CCDBNodeBranch *b = dynamic_cast< CCDBNodeBranch* >( _DbRootNode->getNode( ICDBNode::CTextId( std::string( branchName ) ), false ) );
- if( b == NULL )
- return;
-
- branchObservingHandler.addBranchObserver( b, dbPathFromThisNode, observer, positiveLeafNameFilter, positiveLeafNameFilterSize );
-}
-
-void CInterfaceManager::addBranchObserver( NLMISC::CCDBNodeBranch *branch, const char *dbPathFromThisNode, NLMISC::ICDBNode::IPropertyObserver &observer, const char **positiveLeafNameFilter, uint positiveLeafNameFilterSize )
-{
- if( branch == NULL )
- return;
- branchObservingHandler.addBranchObserver( branch, dbPathFromThisNode, observer, positiveLeafNameFilter, positiveLeafNameFilterSize );
-}
-
-void CInterfaceManager::removeBranchObserver( const char *branchName, NLMISC::ICDBNode::IPropertyObserver* observer )
-{
- CCDBNodeBranch *b = dynamic_cast< CCDBNodeBranch* >( _DbRootNode->getNode( ICDBNode::CTextId( std::string( branchName ) ), false ) );
- if( b == NULL )
- return;
- branchObservingHandler.removeBranchObserver( b, observer );
-}
-
-void CInterfaceManager::removeBranchObserver( NLMISC::CCDBNodeBranch *branch, NLMISC::ICDBNode::IPropertyObserver* observer )
-{
- if( branch == NULL )
- return;
- branchObservingHandler.removeBranchObserver( branch, observer );
-}
-
-void CInterfaceManager::removeBranchObserver( const char *branchName, const char *dbPathFromThisNode, NLMISC::ICDBNode::IPropertyObserver &observer )
-{
- CCDBNodeBranch *b = dynamic_cast< CCDBNodeBranch* >( _DbRootNode->getNode( ICDBNode::CTextId( std::string( branchName ) ), false ) );
- if( b == NULL )
- return;
- branchObservingHandler.removeBranchObserver( b, dbPathFromThisNode, observer );
-}
-
-void CInterfaceManager::removeBranchObserver( NLMISC::CCDBNodeBranch *branch, const char *dbPathFromThisNode, NLMISC::ICDBNode::IPropertyObserver &observer )
-{
- if( branch == NULL )
- return;
- branchObservingHandler.removeBranchObserver( branch, dbPathFromThisNode, observer );
-}
-
-void CInterfaceManager::addFlushObserver( NLMISC::CCDBBranchObservingHandler::IBranchObserverCallFlushObserver *observer )
-{
- if( observer == NULL )
- return;
- branchObservingHandler.addFlushObserver( observer );
-}
-
-void CInterfaceManager::removeFlushObserver( NLMISC::CCDBBranchObservingHandler::IBranchObserverCallFlushObserver *observer )
-{
- if( observer == NULL )
- return;
- branchObservingHandler.removeFlushObserver( observer );
-}
-
-void CInterfaceManager::flushObserverCalls()
-{
- branchObservingHandler.flushObserverCalls();
-}
-
diff --git a/code/ryzom/client/src/interface_v3/interface_manager.h b/code/ryzom/client/src/interface_v3/interface_manager.h
index a98d4a8fc..cb162a24d 100644
--- a/code/ryzom/client/src/interface_v3/interface_manager.h
+++ b/code/ryzom/client/src/interface_v3/interface_manager.h
@@ -20,6 +20,7 @@
#define NL_INTERFACE_MANAGER_H
#include "nel/misc/types_nl.h"
+#include "nel/misc/cdb_manager.h"
#include "nel/3d/u_texture.h"
#include "nel/3d/u_text_context.h"
#include "interface_group.h"
@@ -77,7 +78,7 @@ class CGroupMenu;
* \author Nevrax France
* \date 2002
*/
-class CInterfaceManager : public CInterfaceParser
+class CInterfaceManager : public CInterfaceParser, public NLMISC::CCDBManager
{
public:
@@ -229,12 +230,10 @@ public:
/// Get the root of the database
- NLMISC::CCDBNodeBranch *getDB() const { return _DbRootNode; }
+ NLMISC::CCDBNodeBranch *getDB() const { return _Database; }
// yoyo: should avoid to try creating DbPropr with this system... very dangerous
NLMISC::CCDBNodeLeaf* getDbProp (const std::string & name, bool bCreate=true);
void delDbProp(const std::string & name);
- // get a Db Branch by its name. NULL if don't exist or not a branch (never try to create it)
- NLMISC::CCDBNodeBranch *getDbBranch(const std::string &name);
// return the DB as an int32. return 0 if the DB does not exist (never create)
sint32 getDbValue32 (const std::string & name);
@@ -959,9 +958,6 @@ private:
NLMISC::CRGBA _GlobalColor;
sint32 _LastInGameScreenW, _LastInGameScreenH; // Resolution used for last InGame interface
- // root node for interfaces properties in the databases
- NLMISC::CCDBNodeBranch *_DbRootNode;
-
// List of active Anims
std::vector _ActiveAnims;
@@ -1065,20 +1061,6 @@ private:
void updateTooltipCoords(CCtrlBase *newCtrl);
CInterfaceLink::CInterfaceLinkUpdater *interfaceLinkUpdater;
- NLMISC::CCDBBranchObservingHandler branchObservingHandler;
-
-public:
- void addBranchObserver( const char *branchName, NLMISC::ICDBNode::IPropertyObserver *observer, const std::vector< std::string >& positiveLeafNameFilter = std::vector< std::string >() );
- void addBranchObserver( NLMISC::CCDBNodeBranch *branch, NLMISC::ICDBNode::IPropertyObserver *observer, const std::vector< std::string >& positiveLeafNameFilter = std::vector< std::string >() );
- void addBranchObserver( const char *branchName, const char *dbPathFromThisNode, NLMISC::ICDBNode::IPropertyObserver &observer, const char **positiveLeafNameFilter = NULL, uint positiveLeafNameFilterSize = 0 );
- void addBranchObserver( NLMISC::CCDBNodeBranch *branch, const char *dbPathFromThisNode, NLMISC::ICDBNode::IPropertyObserver &observer, const char **positiveLeafNameFilter, uint positiveLeafNameFilterSize );
- void removeBranchObserver( const char *branchName, NLMISC::ICDBNode::IPropertyObserver* observer );
- void removeBranchObserver( NLMISC::CCDBNodeBranch *branch, NLMISC::ICDBNode::IPropertyObserver* observer );
- void removeBranchObserver( const char *branchName, const char *dbPathFromThisNode, NLMISC::ICDBNode::IPropertyObserver &observer );
- void removeBranchObserver( NLMISC::CCDBNodeBranch *branch, const char *dbPathFromThisNode, NLMISC::ICDBNode::IPropertyObserver &observer );
- void addFlushObserver( NLMISC::CCDBBranchObservingHandler::IBranchObserverCallFlushObserver *observer );
- void removeFlushObserver( NLMISC::CCDBBranchObservingHandler::IBranchObserverCallFlushObserver *observer );
- void flushObserverCalls();
};
#endif // NL_INTERFACE_MANAGER_H