37 #include "BESDefinitionStorageList.h" 38 #include "BESDefinitionStorage.h" 39 #include "BESDefine.h" 44 BESDefinitionStorageList::BESDefinitionStorageList()
49 BESDefinitionStorageList::~BESDefinitionStorageList()
51 BESDefinitionStorageList::persistence_list *pl = _first ;
54 if( pl->_persistence_obj )
56 delete pl->_persistence_obj ;
58 BESDefinitionStorageList::persistence_list *next = pl->_next ;
82 _first =
new BESDefinitionStorageList::persistence_list ;
83 _first->_persistence_obj = cp ;
84 _first->_reference = 1 ;
90 BESDefinitionStorageList::persistence_list *pl = _first ;
92 while( done ==
false )
94 if( pl->_persistence_obj->get_name() != cp->
get_name() )
102 pl->_next =
new BESDefinitionStorageList::persistence_list ;
103 pl->_next->_persistence_obj = cp ;
104 pl->_next->_reference = 1 ;
105 pl->_next->_next = 0 ;
132 BESDefinitionStorageList::persistence_list *pl = _first ;
135 while( done ==
false )
139 if( pl->_persistence_obj &&
140 pl->_persistence_obj->get_name() == persist_name )
174 BESDefinitionStorageList::persistence_list *pl = _first ;
175 BESDefinitionStorageList::persistence_list *last = 0 ;
178 while( done ==
false )
182 if( pl->_persistence_obj &&
183 pl->_persistence_obj->get_name() == persist_name )
188 if( !pl->_reference )
192 _first = _first->_next ;
197 throw BESInternalError(
"ContainerStorageList last is null", __FILE__, __LINE__);
198 last->_next = pl->_next ;
200 delete pl->_persistence_obj ;
232 BESDefinitionStorageList::persistence_list *pl = _first ;
234 while( done ==
false )
238 if( persist_name == pl->_persistence_obj->get_name() )
240 ret = pl->_persistence_obj ;
270 BESDefinitionStorageList::persistence_list *pl = _first ;
272 while( done ==
false )
276 ret_def = pl->_persistence_obj->look_for( def_name ) ;
311 BESDefinitionStorageList::persistence_list *pl = _first ;
318 info.add_break( 1 ) ;
321 map<string,string> props ;
322 props[
"name"] = pl->_persistence_obj->get_name() ;
323 info.begin_tag(
"store", &props ) ;
324 pl->_persistence_obj->show_definitions( info ) ;
325 info.end_tag(
"store" ) ;
331 BESDefinitionStorageList::TheList()
350 strm << BESIndent::LMarg <<
"BESDefinitionStorageList::dump - (" 351 << (
void *)
this <<
")" << endl;
352 BESIndent::Indent() ;
355 strm << BESIndent::LMarg <<
"registered definition storage:" << endl ;
356 BESIndent::Indent() ;
357 BESDefinitionStorageList::persistence_list *pl = _first ;
360 pl->_persistence_obj->dump( strm ) ;
363 BESIndent::UnIndent() ;
367 strm << BESIndent::LMarg <<
"registered definition storage: none" << endl ;
369 BESIndent::UnIndent() ;
provides persistent storage for a specific view of different containers including contraints and aggr...
exception thrown if inernal error encountered
virtual BESDefine * look_for(const string &def_name)
look for the specified definition in the list of defintion stores.
virtual BESDefinitionStorage * find_persistence(const string &persist_name)
find the persistence store with the given name
informational response object
virtual bool add_persistence(BESDefinitionStorage *p)
Add a persistent store to the list.
virtual void show_definitions(BESInfo &info)
show information for each definition in each persistence store
virtual void dump(ostream &strm) const
dumps information about this object
virtual const string & get_name() const
retrieve the name of this persistent store
virtual bool ref_persistence(const string &persist_name)
reference a persistent store in the list
virtual bool deref_persistence(const string &persist_name)
de-reference a persistent store in the list
Provides a mechanism for accessing definitions from different definition stores registered with this ...