Parameters::Parameter< T > Class Template Reference

#include <parameters.h>

Inheritance diagram for Parameters::Parameter< T >:

List of all members.

Public Member Functions

const T & get () const
T & set ()
virtual std::string type () const
virtual void print (std::ostream &) const
virtual Valueclone () const

Static Public Member Functions

static std::string get_info ()
static void print_info ()
static unsigned int n_objects ()

Protected Types

typedef std::map< std::string,
std::pair< unsigned int,
unsigned int > > 
Counts

Protected Member Functions

void increment_constructor_count (const std::string &name)
void increment_destructor_count (const std::string &name)

Static Protected Attributes

static Counts _counts
static Threads::atomic
< unsigned int > 
_n_objects
static Threads::spin_mutex _mutex

Private Attributes

_value


Detailed Description

template<typename T>
class Parameters::Parameter< T >

Concrete definition of a parameter value for a specified type.

Definition at line 162 of file parameters.h.


Member Typedef Documentation

typedef std::map<std::string, std::pair<unsigned int, unsigned int> > ReferenceCounter::Counts [protected, inherited]

Data structure to log the information. The log is identified by the class name.

Definition at line 105 of file reference_counter.h.


Member Function Documentation

template<typename T >
Parameters::Value * Parameters::Parameter< T >::clone (  )  const [inline, virtual]

Clone this value. Useful in copy-construction.

Implements Parameters::Value.

Definition at line 262 of file parameters.h.

References Parameters::Parameter< T >::_value.

00263 {
00264   // No good for Solaris C++! - BSK
00265 //  Parameters::Parameter<T>
00266 //    *copy = new Parameters::Parameter<T>;
00267   Parameter<T>
00268     *copy = new Parameter<T>;
00269 
00270   libmesh_assert (copy != NULL);
00271   
00272   copy->_value = _value;
00273 
00274   return copy;
00275 }

template<typename T >
const T& Parameters::Parameter< T >::get (  )  const [inline]

Returns:
a read-only reference to the parameter value.

Definition at line 169 of file parameters.h.

References Parameters::Parameter< T >::_value.

00169 { return _value; }

std::string ReferenceCounter::get_info (  )  [static, inherited]

Gets a string containing the reference information.

Definition at line 45 of file reference_counter.C.

References ReferenceCounter::_counts, and QuadratureRules::name().

Referenced by ReferenceCounter::print_info().

00046 {
00047 #if defined(LIBMESH_ENABLE_REFERENCE_COUNTING) && defined(DEBUG)
00048 
00049   std::ostringstream out;
00050   
00051   out << '\n'
00052       << " ---------------------------------------------------------------------------- \n"
00053       << "| Reference count information                                                |\n"
00054       << " ---------------------------------------------------------------------------- \n";
00055   
00056   for (Counts::iterator it = _counts.begin();
00057        it != _counts.end(); ++it)
00058     {
00059       const std::string name(it->first);
00060       const unsigned int creations    = it->second.first;
00061       const unsigned int destructions = it->second.second;
00062 
00063       out << "| " << name << " reference count information:\n"
00064           << "|  Creations:    " << creations    << '\n'
00065           << "|  Destructions: " << destructions << '\n';
00066     }
00067   
00068   out << " ---------------------------------------------------------------------------- \n";
00069 
00070   return out.str();
00071 
00072 #else
00073 
00074   return "";
00075   
00076 #endif
00077 }

void ReferenceCounter::increment_constructor_count ( const std::string &  name  )  [inline, protected, inherited]

Increments the construction counter. Should be called in the constructor of any derived class that will be reference counted.

Definition at line 149 of file reference_counter.h.

References ReferenceCounter::_counts, and Threads::spin_mtx.

Referenced by ReferenceCountedObject< SparseMatrix< T > >::ReferenceCountedObject().

00150 {
00151   Threads::spin_mutex::scoped_lock lock(Threads::spin_mtx);
00152   std::pair<unsigned int, unsigned int>& p = _counts[name];
00153 
00154   p.first++;
00155 }

void ReferenceCounter::increment_destructor_count ( const std::string &  name  )  [inline, protected, inherited]

Increments the destruction counter. Should be called in the destructor of any derived class that will be reference counted.

Definition at line 167 of file reference_counter.h.

References ReferenceCounter::_counts, and Threads::spin_mtx.

Referenced by ReferenceCountedObject< SparseMatrix< T > >::~ReferenceCountedObject().

00168 {
00169   Threads::spin_mutex::scoped_lock lock(Threads::spin_mtx);
00170   std::pair<unsigned int, unsigned int>& p = _counts[name];
00171 
00172   p.second++;
00173 }

static unsigned int ReferenceCounter::n_objects (  )  [inline, static, inherited]

Prints the number of outstanding (created, but not yet destroyed) objects.

Definition at line 76 of file reference_counter.h.

References ReferenceCounter::_n_objects.

00077   { return _n_objects; }

template<typename T >
void Parameters::Parameter< T >::print ( std::ostream &  os  )  const [inline, virtual]

Prints the parameter value to the specified stream.

Implements Parameters::Value.

Definition at line 253 of file parameters.h.

References Parameters::Parameter< T >::_value.

00254 {
00255   os << _value;
00256 }

void ReferenceCounter::print_info (  )  [static, inherited]

Prints the reference information to std::cout.

Definition at line 83 of file reference_counter.C.

References ReferenceCounter::get_info().

00084 {
00085 #if defined(LIBMESH_ENABLE_REFERENCE_COUNTING) && defined(DEBUG)
00086   
00087   std::cout << ReferenceCounter::get_info();
00088   
00089 #endif
00090 }

template<typename T >
T& Parameters::Parameter< T >::set (  )  [inline]

Returns:
a writeable reference to the parameter value.

Definition at line 174 of file parameters.h.

References Parameters::Parameter< T >::_value.

Referenced by Parameters::set().

00174 { return _value; }

template<typename T >
std::string Parameters::Parameter< T >::type (  )  const [inline, virtual]

String identifying the type of parameter stored.

Implements Parameters::Value.

Definition at line 244 of file parameters.h.

References QuadratureRules::name().

00245 {
00246   return typeid(T).name();
00247 }


Member Data Documentation

Threads::spin_mutex ReferenceCounter::_mutex [static, protected, inherited]

Mutual exclusion object to enable thread-safe reference counting.

Definition at line 123 of file reference_counter.h.

Threads::atomic< unsigned int > ReferenceCounter::_n_objects [static, protected, inherited]

The number of objects. Print the reference count information when the number returns to 0.

Definition at line 118 of file reference_counter.h.

Referenced by ReferenceCounter::n_objects(), ReferenceCounter::ReferenceCounter(), and ReferenceCounter::~ReferenceCounter().

template<typename T >
T Parameters::Parameter< T >::_value [private]


The documentation for this class was generated from the following file:

Site Created By: libMesh Developers
Last modified: November 25 2009 03:44:43.

Hosted By:
SourceForge.net Logo