ATLAS Offline Software
Loading...
Searching...
No Matches
IRDBQuery.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3*/
4
5#ifndef RDBACCESSSVC_IRDBQUERY_H
6#define RDBACCESSSVC_IRDBQUERY_H
7
8#include "CoralBase/AttributeList.h"
9#include "CoralBase/Attribute.h"
10#include <string>
11
13{
14 public:
15 IRDBQuery() = default;
16 virtual ~IRDBQuery() = default;
17
18 virtual void execute() = 0;
19 virtual long size() = 0;
20 virtual void finalize() = 0;
21 virtual void setOrder(const std::string&) = 0;
22 virtual void addToOutput(const std::string&) = 0;
23
24 virtual bool next() = 0;
25
26 template<typename T> const T& data(const std::string&);
27 template<typename T> const T& data(unsigned int);
28 bool isNull(const std::string&);
29 bool isNull(unsigned int);
30
31 protected:
32 const coral::AttributeList* m_attrList{nullptr};
33};
34
35template<typename T> const T& IRDBQuery::data(const std::string& field)
36{
37 return (*m_attrList)[field].data<T>();
38}
39
40template<typename T> const T& IRDBQuery::data(unsigned int fieldInd)
41{
42 return (*m_attrList)[fieldInd].data<T>();
43}
44
45inline bool IRDBQuery::isNull(const std::string& field)
46{
47 return (*m_attrList)[field].isNull();
48}
49
50inline bool IRDBQuery::isNull(unsigned int fieldInd)
51{
52 return (*m_attrList)[fieldInd].isNull();
53}
54
55#endif
char data[hepevt_bytes_allocation_ATLAS]
Definition HepEvt.cxx:11
virtual void setOrder(const std::string &)=0
IRDBQuery()=default
virtual void execute()=0
virtual bool next()=0
const coral::AttributeList * m_attrList
Definition IRDBQuery.h:32
virtual void addToOutput(const std::string &)=0
virtual ~IRDBQuery()=default
virtual void finalize()=0
const T & data(const std::string &)
Definition IRDBQuery.h:35
bool isNull(const std::string &)
Definition IRDBQuery.h:45
virtual long size()=0