Gyoto
Classes | Namespaces | Macros | Functions
GyotoRegister.h File Reference

Gyoto registers. More...

#include <string>
#include "GyotoSmartPointer.h"

Go to the source code of this file.

Classes

class  Gyoto::Register::Entry
 Entry in a register (or a full register) More...
 

Namespaces

namespace  Gyoto
 Namespace for the Gyoto library.
 
namespace  Gyoto::Register
 Gyoto registers.
 

Macros

#define GYOTO_GETSUBCONTRACTOR(space)
 

Functions

void Gyoto::Register::init (char const *pluglist=NULL)
 Initialise the various registers. More...
 
void Gyoto::Register::list ()
 List the various registers.
 
void * Gyoto::loadPlugin (char const *const plugname, int nofail=0)
 Load a plugin by name. More...
 
bool Gyoto::havePlugin (std::string plugname)
 Check whether a given plug-in has already been loaded. More...
 
void Gyoto::requirePlugin (std::string plugname, int nofail=0)
 Load a plugin by name, only if not loaded yet. More...
 

Detailed Description

Gyoto registers.

Gyoto::Register::Entry instances are used to map kind names to Gyoto::SmartPointee::Subcontractor_t functions used to instantiate objects from XML files through the Gyoto::Factory.

Macro Definition Documentation

◆ GYOTO_GETSUBCONTRACTOR

#define GYOTO_GETSUBCONTRACTOR (   space)
Value:
Gyoto::space::getSubcontractor(std::string name, std::vector<std::string> &plugin, int errmode) { \
for (size_t i=0; i<plugin.size(); ++i) { \
GYOTO_DEBUG_EXPR(plugin[i]); \
Gyoto::requirePlugin(plugin[i]); \
} \
if (!Gyoto::space::Register_) throwError("No " GYOTO_STRINGIFY(space) " kind registered!"); \
Subcontractor_t* sctr= NULL; \
std::string plg(""); \
if (!plugin.size()) { \
sctr = \
-> getSubcontractor(name, plg, errmode); \
plugin.push_back(plg); \
} \
for (size_t i=plugin.size()-1; i>=0 && sctr == NULL; --i) { \
sctr= \
-> getSubcontractor(name, plugin[i], 1); \
} \
if (!errmode && !sctr) throwError ("Kind not found in the specified plug-ins: "+name); \
return sctr; \
}
#define GYOTO_STRINGIFY(a)
Stringify macro content.
Definition: GyotoDefs.h:566
SmartPointer< Gyoto::Astrobj::Generic > Subcontractor_t(Gyoto::FactoryMessenger *, std::vector< std::string > const &)
A function to build instances of a specific Astrobj::Generic sub-class.
Definition: GyotoAstrobj.h:62
Gyoto::Astrobj::Subcontractor_t * getSubcontractor(std::string name, std::vector< std::string > &plugin, int errmode=0)
Query the Astrobj register.
Gyoto::Register::Entry * Register_
The Astrobj register.
void requirePlugin(std::string plugname, int nofail=0)
Load a plugin by name, only if not loaded yet.
void throwError(std::string)
Throw a Gyoto::Error.