slic/include
diff -N Module.hh
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ Module.hh 16 Sep 2005 23:03:52 -0000 1.1
@@ -0,0 +1,56 @@
+// $Header: /cvs/lcd/slic/include/Module.hh,v 1.1 2005/09/16 23:03:52 jeremy Exp $
+#ifndef slic_Module_hh
+#define slic_Module_hh 1
+
+// slic
+#include "Verbose.hh"
+#include "G4ActionHandler.hh"
+
+// std
+#include <string>
+
+namespace slic
+{
+ /**
+ * @class Module
+ * @brief Base class for slic modules, providing a few common functions.
+ */
+ class Module : public Verbose
+ {
+ public:
+ enum ModuleStatus {
+ eOkay = 0,
+ eNotInitialized = 1,
+ eBadState = 2,
+ eFatalError = 3
+ };
+
+ protected:
+
+ /* Only concrete Module subclasses can access the ctor. */
+ Module(const std::string& name);
+
+ public:
+ virtual ~Module();
+
+ public:
+
+ const std::string& getName() const {
+ return m_name;
+ }
+
+ const ModuleStatus getStatus() const {
+ return m_status;
+ }
+
+ virtual void initialize() {}
+ virtual void reset() {}
+ virtual void cleanup() {}
+
+ public:
+ ModuleStatus m_status;
+ std::string m_name;
+ };
+}
+
+#endif
slic/src
diff -N Module.cc
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ Module.cc 16 Sep 2005 23:03:52 -0000 1.1
@@ -0,0 +1,18 @@
+// $Header: /cvs/lcd/slic/src/Module.cc,v 1.1 2005/09/16 23:03:52 jeremy Exp $
+#include "Module.hh"
+
+// slic
+#include "ModuleRegistry.hh"
+
+namespace slic
+{
+ Module::Module(const std::string& name)
+ {
+ m_name = name;
+
+ ModuleRegistry::instance()->registerModule(this);
+ }
+
+ Module::~Module()
+ {}
+}