|
Teuchos - Trilinos Tools Package
Version of the Day
|
Go to the documentation of this file.
42 #ifndef TEUCHOS_SIMPLE_OBJECT_DB_HPP
43 #define TEUCHOS_SIMPLE_OBJECT_DB_HPP
47 #include "Teuchos_ConstNonconstObjectContainer.hpp"
129 template <
class TOld>
197 void validateIndex(
const int index)
const;
200 int storeObjectImpl(
const RCP<T2> &robj);
202 void removeObjImpl(
const int index);
228 return tableOfObjects_.size();
235 return freedIndices_.size();
242 return tableSize() - numFreeIndexes();
249 return storeObjectImpl(obj);
256 return storeObjectImpl(obj);
261 template <
class TOld>
264 return storeNonconstObj(rcp_dynamic_cast<T>(robj_old,
true));
271 validateIndex(index);
272 removeObjImpl(index);
279 validateIndex(index);
280 const RCP<T> obj = tableOfObjects_[index].getNonconstObj();
281 removeObjImpl(index);
289 validateIndex(index);
290 const RCP<const T> obj = tableOfObjects_[index].getConstObj();
291 removeObjImpl(index);
299 const int index_in = index;
300 validateIndex(index);
301 const int cnt = tableOfObjects_[index_in].count();
302 removeObjImpl(index_in);
311 validateIndex(index);
312 return tableOfObjects_[index].getNonconstObj();
319 validateIndex(index);
320 return tableOfObjects_[index].getConstObj();
327 validateIndex(index);
328 return tableOfObjects_[index].getNonconstObj().ptr();
335 validateIndex(index);
336 return tableOfObjects_[index].getConstObj().ptr();
357 !(0 <= index && index < as<int>(tableOfObjects_.size())),
359 "Error, the object index = " << index <<
" falls outside of the range"
360 <<
" of valid objects [0,"<<tableOfObjects_.size()<<
"]");
361 const RCP<const T> &obj = tableOfObjects_[index].getConstObj();
363 "Error, the object at index "<<index<<
" of type "
370 int SimpleObjectDB<T>::storeObjectImpl(
const RCP<T2> & robj)
372 robj.assert_not_null();
376 if (freedIndices_.size() != 0) {
377 index = freedIndices_.back();
378 freedIndices_.pop_back();
379 tableOfObjects_[index].initialize(robj);
381 tableOfObjects_.push_back(robj);
382 index = tableOfObjects_.size() - 1;
390 void SimpleObjectDB<T>::removeObjImpl(
const int index)
392 tableOfObjects_[index] =
null;
393 freedIndices_.push_back(index);
400 #endif // TEUCHOS_SIMPLE_OBJECT_DB_HPP
TypeTo as(const TypeFrom &t)
Convert from one value type to another.
RCP< T > getNonconstObjRCP(const int index)
Get an object (nonconst persisting association).
int numObjects() const
Return number of non-null stored objects.
void removeObj(const int index)
Remove a stored object without returning it.
friend void swap(Array< T2 > &a1, Array< T2 > &a2)
Definition of Teuchos::as, for conversions between types.
int storeCastedNonconstObj(const RCP< TOld > &robj_old)
Performs an rcp_dynamic_cast<>() to store the obejct.
RCP< const T > removeConstObj(const int index)
int storeConstObj(const RCP< const T > &obj)
Store a const object.
Default traits class that just returns typeid(T).name().
TEUCHOS_DEPRECATED RCP< T > rcp(T *p, Dealloc_T dealloc, bool owns_mem)
Deprecated.
RCP< const T > getConstObjRCP(const int index) const
Get an object (const persisting association).
Templated array class derived from the STL std::vector.
Smart reference counting pointer class for automatic garbage collection.
int numFreeIndexes() const
Return number of free indexes.
Simple wrapper class for raw pointers to single objects where no persisting relationship exists.
Replacement for std::vector that is compatible with the Teuchos Memory Management classes.
void purge()
Clear out all storage.
Null reference error exception class.
RCP< SimpleObjectDB< T > > createSimpleObjectDB()
Nonmember constructor.
int removeRCP(int &index)
Remove an indexed object from the table.
int tableSize() const
Return the current size of the table.
RCP< T > removeNonconstObj(const int index)
Range error exception class.
int storeNonconstObj(const RCP< T > &obj)
Store a non-const object.
Ptr< T > getNonconstObjPtr(const int index)
Get an object (nonconst semi-persisting association).
SimpleObjectDB()
Construct an empty DB.
The Teuchos namespace contains all of the classes, structs and enums used by Teuchos,...
Ptr< const T > getConstObjPtr(const int index) const
Get an object (const semi-persisting association).
#define TEUCHOS_TEST_FOR_EXCEPTION(throw_exception_test, Exception, msg)
Macro for throwing an exception with breakpointing to ease debugging.
bool is_null(const std::shared_ptr< T > &p)
Returns true if p.get()==NULL.
Simple object object database.