00001
00002
00003
00004
00005
00006
00007
00008
00009 #ifndef BALL_FORMAT_PARAMETERSECTION_H
00010 #define BALL_FORMAT_PARAMETERSECTION_H
00011
00012 #ifndef BALL_DATATYPE_OPTIONS_H
00013 # include <BALL/DATATYPE/options.h>
00014 #endif
00015
00016 namespace BALL
00017 {
00018 class Parameters;
00019
00039 class BALL_EXPORT ParameterSection
00040 {
00041 public:
00042
00043 BALL_CREATE(ParameterSection)
00044
00045
00046
00048 static const String UNDEFINED;
00049
00050
00054
00056 enum
00057 {
00058 MAX_FIELDS = 20
00059 };
00060
00062
00066
00069 ParameterSection() ;
00070
00073 ParameterSection(const ParameterSection& parameter_section) ;
00074
00077 virtual ~ParameterSection() ;
00078
00080
00083
00092 bool extractSection(Parameters& parameters, const String& section_name)
00093 ;
00094
00099 const String& getSectionName() const
00100 ;
00101
00106 const String& getValue(const String& key, const String& variable) const
00107 ;
00108
00117 bool has(const String& key, const String& variable) const ;
00118
00123 bool has(const String& key) const ;
00124
00127 bool hasVariable(const String& variable) const ;
00128
00133 Position getColumnIndex(const String& variable) const ;
00134
00137 Size getNumberOfVariables() const ;
00138
00141 Size getNumberOfKeys() const ;
00142
00146 const String& getValue(Position key_index, Position variable_index)
00147 const ;
00148
00153 const String& getKey(Position key_index) const ;
00154
00156
00159
00162 virtual void clear()
00163 ;
00164
00167 const ParameterSection& operator = (const ParameterSection& section)
00168 ;
00169
00171
00174
00177 virtual bool isValid() const ;
00178
00181 bool operator == (const ParameterSection& parameter_section) const
00182 ;
00183
00185
00188
00193 Options options;
00194
00196
00197 protected:
00198
00199
00200
00201 String section_name_;
00202
00203
00204
00205 String format_line_;
00206
00207
00208
00209
00210 StringHashMap<Index> section_entries_;
00211
00212
00213
00214 StringHashMap<Index> variable_names_;
00215
00216
00217
00218
00219
00220 std::vector<String> entries_;
00221
00222
00223
00224 std::vector<String> keys_;
00225
00226
00227
00228
00229 Size number_of_variables_;
00230
00231
00232
00233 std::vector<float> version_;
00234
00235
00236
00237 bool valid_;
00238
00239 };
00240 }
00241
00242 #endif // BALL_FORMAT_PARAMETERSECTION_H