FRIBParallelanalysis  1.0
FrameworkforMPIParalleldataanalysisatFRIB
CConfigurableObject.h
1 /*
2  This software is Copyright by the Board of Trustees of Michigan
3  State University (c) Copyright 2005.
4 
5  You may use this software under the terms of the GNU public license
6  (GPL). The terms of this license are described at:
7 
8  http://www.gnu.org/licenses/gpl.txt
9 
10  Author:
11  Ron Fox
12  NSCL
13  Michigan State University
14  East Lansing, MI 48824-1321
15 */
16 
17 #ifndef CCONFIGURABLEOBJECT_H
18 #define CCONFIGURABLEOBJECT_H
19 
20 #include <string>
21 
22 #ifndef CITEMCONFIGURATION_H
23 #include "CItemConfiguration.h"
24 #endif
25 
54 {
55  // Data:
56 protected:
57  CItemConfiguration* m_pConfiguration;
58 private:
59  bool m_deleteOnDestroy;
60 
61  // Construction and canonicals:
62 
63 public:
66  virtual ~CConfigurableObject();
67 
69  int operator==(const CConfigurableObject& rhs) const;
70  int operator!=(const CConfigurableObject& rhs) const;
71 
72  // Attachment:
73 
74  void Attach(CItemConfiguration* pConfiguration, bool dynamic = true);
75 
76  // Configuration
77 
78  void configure(std::string name, std::string value);
79 
80  // Inquiry:
81 
82  std::string getName() const;
83  std::string cget(std::string name);
84  CItemConfiguration::ConfigurationArray cget();
85 
86 
87  // Concrete classes must implement this interface:
88 
89  virtual void onAttach() = 0; // Define the configuration parameters, normally.
90 
91  // Utilities
92 private:
93  void throwIfNull(const char* message) const;
94 
95 };
96 
97 #endif
CConfigurableObject & operator=(const CConfigurableObject &rsh)
Definition: CConfigurableObject.cpp:53
CItemConfiguration::ConfigurationArray cget()
Definition: CConfigurableObject.cpp:179
int operator==(const CConfigurableObject &rhs) const
Definition: CConfigurableObject.cpp:71
void configure(std::string name, std::string value)
Definition: CConfigurableObject.cpp:136
int operator!=(const CConfigurableObject &rhs) const
Definition: CConfigurableObject.cpp:92
void Attach(CItemConfiguration *pConfiguration, bool dynamic=true)
Definition: CConfigurableObject.cpp:113
Definition: CConfigurableObject.h:53
Definition: CItemConfiguration.h:65
std::string getName() const
Definition: CConfigurableObject.cpp:152