|
Field3D
|
#include <ClassFactory.h>
Public Types | |
| typedef FieldRes::Ptr(* | CreateFieldFnPtr )() |
| typedef FieldIO::Ptr(* | CreateFieldIOFnPtr )() |
| typedef FieldMapping::Ptr(* | CreateFieldMappingFnPtr )() |
| typedef FieldMappingIO::Ptr(* | CreateFieldMappingIOFnPtr )() |
Public Member Functions | |
| ClassFactory () | |
| Standard constructor. | |
Field class | |
| void | registerField (CreateFieldFnPtr createFunc) |
| Registers a class with the class pool. | |
| FieldRes::Ptr | createField (const std::string &className) const |
| Instances an object by name. | |
| void | registerFieldIO (CreateFieldIOFnPtr createFunc) |
| Registers an IO class with the class pool. | |
| FieldIO::Ptr | createFieldIO (const std::string &className) const |
| Instances an IO object by name. | |
FieldMapping class | |
| typedef std::vector< std::string > | NameVec |
| typedef std::map< std::string, CreateFieldFnPtr > | FieldFuncMap |
| typedef std::map< std::string, CreateFieldIOFnPtr > | FieldIOFuncMap |
| typedef std::map< std::string, CreateFieldMappingFnPtr > | FieldMappingFuncMap |
| typedef std::map< std::string, CreateFieldMappingIOFnPtr > | FieldMappingIOFuncMap |
| FieldFuncMap | m_fields |
| Map of create functions for Fields. The key is the class name. | |
| NameVec | m_fieldNames |
| FieldIOFuncMap | m_fieldIOs |
| Map of create functions for FieldIO classes. The key is the class name. | |
| NameVec | m_fieldIONames |
| FieldMappingFuncMap | m_mappings |
| Map of create functions for FieldMappings. The key is the class name. | |
| NameVec | m_fieldMappingNames |
| FieldMappingIOFuncMap | m_mappingIOs |
| Map of create functions for FieldMapping IO classes. The key is the class name. | |
| NameVec | m_fieldMappingIONames |
| static ClassFactory * | ms_instance = NULL |
| Pointer to static instance. | |
| void | registerFieldMapping (CreateFieldMappingFnPtr createFunc) |
| Registers a class with the class pool. | |
| FieldMapping::Ptr | createFieldMapping (const std::string &className) const |
| Instances an object by name. | |
| void | registerFieldMappingIO (CreateFieldMappingIOFnPtr createFunc) |
| Registers an IO class with the class pool. | |
| FieldMappingIO::Ptr | createFieldMappingIO (const std::string &className) const |
| Instances an IO object by name. | |
| static ClassFactory & | singleton () |
| } | |
Definition at line 70 of file ClassFactory.h.
| typedef FieldRes::Ptr(* ClassFactory::CreateFieldFnPtr)() |
Definition at line 77 of file ClassFactory.h.
| typedef FieldIO::Ptr(* ClassFactory::CreateFieldIOFnPtr)() |
Definition at line 78 of file ClassFactory.h.
| typedef FieldMapping::Ptr(* ClassFactory::CreateFieldMappingFnPtr)() |
Definition at line 79 of file ClassFactory.h.
Definition at line 80 of file ClassFactory.h.
typedef std::vector<std::string> ClassFactory::NameVec [private] |
Definition at line 134 of file ClassFactory.h.
typedef std::map<std::string, CreateFieldFnPtr> ClassFactory::FieldFuncMap [private] |
Definition at line 135 of file ClassFactory.h.
typedef std::map<std::string, CreateFieldIOFnPtr> ClassFactory::FieldIOFuncMap [private] |
Definition at line 136 of file ClassFactory.h.
typedef std::map<std::string, CreateFieldMappingFnPtr> ClassFactory::FieldMappingFuncMap [private] |
Definition at line 137 of file ClassFactory.h.
typedef std::map<std::string, CreateFieldMappingIOFnPtr> ClassFactory::FieldMappingIOFuncMap [private] |
Definition at line 138 of file ClassFactory.h.
| ClassFactory::ClassFactory | ( | ) |
Standard constructor.
Definition at line 65 of file ClassFactory.cpp.
References PluginLoader::loadPlugins().
{
PluginLoader::loadPlugins();
}
| void ClassFactory::registerField | ( | CreateFieldFnPtr | createFunc | ) |
Registers a class with the class pool.
| createFunc | Pointer to creation function |
Definition at line 72 of file ClassFactory.cpp.
References Msg::print(), and Msg::SevWarning.
{
// Make sure we don't add the same class twice
bool nameExists = false;
FieldRes::Ptr instance = createFunc();
if (!instance) {
Msg::print(Msg::SevWarning,
"Unsuccessful attempt at registering Field class. "
"(Creation function returned null pointer)");
return;
}
string simpleClassName = instance->className();
string dataTypeName = instance->dataTypeString();
string className = simpleClassName + "<" + dataTypeName + ">";
FieldFuncMap::const_iterator i = m_fields.find(className);
if (i != m_fields.end())
nameExists = true;
if (!nameExists) {
m_fields[className] = createFunc;
// if the simple (untemplated) class name hasn't been registered
// yet, add it to the list and print a message
if (find(m_fieldNames.begin(), m_fieldNames.end(),
className) == m_fieldNames.end()) {
m_fieldNames.push_back(className);
char *debugEnvVar = getenv("FIELD3D_DEBUG");
if (debugEnvVar) {
Msg::print("Registered Field class " + className);
}
}
}
}
| FieldRes::Ptr ClassFactory::createField | ( | const std::string & | className | ) | const |
Instances an object by name.
Definition at line 114 of file ClassFactory.cpp.
{
FieldFuncMap::const_iterator i = m_fields.find(className);
if (i != m_fields.end())
return i->second();
else
return FieldRes::Ptr();
}
| void ClassFactory::registerFieldIO | ( | CreateFieldIOFnPtr | createFunc | ) |
Registers an IO class with the class pool.
| createFunc | Pointer to creation function |
Definition at line 125 of file ClassFactory.cpp.
References Msg::print(), and Msg::SevWarning.
Referenced by initIO().
{
// Make sure we don't add the same class twice
bool nameExists = false;
FieldIO::Ptr instance = createFunc();
if (!instance) {
Msg::print(Msg::SevWarning,
"Unsuccessful attempt at registering FieldIO class. "
"(Creation function returned null pointer)");
return;
}
string className = instance->className();
FieldIOFuncMap::const_iterator i = m_fieldIOs.find(className);
if (i != m_fieldIOs.end())
nameExists = true;
if (!nameExists) {
m_fieldIOs[className] = createFunc;
// if the simple (untemplated) class name hasn't been registered
// yet, add it to the list and print a message
if (find(m_fieldIONames.begin(), m_fieldIONames.end(),
className) == m_fieldIONames.end()) {
m_fieldIONames.push_back(className);
char *debugEnvVar = getenv("FIELD3D_DEBUG");
if (debugEnvVar) {
Msg::print("Registered FieldIO class " + className);
}
}
}
}
| FieldIO::Ptr ClassFactory::createFieldIO | ( | const std::string & | className | ) | const |
Instances an IO object by name.
Definition at line 165 of file ClassFactory.cpp.
Referenced by readField(), and writeField().
{
FieldIOFuncMap::const_iterator m = m_fieldIOs.begin();
FieldIOFuncMap::const_iterator i = m_fieldIOs.find(className);
if (i != m_fieldIOs.end())
return i->second();
else
return FieldIO::Ptr();
}
| void ClassFactory::registerFieldMapping | ( | CreateFieldMappingFnPtr | createFunc | ) |
Registers a class with the class pool.
| createFunc | Pointer to creation function |
Definition at line 177 of file ClassFactory.cpp.
References Msg::print(), and Msg::SevWarning.
{
// Make sure we don't add the same class twice
bool nameExists = false;
FieldMapping::Ptr instance = createFunc();
if (!instance) {
Msg::print(Msg::SevWarning,
"Unsuccessful attempt at registering FieldMapping class. "
"(Creation function returned null pointer)");
return;
}
string className = instance->className();
FieldMappingFuncMap::const_iterator i = m_mappings.find(className);
if (i != m_mappings.end())
nameExists = true;
if (!nameExists) {
m_mappings[className] = createFunc;
// if the simple (untemplated) class name hasn't been registered
// yet, add it to the list and print a message
if (find(m_fieldMappingNames.begin(), m_fieldMappingNames.end(),
className) == m_fieldMappingNames.end()) {
m_fieldMappingNames.push_back(className);
char *debugEnvVar = getenv("FIELD3D_DEBUG");
if (debugEnvVar) {
Msg::print("Registered FieldMapping class " + className);
}
}
}
}
| FieldMapping::Ptr ClassFactory::createFieldMapping | ( | const std::string & | className | ) | const |
Instances an object by name.
Definition at line 216 of file ClassFactory.cpp.
{
FieldMappingFuncMap::const_iterator i = m_mappings.find(className);
if (i != m_mappings.end())
return i->second();
else
return FieldMapping::Ptr();
}
| void ClassFactory::registerFieldMappingIO | ( | CreateFieldMappingIOFnPtr | createFunc | ) |
Registers an IO class with the class pool.
| createFunc | Pointer to creation function |
Definition at line 227 of file ClassFactory.cpp.
References Msg::print(), and Msg::SevWarning.
Referenced by initIO().
{
// Make sure we don't add the same class twice
bool nameExists = false;
FieldMappingIO::Ptr instance = createFunc();
if (!instance) {
Msg::print(Msg::SevWarning,
"Unsuccessful attempt at registering FieldMappingIO class. "
"(Creation function returned null pointer)");
return;
}
string className = instance->className();
FieldMappingIOFuncMap::const_iterator i = m_mappingIOs.find(className);
if (i != m_mappingIOs.end())
nameExists = true;
if (!nameExists) {
m_mappingIOs[className] = createFunc;
// if the simple (untemplated) class name hasn't been registered
// yet, add it to the list and print a message
if (find(m_fieldMappingNames.begin(), m_fieldMappingNames.end(),
className) == m_fieldMappingNames.end()) {
m_fieldMappingNames.push_back(className);
char *debugEnvVar = getenv("FIELD3D_DEBUG");
if (debugEnvVar) {
Msg::print("Registered FieldMappingIO class " + className);
}
}
}
}
| FieldMappingIO::Ptr ClassFactory::createFieldMappingIO | ( | const std::string & | className | ) | const |
Instances an IO object by name.
Definition at line 266 of file ClassFactory.cpp.
Referenced by readFieldMapping(), and writeFieldMapping().
{
FieldMappingIOFuncMap::const_iterator i = m_mappingIOs.find(className);
if (i != m_mappingIOs.end())
return i->second();
else
return FieldMappingIO::Ptr();
}
| ClassFactory & ClassFactory::singleton | ( | ) | [static] |
}
Access point for the singleton instance.
Definition at line 278 of file ClassFactory.cpp.
Referenced by initIO(), PluginLoader::loadPlugins(), readField(), readFieldMapping(), writeField(), and writeFieldMapping().
{
if (!ms_instance)
ms_instance = new ClassFactory;
return *ms_instance;
}
FieldFuncMap ClassFactory::m_fields [private] |
Map of create functions for Fields. The key is the class name.
Definition at line 143 of file ClassFactory.h.
NameVec ClassFactory::m_fieldNames [private] |
Definition at line 145 of file ClassFactory.h.
FieldIOFuncMap ClassFactory::m_fieldIOs [private] |
Map of create functions for FieldIO classes. The key is the class name.
Definition at line 148 of file ClassFactory.h.
NameVec ClassFactory::m_fieldIONames [private] |
Definition at line 150 of file ClassFactory.h.
FieldMappingFuncMap ClassFactory::m_mappings [private] |
Map of create functions for FieldMappings. The key is the class name.
Definition at line 153 of file ClassFactory.h.
NameVec ClassFactory::m_fieldMappingNames [private] |
Definition at line 155 of file ClassFactory.h.
Map of create functions for FieldMapping IO classes. The key is the class name.
Definition at line 159 of file ClassFactory.h.
NameVec ClassFactory::m_fieldMappingIONames [private] |
Definition at line 161 of file ClassFactory.h.
FIELD3D_NAMESPACE_OPEN ClassFactory * ClassFactory::ms_instance = NULL [static, private] |
Pointer to static instance.
Definition at line 164 of file ClassFactory.h.