10 #ifndef __RAT_DBTable__
11 #define __RAT_DBTable__
13 #include <RAT/DBFieldCallback.hh>
14 #include <RAT/HashFunc.hh>
15 #include <RAT/json.hh>
39 std::string GetName()
const {
return tblname; };
40 void SetName(std::string _tblname) {
tblname = _tblname; };
42 std::string GetIndex()
const {
return index; };
43 void SetIndex(std::string _index) {
index = _index; }
111 int GetI(
const std::string &name)
const;
120 double GetD(
const std::string &name)
const;
129 std::string
GetS(
const std::string &name)
const;
138 bool GetZ(
const std::string &name)
const;
147 std::vector<int>
GetIArray(
const std::string &name)
const;
156 std::vector<double>
GetDArray(
const std::string &name)
const;
165 std::vector<std::string>
GetSArray(
const std::string &name)
const;
174 std::vector<bool>
GetZArray(
const std::string &name)
const;
191 template <
typename T>
192 inline T
Get(
const std::string &name)
const;
195 template <
typename T>
196 inline void Set(
const std::string &name,
const T &value) {
230 inline int DBTable::Get<int>(
const std::string &name)
const {
235 inline double DBTable::Get<double>(
const std::string &name)
const {
240 inline std::string DBTable::Get<std::string>(
const std::string &name)
const {
245 inline bool RAT::DBTable::Get<bool>(
const std::string &name)
const {
250 inline std::vector<int> RAT::DBTable::Get<std::vector<int>>(
const std::string &name)
const {
251 return GetIArray(name);
255 inline std::vector<double> RAT::DBTable::Get<std::vector<double>>(
const std::string &name)
const {
256 return GetDArray(name);
260 inline std::vector<std::string> RAT::DBTable::Get<std::vector<std::string>>(
const std::string &name)
const {
261 return GetSArray(name);
265 inline std::vector<bool> RAT::DBTable::Get<std::vector<bool>>(
const std::string &name)
const {
266 return GetZArray(name);
270 inline json::Value RAT::DBTable::Get<json::Value>(
const std::string &name)
const {
271 return GetJSON(name);
283 DBNotFoundError(
const std::string &_table,
const std::string &_index,
const std::string &_field)
284 : table(_table), index(_index), field(_field){};
288 return table == other.table && index == other.index && field == other.field;
312 DBWrongTypeError(
const std::string &_table,
const std::string &_index,
const std::string &_field,
314 :
DBNotFoundError(_table, _index, _field), requestedType(_requestedType), actualType(_actualType){};
318 return table == other.table && index == other.index && field == other.field &&
319 requestedType == other.requestedType && actualType == other.actualType;
Definition: DBFieldCallback.hh:9
Definition: DBTable.hh:275
bool operator==(const DBNotFoundError &other) const
Definition: DBTable.hh:287
DBNotFoundError(const std::string &_table, const std::string &_index, const std::string &_field)
Definition: DBTable.hh:283
Definition: DBTable.hh:25
FieldType GetFieldType(std::string name) const
Definition: DBTable.cc:78
std::string index
Definition: DBTable.hh:208
std::vector< int > GetValidRuns() const
Definition: DBTable.cc:37
std::string GetS(const std::string &name) const
Definition: DBTable.cc:158
bool UsesRunList() const
Definition: DBTable.hh:61
int GetRunBegin() const
Definition: DBTable.hh:48
void SetDArrayDeferred(std::string name, DBFieldCallback *callback)
Definition: DBTable.hh:204
std::string tblname
Definition: DBTable.hh:204
void SetRunList(std::vector< int > _run_list)
Definition: DBTable.cc:68
void SetRunRange(int _run_begin, int _run_end)
Definition: DBTable.hh:65
void Set(const std::string &name, const T &value)
Definition: DBTable.hh:196
std::vector< bool > GetZArray(const std::string &name) const
Definition: DBTable.cc:228
bool useRunList
Definition: DBTable.hh:212
bool IsDefault() const
Definition: DBTable.cc:54
std::vector< std::string > GetFieldList() const
Definition: DBTable.cc:122
std::vector< int > run_list
Definition: DBTable.hh:213
int run_end
Definition: DBTable.hh:210
std::vector< std::string > GetSArray(const std::string &name) const
Definition: DBTable.cc:219
bool IsValidRun(const int run)
Definition: DBTable.cc:61
T Get(const std::string &name) const
bool GetZ(const std::string &name) const
Definition: DBTable.cc:167
~DBTable()
Definition: DBTable.cc:33
json::Value table
Definition: DBTable.hh:216
FieldType
Definition: DBTable.hh:80
@ NOTFOUND
Definition: DBTable.hh:81
stlplus::hash< std::string, RAT::DBFieldCallback *, pyhash > datbl_deferred
Definition: DBTable.hh:225
int GetI(const std::string &name) const
Definition: DBTable.cc:140
void SetIArrayDeferred(std::string name, DBFieldCallback *callback)
Definition: DBTable.hh:201
stlplus::hash< std::string, RAT::DBFieldCallback *, pyhash > iatbl_deferred
Definition: DBTable.hh:222
int run_begin
Definition: DBTable.hh:209
double GetD(const std::string &name) const
Definition: DBTable.cc:149
bool IsUser() const
Definition: DBTable.cc:47
void SetDefault()
Definition: DBTable.hh:75
std::vector< int > GetIArray(const std::string &name) const
Definition: DBTable.cc:176
int GetRunEnd() const
Definition: DBTable.hh:50
DBTable()
Definition: DBTable.cc:6
stlplus::hash< std::string, FieldType, pyhash > arrayTypeCache
Definition: DBTable.hh:219
json::Value GetJSON(const std::string &name) const
Definition: DBTable.cc:237
std::vector< double > GetDArray(const std::string &name) const
Definition: DBTable.cc:194
void SetUser()
Definition: DBTable.hh:73
Definition: DBTable.hh:300
bool operator==(const DBWrongTypeError &other) const
Definition: DBTable.hh:317
DBWrongTypeError(const std::string &_table, const std::string &_index, const std::string &_field, RAT::DBTable::FieldType _requestedType, RAT::DBTable::FieldType _actualType)
Definition: DBTable.hh:312
Definition: CCCrossSecMessenger.hh:29