[cig-commits] r13897 - cs/cigma/trunk/src
luis at geodynamics.org
luis at geodynamics.org
Wed Jan 21 11:37:45 PST 2009
Author: luis
Date: 2009-01-21 11:37:43 -0800 (Wed, 21 Jan 2009)
New Revision: 13897
Modified:
cs/cigma/trunk/src/Function.cpp
cs/cigma/trunk/src/FunctionRegistry.cpp
cs/cigma/trunk/src/FunctionRegistry.h
Log:
Use a global variable for registering explicit functions.
Previously, we had a static variable in the Function::NewFunction()
factory method. We change this so that the 'cigma list' command
can have access to the list of function names.
Modified: cs/cigma/trunk/src/Function.cpp
===================================================================
--- cs/cigma/trunk/src/Function.cpp 2009-01-21 19:37:42 UTC (rev 13896)
+++ cs/cigma/trunk/src/Function.cpp 2009-01-21 19:37:43 UTC (rev 13897)
@@ -25,17 +25,16 @@
TRI_LOG_STR("Function::NewFunction()");
TRI_LOG(fn_info);
- // XXX: if not found, try to instantiate Explicit, or load from shared library
- static FunctionRegistry registry;
shared_ptr<Function> fn;
const char* source = fn_info.fn_name.c_str();
- const bool fn_exists = registry.hasFunction(source);
+ const bool fn_exists = global_function_registry.hasFunction(source);
+
if (fn_exists)
{
- fn = registry.getFunction(source);
+ fn = global_function_registry.getFunction(source);
}
else if (fn_info.field_info)
{
Modified: cs/cigma/trunk/src/FunctionRegistry.cpp
===================================================================
--- cs/cigma/trunk/src/FunctionRegistry.cpp 2009-01-21 19:37:42 UTC (rev 13896)
+++ cs/cigma/trunk/src/FunctionRegistry.cpp 2009-01-21 19:37:43 UTC (rev 13897)
@@ -4,12 +4,17 @@
#include "fn_one.h"
#include "fn_test.h"
#include "fn_disloc3d.h"
+#include <cassert>
+
+
using namespace cigma;
-
-#include <cassert>
using namespace std;
using boost::shared_ptr;
+// Global registry
+FunctionRegistry global_function_registry;
+
+// Constructor
FunctionRegistry::FunctionRegistry()
{
//
@@ -32,6 +37,7 @@
this->addFunction("bm.ssnog.displacement", disloc1);
}
+// Destructor
FunctionRegistry::~FunctionRegistry()
{
FunctionMap::iterator it;
Modified: cs/cigma/trunk/src/FunctionRegistry.h
===================================================================
--- cs/cigma/trunk/src/FunctionRegistry.h 2009-01-21 19:37:42 UTC (rev 13896)
+++ cs/cigma/trunk/src/FunctionRegistry.h 2009-01-21 19:37:43 UTC (rev 13897)
@@ -11,7 +11,7 @@
}
/**
- * Internal class for use in the Function::New() factory.
+ * Helper class for providing a scope for globally registered functions.
*/
class cigma::FunctionRegistry
{
@@ -28,4 +28,6 @@
FunctionMap functions;
};
+extern cigma::FunctionRegistry global_function_registry;
+
#endif
More information about the CIG-COMMITS
mailing list