00001
00002
00003
00004
00005
00006
00007 #ifndef BALL_NMR_SHIFTMODEL_H
00008 #define BALL_NMR_SHIFTMODEL_H
00009
00010 #ifndef BALL_NMR_SHIFTMODULE_H
00011 # include <BALL/NMR/shiftModule.h>
00012 #endif
00013
00014 #ifndef BALL_DATATYPE_OPTIONS_H
00015 # include <BALL/DATATYPE/options.h>
00016 #endif
00017
00018 #ifndef BALL_FORMAT_PARAMETERS_H
00019 # include <BALL/FORMAT/parameters.h>
00020 #endif
00021
00022 namespace BALL
00023 {
00032 class BALL_EXPORT ShiftModel
00033 : public ShiftModule
00034 {
00035 public:
00036
00037 BALL_CREATE(ShiftModel)
00038
00039
00042
00045 typedef std::list<ShiftModule*> ModuleList;
00046
00051 typedef void * (*CreateMethod) ();
00052
00057 typedef StringHashMap<CreateMethod> CreateMethodMap;
00058
00060
00063
00066 static const char* MODULE_LIST_SECTION;
00067
00069
00072
00075 ShiftModel();
00076
00079 ShiftModel(const String& filename);
00080
00083 ShiftModel(const ShiftModel& model);
00084
00087 virtual ~ShiftModel();
00088
00093 void clear();
00094
00096
00099
00102 Parameters& getParameters();
00103
00106 ModuleList& getModuleList();
00107
00110 void setFilename(const String& filename)
00111 throw(Exception::FileNotFound);
00112
00115 const String& getFilename() const;
00116
00119 void registerModule(const String& name, CreateMethod method)
00120 throw(Exception::NullPointer);
00121
00124 void unregisterModule(const String& name) ;
00125
00127
00130
00133 bool isValid() const;
00134
00137 bool isRegistered(const String& name) const;
00138
00140
00143
00146 const ShiftModel& operator = (const ShiftModel& model);
00147
00150 const ShiftModel& operator = (const String& filename);
00151
00153
00156
00159 Options options;
00160
00162
00165
00168 bool start();
00169
00172 bool finish();
00173
00176 Processor::Result operator () (Composite& composite);
00178
00179 protected:
00180
00181
00182
00183
00184
00185
00186 bool init_()
00187 throw(Exception::FileNotFound);
00188
00189
00190
00191
00192
00193 ShiftModule* createModule_(const String& type, const String& name) const;
00194
00195
00196
00197 void registerStandardModules_();
00198
00199
00200
00201 Parameters parameters_;
00202
00203
00204
00205 ModuleList modules_;
00206
00207
00208
00209 CreateMethodMap registered_modules_;
00210
00211
00212
00213
00214 bool valid_;
00215 };
00216
00217 }
00218
00219 #endif // BALL_NMR_SHIFTMODEL_H