ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
Database
RDBAccessSvc
src
SqliteRecord.h
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
3
*/
4
11
12
#ifndef RDBACCESSSVC_SQLITERECORD_H
13
#define RDBACCESSSVC_SQLITERECORD_H
14
15
#include "
RDBAccessSvc/IRDBRecord.h
"
16
#include <map>
17
#include <memory>
18
#include <variant>
19
#include <string>
20
#include <string_view>
21
#include <tuple>
22
23
enum
SqliteInpType
24
{
25
SQLITEINP_INT
26
,
SQLITEINP_LONG
27
,
SQLITEINP_FLOAT
28
,
SQLITEINP_DOUBLE
29
,
SQLITEINP_STRING
30
,
SQLITEINP_UNDEF
31
};
32
33
typedef
std::variant<int
34
, long
35
,
float
36
,
double
37
, std::string>
SqliteInp
;
38
39
typedef
std::map<std::string,SqliteInpType, std::less<>>
SqliteInpDef
;
40
typedef
std::shared_ptr<SqliteInpDef>
SqliteInpDef_ptr
;
41
47
48
class
SqliteRecord
final :
public
IRDBRecord
49
{
50
public
:
51
SqliteRecord
(
SqliteInpDef_ptr
def);
52
SqliteRecord
() =
delete
;
53
SqliteRecord
(
const
SqliteRecord
&) =
delete
;
54
SqliteRecord
&
operator=
(
const
SqliteRecord
&) =
delete
;
55
57
~SqliteRecord
()
override
;
58
62
bool
isFieldNull
(std::string_view field)
const override
;
63
67
int
getInt
(std::string_view field)
const override
;
68
72
long
getLong
(std::string_view field)
const override
;
73
77
double
getDouble
(std::string_view field)
const override
;
78
82
float
getFloat
(std::string_view field)
const override
;
83
87
virtual
const
std::string&
getString
(std::string_view field)
const override
;
88
89
// Access array values by index
90
// arrays are implemented using the field with names like NAME_0, NAME_1 etc.
91
96
int
getInt
(std::string_view field,
unsigned
int
index
)
const override
;
97
102
long
getLong
(std::string_view field,
unsigned
int
index
)
const override
;
103
108
double
getDouble
(std::string_view field,
unsigned
int
index
)
const override
;
109
114
float
getFloat
(std::string_view field,
unsigned
int
index
)
const override
;
115
120
virtual
const
std::string&
getString
(std::string_view field,
unsigned
int
index
)
const override
;
121
123
void
dump
()
const
;
124
125
void
addValue
(std::string_view field,
SqliteInp
value);
126
127
private
:
128
typedef
std::map<std::string,SqliteInp, std::less<>>
Record
;
129
typedef
Record::const_iterator
RecordCIterator
;
130
enum
FieldCheckCode
131
{
132
FIELD_CHECK_OK
133
,
FIELD_CHECK_BAD_NAME
134
,
FIELD_CHECK_BAD_TYPE
135
,
FIELD_CHECK_NULL_VAL
136
};
137
typedef
std::tuple<RecordCIterator,FieldCheckCode>
FieldCheckResult
;
138
139
SqliteInpDef_ptr
m_def
;
140
Record
m_record
;
141
142
FieldCheckResult
checkField
(std::string_view field,
SqliteInpType
fieldType)
const
;
143
void
handleError
(std::string_view field,
FieldCheckCode
checkCode)
const
;
144
};
145
146
inline
SqliteRecord::FieldCheckResult
SqliteRecord::checkField
(std::string_view field
147
,
SqliteInpType
fieldType)
const
148
{
149
FieldCheckCode
checkCode{
FIELD_CHECK_OK
};
150
RecordCIterator
checkIt{
m_record
.end()};
151
152
auto
defIt =
m_def
->find(field);
153
if
(defIt==
m_def
->end()) checkCode =
FIELD_CHECK_BAD_NAME
;
154
else
if
(defIt->second!=fieldType) checkCode =
FIELD_CHECK_BAD_TYPE
;
155
156
if
(checkCode==
FIELD_CHECK_OK
) {
157
checkIt =
m_record
.find(field);
158
if
(checkIt==
m_record
.end()) {
159
checkCode =
FIELD_CHECK_NULL_VAL
;
160
}
161
}
162
return
std::make_tuple(checkIt,checkCode);
163
}
164
165
#endif
166
IRDBRecord.h
Definition of the abstract IRDBRecord interface.
SqliteInpDef_ptr
std::shared_ptr< SqliteInpDef > SqliteInpDef_ptr
Definition
SqliteRecord.h:40
SqliteInpDef
std::map< std::string, SqliteInpType, std::less<> > SqliteInpDef
Definition
SqliteRecord.h:39
SqliteInp
std::variant< int, long, float, double, std::string > SqliteInp
Definition
SqliteRecord.h:37
SqliteInpType
SqliteInpType
Definition
SqliteRecord.h:24
SQLITEINP_UNDEF
@ SQLITEINP_UNDEF
Definition
SqliteRecord.h:30
SQLITEINP_FLOAT
@ SQLITEINP_FLOAT
Definition
SqliteRecord.h:27
SQLITEINP_STRING
@ SQLITEINP_STRING
Definition
SqliteRecord.h:29
SQLITEINP_DOUBLE
@ SQLITEINP_DOUBLE
Definition
SqliteRecord.h:28
SQLITEINP_LONG
@ SQLITEINP_LONG
Definition
SqliteRecord.h:26
SQLITEINP_INT
@ SQLITEINP_INT
Definition
SqliteRecord.h:25
IRDBRecord
IRDBRecord is one record in the IRDBRecordset object.
Definition
IRDBRecord.h:28
SqliteRecord::isFieldNull
bool isFieldNull(std::string_view field) const override
Check if the field value is NULL.
Definition
SqliteRecord.cxx:28
SqliteRecord::handleError
void handleError(std::string_view field, FieldCheckCode checkCode) const
Definition
SqliteRecord.cxx:157
SqliteRecord::getFloat
float getFloat(std::string_view field) const override
Get float field value.
Definition
SqliteRecord.cxx:61
SqliteRecord::checkField
FieldCheckResult checkField(std::string_view field, SqliteInpType fieldType) const
Definition
SqliteRecord.h:146
SqliteRecord::addValue
void addValue(std::string_view field, SqliteInp value)
Definition
SqliteRecord.cxx:102
SqliteRecord::FieldCheckResult
std::tuple< RecordCIterator, FieldCheckCode > FieldCheckResult
Definition
SqliteRecord.h:137
SqliteRecord::RecordCIterator
Record::const_iterator RecordCIterator
Definition
SqliteRecord.h:129
SqliteRecord::dump
void dump() const
Dump to cout.
Definition
SqliteRecord.cxx:108
SqliteRecord::SqliteRecord
SqliteRecord(const SqliteRecord &)=delete
SqliteRecord::getInt
int getInt(std::string_view field) const override
Get int field value.
Definition
SqliteRecord.cxx:35
SqliteRecord::getString
virtual const std::string & getString(std::string_view field) const override
Get string field value.
Definition
SqliteRecord.cxx:67
SqliteRecord::Record
std::map< std::string, SqliteInp, std::less<> > Record
Definition
SqliteRecord.h:128
SqliteRecord::getDouble
double getDouble(std::string_view field) const override
Get double field value.
Definition
SqliteRecord.cxx:51
SqliteRecord::operator=
SqliteRecord & operator=(const SqliteRecord &)=delete
SqliteRecord::m_def
SqliteInpDef_ptr m_def
Definition
SqliteRecord.h:139
SqliteRecord::getLong
long getLong(std::string_view field) const override
Get long field value.
Definition
SqliteRecord.cxx:45
SqliteRecord::SqliteRecord
SqliteRecord()=delete
SqliteRecord::SqliteRecord
SqliteRecord(SqliteInpDef_ptr def)
Definition
SqliteRecord.cxx:19
SqliteRecord::m_record
Record m_record
Definition
SqliteRecord.h:140
SqliteRecord::~SqliteRecord
~SqliteRecord() override
Destructor.
Definition
SqliteRecord.cxx:24
SqliteRecord::FieldCheckCode
FieldCheckCode
Definition
SqliteRecord.h:131
SqliteRecord::FIELD_CHECK_BAD_TYPE
@ FIELD_CHECK_BAD_TYPE
Definition
SqliteRecord.h:134
SqliteRecord::FIELD_CHECK_OK
@ FIELD_CHECK_OK
Definition
SqliteRecord.h:132
SqliteRecord::FIELD_CHECK_BAD_NAME
@ FIELD_CHECK_BAD_NAME
Definition
SqliteRecord.h:133
SqliteRecord::FIELD_CHECK_NULL_VAL
@ FIELD_CHECK_NULL_VAL
Definition
SqliteRecord.h:135
index
Definition
index.py:1
python.LArMinBiasAlgConfig.float
float
Definition
LArMinBiasAlgConfig.py:66
xAOD::double
double
Definition
CompositeParticle_v1.cxx:159
Generated on
for ATLAS Offline Software by
1.17.0