LCOV - code coverage report
Current view: top level - oks/include/oks - index.hpp (source / functions) Coverage Total Hit
Test: code.result Lines: 0.0 % 6 0
Test Date: 2026-10-11 15:05:20 Functions: 0.0 % 3 0

            Line data    Source code
       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              : 
      15              : namespace dunedaq {
      16              : namespace oks {
      17              : class OksObjectSortBy
      18              : {
      19              : 
      20              : public:
      21            0 :   OksObjectSortBy(size_t i = 0)
      22            0 :     : offset(i)
      23              :   {
      24            0 :     ;
      25            0 :   }
      26              : 
      27            0 :   bool operator()(const OksObject* o1, const OksObject* o2) const { return o1->data[offset] < o2->data[offset]; }
      28              : 
      29              : private:
      30              :   size_t offset;
      31              : };
      32              : 
      33              : class OksIndex : public std::multiset<OksObject*, OksObjectSortBy>
      34              : {
      35              :   friend class OksClass;
      36              :   friend class OksObject;
      37              : 
      38              : public:
      39              :   // Declare map of poiters to OksIndex sorted by attribute name
      40              : 
      41              :   struct SortByName
      42              :   {
      43            0 :     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              : 
      51              :   OksIndex(OksClass*, OksAttribute*);
      52              :   ~OksIndex();
      53              : 
      54              :   OksObject* FindFirst(OksData* d) const;
      55              : 
      56              :   OksObject::List* FindEqual(OksData* d) const { return find_all(d, OksQuery::equal_cmp); }
      57              :   OksObject::List* FindLessEqual(OksData* d) const { return find_all(d, OksQuery::less_or_equal_cmp); }
      58              :   OksObject::List* FindGreatEqual(OksData* d) const { return find_all(d, OksQuery::greater_or_equal_cmp); }
      59              :   OksObject::List* FindLess(OksData* d) const { return find_all(d, OksQuery::less_cmp); }
      60              :   OksObject::List* FindGreat(OksData* d) const { return find_all(d, OksQuery::greater_cmp); }
      61              : 
      62              :   OksObject::List* FindLessAndGreat(OksData* d1, OksData* d2) const
      63              :   {
      64              :     return find_all(true, d1, OksQuery::less_cmp, d2, OksQuery::greater_cmp);
      65              :   }
      66              :   OksObject::List* FindLessAndGreatEqual(OksData* d1, OksData* d2) const
      67              :   {
      68              :     return find_all(true, d1, OksQuery::less_cmp, d2, OksQuery::greater_or_equal_cmp);
      69              :   }
      70              :   OksObject::List* FindLessEqualAndGreat(OksData* d1, OksData* d2) const
      71              :   {
      72              :     return find_all(true, d1, OksQuery::less_or_equal_cmp, d2, OksQuery::greater_cmp);
      73              :   }
      74              :   OksObject::List* FindLessEqualAndGreatEqual(OksData* d1, OksData* d2) const
      75              :   {
      76              :     return find_all(true, d1, OksQuery::less_or_equal_cmp, d2, OksQuery::greater_or_equal_cmp);
      77              :   }
      78              :   OksObject::List* FindEqualAndEqual(OksData* d1, OksData* d2) const
      79              :   {
      80              :     return find_all(true, d1, OksQuery::equal_cmp, d2, OksQuery::equal_cmp);
      81              :   }
      82              :   OksObject::List* FindEqualAndLess(OksData* d1, OksData* d2) const
      83              :   {
      84              :     return find_all(true, d1, OksQuery::equal_cmp, d2, OksQuery::less_cmp);
      85              :   }
      86              :   OksObject::List* FindEqualAndLessEqual(OksData* d1, OksData* d2) const
      87              :   {
      88              :     return find_all(true, d1, OksQuery::equal_cmp, d2, OksQuery::less_or_equal_cmp);
      89              :   }
      90              :   OksObject::List* FindEqualAndGreat(OksData* d1, OksData* d2) const
      91              :   {
      92              :     return find_all(true, d1, OksQuery::equal_cmp, d2, OksQuery::greater_cmp);
      93              :   }
      94              :   OksObject::List* FindEqualAndGreatEqual(OksData* d1, OksData* d2) const
      95              :   {
      96              :     return find_all(true, d1, OksQuery::equal_cmp, d2, OksQuery::greater_or_equal_cmp);
      97              :   }
      98              :   OksObject::List* FindLessOrGreat(OksData* d1, OksData* d2) const
      99              :   {
     100              :     return find_all(false, d1, OksQuery::less_cmp, d2, OksQuery::greater_cmp);
     101              :   }
     102              :   OksObject::List* FindLessOrGreatEqual(OksData* d1, OksData* d2) const
     103              :   {
     104              :     return find_all(false, d1, OksQuery::less_cmp, d2, OksQuery::greater_or_equal_cmp);
     105              :   }
     106              :   OksObject::List* FindLessEqualOrGreat(OksData* d1, OksData* d2) const
     107              :   {
     108              :     return find_all(false, d1, OksQuery::less_or_equal_cmp, d2, OksQuery::greater_cmp);
     109              :   }
     110              :   OksObject::List* FindLessEqualOrGreatEqual(OksData* d1, OksData* d2) const
     111              :   {
     112              :     return find_all(false, d1, OksQuery::less_or_equal_cmp, d2, OksQuery::greater_or_equal_cmp);
     113              :   }
     114              :   OksObject::List* FindEqualOrEqual(OksData* d1, OksData* d2) const
     115              :   {
     116              :     return find_all(false, d1, OksQuery::equal_cmp, d2, OksQuery::equal_cmp);
     117              :   }
     118              :   OksObject::List* FindEqualOrLess(OksData* d1, OksData* d2) const
     119              :   {
     120              :     return find_all(false, d1, OksQuery::equal_cmp, d2, OksQuery::less_cmp);
     121              :   }
     122              :   OksObject::List* FindEqualOrLessEqual(OksData* d1, OksData* d2) const
     123              :   {
     124              :     return find_all(false, d1, OksQuery::equal_cmp, d2, OksQuery::less_or_equal_cmp);
     125              :   }
     126              :   OksObject::List* FindEqualOrGreat(OksData* d1, OksData* d2) const
     127              :   {
     128              :     return find_all(false, d1, OksQuery::equal_cmp, d2, OksQuery::greater_cmp);
     129              :   }
     130              :   OksObject::List* FindEqualOrGreatEqual(OksData* d1, OksData* d2) const
     131              :   {
     132              :     return find_all(false, d1, OksQuery::equal_cmp, d2, OksQuery::greater_or_equal_cmp);
     133              :   }
     134              : 
     135              : private:
     136              :   OksClass* c;
     137              :   OksAttribute* a;
     138              :   size_t offset;
     139              : 
     140              :   OksObject* remove_obj(OksObject*);
     141              : 
     142              :   OksObject::List* find_all(OksData*, OksQuery::Comparator) const;
     143              :   OksObject::List* find_all(bool, OksData*, OksQuery::Comparator, OksData*, OksQuery::Comparator) const;
     144              : 
     145              :   void find_interval(OksData*, OksQuery::Comparator, ConstPosition&, ConstPosition&) const;
     146              : 
     147              :   static size_t get_offset(OksClass*, OksAttribute*);
     148              : };
     149              : } // namespace oks
     150              : } // namespace dunedaq
     151              : #endif
        

Generated by: LCOV version 2.0-1