DUNE-DAQ
DUNE Trigger and Data Acquisition software
Loading...
Searching...
No Matches
index.hpp
Go to the documentation of this file.
1// DUNE DAQ modification notice:
2// This file has been modified from the original ATLAS oks source for the DUNE DAQ project.
3// Fork baseline commit: oks-08-03-04 (2022-04-14).
4// Renamed since fork: yes (from oks/index.h to include/oks/index.hpp).
5
6#ifndef __OKS_INDEX
7#define __OKS_INDEX
8
9#include "oks/attribute.hpp"
10#include "oks/object.hpp"
11#include "oks/query.hpp"
12
13#include <set>
14
15namespace dunedaq {
16namespace oks {
18{
19
20public:
21 OksObjectSortBy(size_t i = 0)
22 : offset(i)
23 {
24 ;
25 }
26
27 bool operator()(const OksObject* o1, const OksObject* o2) const { return o1->data[offset] < o2->data[offset]; }
28
29private:
30 size_t offset;
31};
32
33class OksIndex : public std::multiset<OksObject*, OksObjectSortBy>
34{
35 friend class OksClass;
36 friend class OksObject;
37
38public:
39 // Declare map of poiters to OksIndex sorted by attribute name
40
42 {
43 bool operator()(const OksAttribute* a1, const OksAttribute* a2) const { return a1->get_name() < a2->get_name(); }
44 };
45
46 typedef std::map<const OksAttribute*, OksIndex*, SortByName> Map;
47
48 typedef std::multiset<OksObject*, OksObjectSortBy>::iterator Position;
49 typedef std::multiset<OksObject*, OksObjectSortBy>::const_iterator ConstPosition;
50
52 ~OksIndex();
53
54 OksObject* FindFirst(OksData* d) const;
55
61
83 {
84 return find_all(true, d1, OksQuery::equal_cmp, d2, OksQuery::less_cmp);
85 }
99 {
100 return find_all(false, d1, OksQuery::less_cmp, d2, OksQuery::greater_cmp);
101 }
115 {
116 return find_all(false, d1, OksQuery::equal_cmp, d2, OksQuery::equal_cmp);
117 }
119 {
120 return find_all(false, d1, OksQuery::equal_cmp, d2, OksQuery::less_cmp);
121 }
127 {
128 return find_all(false, d1, OksQuery::equal_cmp, d2, OksQuery::greater_cmp);
129 }
134
135private:
138 size_t offset;
139
141
144
146
147 static size_t get_offset(OksClass*, OksAttribute*);
148};
149} // namespace oks
150} // namespace dunedaq
151#endif
OKS attribute class.
Definition attribute.hpp:94
const std::string & get_name() const noexcept
out stream operator
OksObject::List * FindLessEqualAndGreatEqual(OksData *d1, OksData *d2) const
Definition index.hpp:74
static size_t get_offset(OksClass *, OksAttribute *)
Definition index.cpp:16
friend class OksClass
Definition index.hpp:35
OksObject::List * FindGreatEqual(OksData *d) const
Definition index.hpp:58
std::multiset< OksObject *, OksObjectSortBy >::const_iterator ConstPosition
Definition index.hpp:49
OksObject::List * FindEqualOrGreatEqual(OksData *d1, OksData *d2) const
Definition index.hpp:130
OksObject::List * FindLessEqual(OksData *d) const
Definition index.hpp:57
OksObject::List * FindEqualOrLessEqual(OksData *d1, OksData *d2) const
Definition index.hpp:122
OksObject::List * FindEqualAndGreat(OksData *d1, OksData *d2) const
Definition index.hpp:90
OksObject::List * FindLessAndGreatEqual(OksData *d1, OksData *d2) const
Definition index.hpp:66
OksObject::List * FindLessEqualOrGreatEqual(OksData *d1, OksData *d2) const
Definition index.hpp:110
std::multiset< OksObject *, OksObjectSortBy >::iterator Position
Definition index.hpp:48
OksObject::List * FindLessOrGreatEqual(OksData *d1, OksData *d2) const
Definition index.hpp:102
OksAttribute * a
Definition index.hpp:137
OksObject::List * FindLessOrGreat(OksData *d1, OksData *d2) const
Definition index.hpp:98
OksObject::List * FindGreat(OksData *d) const
Definition index.hpp:60
OksObject * FindFirst(OksData *d) const
Definition index.cpp:111
OksObject::List * FindEqualAndGreatEqual(OksData *d1, OksData *d2) const
Definition index.hpp:94
OksObject::List * FindLessEqualOrGreat(OksData *d1, OksData *d2) const
Definition index.hpp:106
OksObject::List * FindEqual(OksData *d) const
Definition index.hpp:56
std::map< const OksAttribute *, OksIndex *, SortByName > Map
Definition index.hpp:46
OksObject * remove_obj(OksObject *)
Definition index.cpp:94
OksObject::List * FindEqualAndLess(OksData *d1, OksData *d2) const
Definition index.hpp:82
OksObject::List * FindEqualOrEqual(OksData *d1, OksData *d2) const
Definition index.hpp:114
OksObject::List * FindEqualAndEqual(OksData *d1, OksData *d2) const
Definition index.hpp:78
OksObject::List * FindLess(OksData *d) const
Definition index.hpp:59
OksObject::List * find_all(OksData *, OksQuery::Comparator) const
Definition index.cpp:163
OksObject::List * FindEqualAndLessEqual(OksData *d1, OksData *d2) const
Definition index.hpp:86
friend class OksObject
Definition index.hpp:36
OksObject::List * FindLessAndGreat(OksData *d1, OksData *d2) const
Definition index.hpp:62
OksObject::List * FindEqualOrLess(OksData *d1, OksData *d2) const
Definition index.hpp:118
OksObject::List * FindEqualOrGreat(OksData *d1, OksData *d2) const
Definition index.hpp:126
OksIndex(OksClass *, OksAttribute *)
Definition index.cpp:22
void find_interval(OksData *, OksQuery::Comparator, ConstPosition &, ConstPosition &) const
Definition index.cpp:124
OksObject::List * FindLessEqualAndGreat(OksData *d1, OksData *d2) const
Definition index.hpp:70
bool operator()(const OksObject *o1, const OksObject *o2) const
Definition index.hpp:27
OksObject describes instance of OksClass.
Definition object.hpp:1144
std::list< OksObject * > List
Definition object.hpp:1179
static bool equal_cmp(const OksData *, const OksData *)
Definition query.cpp:56
bool(*) Comparator(const OksData *, const OksData *)
Definition query.hpp:95
static bool greater_cmp(const OksData *, const OksData *)
Definition query.cpp:81
static bool less_or_equal_cmp(const OksData *, const OksData *)
Definition query.cpp:66
static bool greater_or_equal_cmp(const OksData *, const OksData *)
Definition query.cpp:71
static bool less_cmp(const OksData *, const OksData *)
Definition query.cpp:76
The DUNE-DAQ namespace.
Struct OKS data.
Definition object.hpp:510
bool operator()(const OksAttribute *a1, const OksAttribute *a2) const
Definition index.hpp:43