GammaLib  1.7.0.dev
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
GModelSpatialRegistry Class Reference

Interface definition for the spatial model registry class. More...

#include <GModelSpatialRegistry.hpp>

Inheritance diagram for GModelSpatialRegistry:
GRegistry

Public Member Functions

 GModelSpatialRegistry (void)
 Void constructor. More...
 
 GModelSpatialRegistry (const GModelSpatial *model)
 Model constructor. More...
 
 GModelSpatialRegistry (const GModelSpatialRegistry &registry)
 Copy constructor. More...
 
virtual ~GModelSpatialRegistry (void)
 Destructor. More...
 
GModelSpatialRegistryoperator= (const GModelSpatialRegistry &registry)
 Assignment operator. More...
 
std::string classname (void) const
 Return class name. More...
 
int size (void) const
 Return number of registered models. More...
 
GModelSpatialalloc (const GXmlElement &xml) const
 Allocate spatial model that is found in XML element. More...
 
std::string name (const int &index) const
 Returns model name. More...
 
std::string print (const GChatter &chatter=NORMAL) const
 Print registry information. More...
 
- Public Member Functions inherited from GRegistry
virtual ~GRegistry (void)
 Destructor. More...
 

Protected Member Functions

void init_members (void)
 Initialise class members. More...
 
void copy_members (const GModelSpatialRegistry &registry)
 Copy class members. More...
 
void free_members (void)
 Delete class members. More...
 

Static Private Member Functions

static int & number ()
 
static GRegistryPointer< const
GModelSpatial * > & 
models ()
 

Detailed Description

Interface definition for the spatial model registry class.

The registry class allows the registration of spatial models that are not necessarily compiled into the GammaLib. It uses the static members m_number and m_models which are allocated globally to keep track of spatial models that are available throughout all linked libraries. To register a spatial model it is sufficient to add

const GModelSpatialXXX      g_spatial_XXX_seed;
const GModelSpatialRegistry g_spatial_XXX_registry(&g_spatial_XXX_seed);

at the top of the .cpp file of the spatial model. Here, XXX is a unique name that describes the model.

Definition at line 56 of file GModelSpatialRegistry.hpp.

Constructor & Destructor Documentation

GModelSpatialRegistry::GModelSpatialRegistry ( void  )

Void constructor.

Definition at line 58 of file GModelSpatialRegistry.cpp.

References init_members(), models(), and size().

GModelSpatialRegistry::GModelSpatialRegistry ( const GModelSpatial model)

Model constructor.

Parameters
[in]modelModel.

Construct registry by adding a model to the registry. This is the standard constructor that is used to register a new model to GammaLib.

Definition at line 85 of file GModelSpatialRegistry.cpp.

References init_members(), models(), number(), size(), and GModelSpatial::type().

GModelSpatialRegistry::GModelSpatialRegistry ( const GModelSpatialRegistry registry)

Copy constructor.

Parameters
[in]registryRegistry.

Definition at line 132 of file GModelSpatialRegistry.cpp.

References copy_members(), and init_members().

GModelSpatialRegistry::~GModelSpatialRegistry ( void  )
virtual

Destructor.

Definition at line 148 of file GModelSpatialRegistry.cpp.

References free_members().

Member Function Documentation

GModelSpatial * GModelSpatialRegistry::alloc ( const GXmlElement xml) const

Allocate spatial model that is found in XML element.

Parameters
[in]xmlXML element.
Returns
Pointer to spatial model.
Exceptions
GException::invalid_valueNo appropriate spatial model found in XML element.

Returns a pointer to a spatial model instance that corresponds to the type found in an XML element. If no appropriate model is found the method will throw an exception.

Definition at line 210 of file GModelSpatialRegistry.cpp.

References GXmlElement::attribute(), G_ALLOC, models(), GModelSpatial::read(), and size().

Referenced by GModelSpatialComposite::read(), and GModelSky::xml_spatial().

std::string GModelSpatialRegistry::classname ( void  ) const
inlinevirtual

Return class name.

Returns
String containing the class name ("GModelSpatialRegistry").

Implements GRegistry.

Definition at line 105 of file GModelSpatialRegistry.hpp.

void GModelSpatialRegistry::copy_members ( const GModelSpatialRegistry registry)
protected

Copy class members.

Parameters
[in]registryRegistry.

Definition at line 330 of file GModelSpatialRegistry.cpp.

Referenced by GModelSpatialRegistry(), and operator=().

void GModelSpatialRegistry::free_members ( void  )
protected

Delete class members.

Definition at line 340 of file GModelSpatialRegistry.cpp.

Referenced by operator=(), and ~GModelSpatialRegistry().

void GModelSpatialRegistry::init_members ( void  )
protected

Initialise class members.

Definition at line 318 of file GModelSpatialRegistry.cpp.

Referenced by GModelSpatialRegistry(), and operator=().

static GRegistryPointer<const GModelSpatial*>& GModelSpatialRegistry::models ( )
inlinestaticprivate

Definition at line 92 of file GModelSpatialRegistry.hpp.

Referenced by alloc(), GModelSpatialRegistry(), name(), and print().

std::string GModelSpatialRegistry::name ( const int &  index) const
virtual

Returns model name.

Parameters
[in]indexModel index [0,...,size()-1].
Returns
Model name.
Exceptions
GException::out_of_rangeModel index is out of range.

Implements GRegistry.

Definition at line 252 of file GModelSpatialRegistry.cpp.

References G_NAME, models(), and size().

Referenced by GException::model_invalid_spatial::model_invalid_spatial(), and print().

static int& GModelSpatialRegistry::number ( void  )
inlinestaticprivate

Definition at line 87 of file GModelSpatialRegistry.hpp.

Referenced by GModelSpatialRegistry(), and size().

GModelSpatialRegistry & GModelSpatialRegistry::operator= ( const GModelSpatialRegistry registry)

Assignment operator.

Parameters
[in]registryRegistry.
Returns
Reference to registry.

Definition at line 170 of file GModelSpatialRegistry.cpp.

References copy_members(), free_members(), and init_members().

std::string GModelSpatialRegistry::print ( const GChatter chatter = NORMAL) const
virtual

Print registry information.

Parameters
[in]chatterChattiness (defaults to NORMAL).
Returns
Registry content.

Implements GRegistry.

Definition at line 273 of file GModelSpatialRegistry.cpp.

References models(), name(), NORMAL, gammalib::parformat(), SILENT, size(), and gammalib::str().

int GModelSpatialRegistry::size ( void  ) const
inlinevirtual

Return number of registered models.

Returns
Number of registered models.

Returns the number of registered model.

Implements GRegistry.

Definition at line 119 of file GModelSpatialRegistry.hpp.

References number().

Referenced by alloc(), GModelSpatialRegistry(), GException::model_invalid_spatial::model_invalid_spatial(), name(), and print().


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