Public Member Functions | Static Public Member Functions | Private Attributes

NamedData< DATA > Class Template Reference

Inheritance diagram for NamedData< DATA >:
Inheritance graph
[legend]

List of all members.

Public Member Functions

 NamedData ()
template<typename DATA2 >
NamedData< DATA > & operator= (const NamedData< DATA2 > &other)
Adding members
void add (DATA &v, const std::string &name)
void add (const DATA &v, const std::string &name)
template<typename DATA2 >
void merge (NamedData< DATA2 > &)
template<typename DATA2 >
void merge (const NamedData< DATA2 > &)
Accessing and querying

contents

unsigned int size () const
 Number of stored data objects.
DATA & operator() (unsigned int i)
 Access to stored data object by index.
const DATA & operator() (unsigned int i) const
 Read-only access to stored data object by index.
const DATA & read (unsigned int i) const
 Read only access for a non-const object.
const std::string & name (unsigned int i) const
 Name of object at index.
unsigned int find (const std::string &name) const
 Find index of a named object.
bool is_const () const
 Returns true if this object contains constant data.
template<class OUT >
void print (OUT &o) const
 List names of stored objects.

Static Public Member Functions

::ExceptionBaseExcNameMismatch (int arg1, std::string arg2) throw (errortext << "Name at position " << arg1 << " is not equal to " << arg2 )
::ExceptionBaseExcConstantObject ()

Private Attributes

bool is_constant
 True if the object is to be treated constant.
std::vector< DATA > data
 The actual data stored.
std::vector< std::string > names
 Names for the data.

Detailed Description

template<typename DATA>
class NamedData< DATA >

This class is a collection of DATA objects. Each of the pointers has a name associated, enabling identification by this name rather than the index in the vector only.

Note that it is the actual data stored in this object. Therefore, for storing vectors and other large objects, it should be considered to use SmartPointer or boost::shared_ptr for DATA.

Objects of this kind have a smart way of treating constness: if a const data object is added or a const NamedData is supplied with merge(), the object will henceforth consider itself as const (is_constant will be true). Thus, any subsequent modification will be illegal and ExcConstantObject will be raised in debug mode.

Author:
Guido Kanschat, 2007, 2008, 2009

Definition at line 43 of file named_data.h.


Constructor & Destructor Documentation

template<typename DATA >
NamedData< DATA >::NamedData (  ) [inline]

Standard constructor creating an empty object.

Definition at line 239 of file named_data.h.


Member Function Documentation

template<typename DATA >
template<typename DATA2 >
NamedData< DATA > & NamedData< DATA >::operator= ( const NamedData< DATA2 > &  other ) [inline]

Assignment operator, copying conversible data from another object.

Definition at line 307 of file named_data.h.

References NamedData< DATA >::is_const(), and internal::SymmetricTensorAccessors::merge().

template<typename DATA>
void NamedData< DATA >::add ( DATA &  v,
const std::string &  name 
) [inline]

Add a new data item to the end of the collection.

Definition at line 248 of file named_data.h.

References Assert.

Referenced by MeshWorker::Assembler::SystemSimple< MATRIX, VECTOR >::initialize().

template<typename DATA>
void NamedData< DATA >::add ( const DATA &  v,
const std::string &  name 
) [inline]

Add a new constant data item to the end of the collection and make the collection constant.

Definition at line 259 of file named_data.h.

References Assert.

template<typename DATA >
template<typename DATA2 >
void NamedData< DATA >::merge ( NamedData< DATA2 > &  other ) [inline]

Merge the data of another NamedData to the end of this object.

If the other object had is_constant set, so will have this object after merge.

Definition at line 273 of file named_data.h.

References Assert, NamedData< DATA >::is_const(), NamedData< DATA >::name(), NamedData< DATA >::read(), and NamedData< DATA >::size().

template<typename DATA >
template<typename DATA2 >
void NamedData< DATA >::merge ( const NamedData< DATA2 > &  other ) [inline]

Merge the data of another NamedData to the end of this object.

After this operation, all data in this object will be treated as const.

Definition at line 290 of file named_data.h.

References Assert, NamedData< DATA >::name(), and NamedData< DATA >::size().

template<typename DATA >
unsigned int NamedData< DATA >::size (  ) const [inline]

Number of stored data objects.

Definition at line 320 of file named_data.h.

Referenced by NamedData< DATA >::merge().

template<typename DATA >
DATA & NamedData< DATA >::operator() ( unsigned int  i ) [inline]

Access to stored data object by index.

Note:
This function throws an exception, if is_const() returns true. In such a case, either cast the NamedData object to a const reference, or use the function read() instead of this operator.

Definition at line 338 of file named_data.h.

References Assert, and AssertIndexRange.

template<typename DATA >
const DATA & NamedData< DATA >::operator() ( unsigned int  i ) const [inline]

Read-only access to stored data object by index.

Definition at line 349 of file named_data.h.

References AssertIndexRange.

template<typename DATA >
const DATA & NamedData< DATA >::read ( unsigned int  i ) const [inline]

Read only access for a non-const object.

Definition at line 359 of file named_data.h.

References AssertIndexRange.

Referenced by NamedData< DATA >::merge().

template<typename DATA >
const std::string & NamedData< DATA >::name ( unsigned int  i ) const [inline]
template<typename DATA >
unsigned int NamedData< DATA >::find ( const std::string &  name ) const [inline]

Find index of a named object.

Definition at line 379 of file named_data.h.

References numbers::invalid_unsigned_int.

Referenced by NamedSelection::initialize().

template<typename DATA >
bool NamedData< DATA >::is_const (  ) const [inline]

Returns true if this object contains constant data.

Definition at line 329 of file named_data.h.

Referenced by NamedData< DATA >::merge(), and NamedData< DATA >::operator=().

template<typename DATA >
template<class OUT >
void NamedData< DATA >::print ( OUT &  o ) const [inline]

List names of stored objects.

Definition at line 393 of file named_data.h.

template<typename DATA>
::ExceptionBase& NamedData< DATA >::ExcNameMismatch ( int  arg1,
std::string  arg2 
) throw (errortext << "Name at position " << arg1 << " is not equal to " << arg2 ) [static]

Exception indicating that a function expected a vector to have a certain name, but NamedData had a different name in that position.

template<typename DATA>
::ExceptionBase& NamedData< DATA >::ExcConstantObject (  ) [static]

Exception indicating that read access to stored data was attempted although the NamedData object contains const data and is_constant was true.


Member Data Documentation

template<typename DATA>
bool NamedData< DATA >::is_constant [private]

True if the object is to be treated constant.

Definition at line 163 of file named_data.h.

template<typename DATA>
std::vector<DATA> NamedData< DATA >::data [private]

The actual data stored.

Definition at line 165 of file named_data.h.

template<typename DATA>
std::vector<std::string> NamedData< DATA >::names [private]

Names for the data.

Definition at line 168 of file named_data.h.


The documentation for this class was generated from the following file:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines

deal.II documentation generated on Fri Feb 3 2012 06:04:10 by doxygen 1.7.2