LCOV - code coverage report
Current view: top level - oks/include/oks - index.hpp (source / functions) Coverage Total Hit
Test: code.result Lines: 0.0 % 5 0
Test Date: 2026-07-12 15:23:06 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/query.hpp"
      10              : #include "oks/attribute.hpp"
      11              : #include "oks/object.hpp"
      12              : 
      13              : #include <set>
      14              : 
      15              : namespace dunedaq {
      16              : namespace oks {
      17              : class OksObjectSortBy {
      18              : 
      19              :   public:
      20              : 
      21            0 :     OksObjectSortBy     (size_t i = 0) : offset(i) {;}
      22              : 
      23            0 :     bool operator()     (const OksObject * o1, const OksObject * o2) const {
      24            0 :       return o1->data[offset] < o2->data[offset];
      25              :     }
      26              : 
      27              : 
      28              :   private:
      29              : 
      30              :     size_t offset;
      31              : 
      32              : };
      33              : 
      34              : 
      35              :  class OksIndex : public std::multiset<OksObject *, OksObjectSortBy> {
      36              :   friend class OksClass;
      37              :   friend class OksObject;
      38              : 
      39              : 
      40              :   public:
      41              : 
      42              :       // Declare map of poiters to OksIndex sorted by attribute name
      43              : 
      44              :     struct SortByName {
      45            0 :       bool operator()   (const OksAttribute * a1, const OksAttribute * a2) const {
      46            0 :         return a1->get_name() < a2->get_name();
      47              :       }
      48              :     };
      49              : 
      50              :     typedef std::map<const OksAttribute *, OksIndex *, SortByName> Map;
      51              : 
      52              :     typedef std::multiset<OksObject *, OksObjectSortBy>::iterator Position;
      53              :     typedef std::multiset<OksObject *, OksObjectSortBy>::const_iterator ConstPosition;
      54              : 
      55              : 
      56              :     OksIndex            (OksClass *, OksAttribute *);
      57              :     ~OksIndex           ();
      58              :     
      59              :     OksObject *         FindFirst(OksData *d) const;
      60              : 
      61              :     OksObject::List *   FindEqual(OksData *d) const {return find_all(d, OksQuery::equal_cmp);}
      62              :     OksObject::List *   FindLessEqual(OksData *d) const {return find_all(d, OksQuery::less_or_equal_cmp);}
      63              :     OksObject::List *   FindGreatEqual(OksData *d) const {return find_all(d, OksQuery::greater_or_equal_cmp);}
      64              :     OksObject::List *   FindLess(OksData *d) const {return find_all(d, OksQuery::less_cmp);}
      65              :     OksObject::List *   FindGreat(OksData *d) const {return find_all(d, OksQuery::greater_cmp);}
      66              : 
      67              :     OksObject::List *   FindLessAndGreat(OksData *d1, OksData *d2) const {return find_all(true, d1, OksQuery::less_cmp, d2, OksQuery::greater_cmp);}
      68              :     OksObject::List *   FindLessAndGreatEqual(OksData *d1, OksData *d2) const {return find_all(true, d1, OksQuery::less_cmp, d2, OksQuery::greater_or_equal_cmp);}
      69              :     OksObject::List *   FindLessEqualAndGreat(OksData *d1, OksData *d2) const {return find_all(true, d1, OksQuery::less_or_equal_cmp, d2, OksQuery::greater_cmp);}
      70              :     OksObject::List *   FindLessEqualAndGreatEqual(OksData *d1, OksData *d2) const {return find_all(true, d1, OksQuery::less_or_equal_cmp, d2, OksQuery::greater_or_equal_cmp);}
      71              :     OksObject::List *   FindEqualAndEqual(OksData *d1, OksData *d2) const {return find_all(true, d1, OksQuery::equal_cmp, d2, OksQuery::equal_cmp);}
      72              :     OksObject::List *   FindEqualAndLess(OksData *d1, OksData *d2) const {return find_all(true, d1, OksQuery::equal_cmp, d2, OksQuery::less_cmp);}
      73              :     OksObject::List *   FindEqualAndLessEqual(OksData *d1, OksData *d2) const {return find_all(true, d1, OksQuery::equal_cmp, d2, OksQuery::less_or_equal_cmp);}
      74              :     OksObject::List *   FindEqualAndGreat(OksData *d1, OksData *d2) const {return find_all(true, d1, OksQuery::equal_cmp, d2, OksQuery::greater_cmp);}
      75              :     OksObject::List *   FindEqualAndGreatEqual(OksData *d1, OksData *d2) const {return find_all(true, d1, OksQuery::equal_cmp, d2, OksQuery::greater_or_equal_cmp);}
      76              :     OksObject::List *   FindLessOrGreat(OksData *d1, OksData *d2) const {return find_all(false, d1, OksQuery::less_cmp, d2, OksQuery::greater_cmp);}
      77              :     OksObject::List *   FindLessOrGreatEqual(OksData *d1, OksData *d2) const {return find_all(false, d1, OksQuery::less_cmp, d2, OksQuery::greater_or_equal_cmp);}
      78              :     OksObject::List *   FindLessEqualOrGreat(OksData *d1, OksData *d2) const {return find_all(false, d1, OksQuery::less_or_equal_cmp, d2, OksQuery::greater_cmp);}
      79              :     OksObject::List *   FindLessEqualOrGreatEqual(OksData *d1, OksData *d2) const {return find_all(false, d1, OksQuery::less_or_equal_cmp, d2, OksQuery::greater_or_equal_cmp);}
      80              :     OksObject::List *   FindEqualOrEqual(OksData *d1, OksData *d2) const {return find_all(false, d1, OksQuery::equal_cmp, d2, OksQuery::equal_cmp);}
      81              :     OksObject::List *   FindEqualOrLess(OksData *d1, OksData *d2) const {return find_all(false, d1, OksQuery::equal_cmp, d2, OksQuery::less_cmp);}
      82              :     OksObject::List *   FindEqualOrLessEqual(OksData *d1, OksData *d2) const {return find_all(false, d1, OksQuery::equal_cmp, d2, OksQuery::less_or_equal_cmp);}
      83              :     OksObject::List *   FindEqualOrGreat(OksData *d1, OksData *d2) const {return find_all(false, d1, OksQuery::equal_cmp, d2, OksQuery::greater_cmp);}
      84              :     OksObject::List *   FindEqualOrGreatEqual(OksData *d1, OksData *d2) const {return find_all(false, d1, OksQuery::equal_cmp, d2, OksQuery::greater_or_equal_cmp);}
      85              : 
      86              :   private:
      87              : 
      88              :     OksClass *          c;
      89              :     OksAttribute *      a;
      90              :     size_t              offset;
      91              : 
      92              :     OksObject *         remove_obj(OksObject *);
      93              : 
      94              :     OksObject::List *   find_all(OksData *, OksQuery::Comparator) const;
      95              :     OksObject::List *   find_all(bool, OksData *, OksQuery::Comparator, OksData *, OksQuery::Comparator) const;
      96              : 
      97              :     void                find_interval(OksData *, OksQuery::Comparator, ConstPosition&, ConstPosition&) const;
      98              : 
      99              :     static size_t       get_offset(OksClass *, OksAttribute *);
     100              : 
     101              : };
     102              : } // namespace oks
     103              : } // namespace dunedaq
     104              : #endif
        

Generated by: LCOV version 2.0-1