Line data Source code
1 : // Copyright 2024 Accenture. 2 : 3 : /** 4 : * Contains IMerger interface. 5 : * \file IMerger.h 6 : * \ingroup filter 7 : */ 8 : #pragma once 9 : 10 : namespace can 11 : { 12 : class BitFieldFilter; 13 : class AbstractStaticBitFieldFilter; 14 : class IntervalFilter; 15 : 16 : /** 17 : * interface for class that are able to merge with other filter classes 18 : * @class IMerger 19 : * 20 : * 21 : * \see BitFieldFilter 22 : * \see AbstractStaticBitFieldFilter 23 : * \see IntervalFilter 24 : */ 25 : class IMerger 26 : { 27 : public: 28 78 : IMerger() = default; 29 : IMerger(IMerger const&) = delete; 30 : IMerger& operator=(IMerger const&) = delete; 31 : 32 : /** 33 : * merges with a BitFieldFilter 34 : * \param filter BitFieldFilter to merge with 35 : */ 36 : virtual void mergeWithBitField(BitFieldFilter const& filter) = 0; 37 : 38 : /** 39 : * merges with a AbstractStaticBitFieldFilter 40 : * \param filter AbstractStaticBitFieldFilter to merge with 41 : */ 42 : virtual void mergeWithStaticBitField(AbstractStaticBitFieldFilter const& filter) = 0; 43 : 44 : /** 45 : * merges with a IntervalFilter 46 : * \param filter IntervalFilter to merge with 47 : */ 48 : virtual void mergeWithInterval(IntervalFilter const& filter) = 0; 49 : }; 50 : 51 : } // namespace can