Multilevel Deduplication Engine (MDE)
Loading...
Searching...
No Matches
Classes | Public Types | Public Member Functions | Static Public Member Functions | Static Public Attributes | Protected Member Functions | Protected Attributes | Friends | List of all members
mde::MDENode< Config, NestingT > Class Template Reference

The main MDENode structure. This class can be used as-is with a type or derived for additional functionality as needed. More...

#include <mde.hpp>

Collaboration diagram for mde::MDENode< Config, NestingT >:
Collaboration graph
[legend]

Classes

struct  Index
 Index returned by an operation. Being defined inside the class ensures type safety and possible future extensions. More...
 
struct  PropertySetHolder
 
class  PropertySetStorage
 

Public Types

using PropertyT = typename Config::PropertyT
 
using PropertyLess = typename Config::PropertyLess
 
using PropertyHash = typename Config::PropertyHash
 
using PropertyEqual = typename Config::PropertyEqual
 
using PropertyPrinter = typename Config::PropertyPrinter
 
using Nesting = NestingT
 
using PropertyElement = typename Nesting::template PropertyElement< PropertyLess, PropertyHash, PropertyEqual, PropertyPrinter >
 
using PropertySet = std::vector< PropertyElement >
 
using PropertySetHash = SetHash< PropertySet, PropertyElement, typename PropertyElement::Hash >
 
using PropertySetFullEqual = SetEqual< PropertySet, PropertyElement, typename PropertyElement::FullEqual >
 
using PropertySetMap = MapAdapter< std::unordered_map< const PropertySet *, IndexValue, PropertySetHash, PropertySetFullEqual > >
 
using UnaryOperationMap = OperationMap< IndexValue >
 
using BinaryOperationMap = OperationMap< OperationNode >
 
using RefList = typename Nesting::MDEReferenceList
 

Public Member Functions

 MDENode (RefList reflist={})
 
bool is_empty (const Index &i) const
 
void clear_and_initialize ()
 Resets state of the MDE to the default.
 
SubsetRelation is_subset (const Index &a, const Index &b) const
 Returns whether we currently know whether a is a subset or a superset of b.
 
Index register_set_single (const PropertyElement &c)
 Inserts a (or gets an existing) single-element set into property set storage.
 
Index register_set_single (const PropertyElement &c, bool &cold)
 Inserts a (or gets an existing) single-element set into the property set storage, and reports whether this set was already present or not.
 
void prepare_vector_set (PropertySet &c)
 
template<bool disable_integrity_check = false>
Index register_set (const PropertySet &c)
 
template<bool disable_integrity_check = false>
Index register_set (const PropertySet &c, bool &cold)
 
template<bool disable_integrity_check = false>
Index register_set (PropertySet &&c)
 
template<bool disable_integrity_check = false>
Index register_set (PropertySet &&c, bool &cold)
 
template<typename Iterator , bool disable_integrity_check = false>
Index register_set (Iterator begin, Iterator end)
 
template<typename Iterator , bool disable_integrity_check = false>
Index register_set (Iterator begin, Iterator end, bool &cold)
 
const PropertySetget_value (const Index &index) const
 Gets the actual property set specified by index.
 
Size property_set_count () const
 Returns the total number of property sets currently in the MDE.
 
Size size_of (const Index &index) const
 Returns the size of the set at index
 
OptionalRef< PropertyElementfind_key (const Index &index, const PropertyT &p) const
 Finds a property element in the set based on the key provided.
 
bool contains (const Index &index, const PropertyElement &prop) const
 Determines whether the property set at index contains the element prop or not.
 
Index set_union (const Index &_a, const Index &_b)
 Calculates, or returns a cached result of the union of a and b
 
Index set_insert_single (const Index &a, const PropertyElement &b)
 Inserts a single element from a given set (and returns the index of the set). This is a wrapper over the union operation.
 
Index set_difference (const Index &a, const Index &b)
 Calculates, or returns a cached result of the difference of a from b
 
Index set_remove_single (const Index &a, const PropertyElement &b)
 Removes a single element from a given set (and returns the index of the set). This is a wrapper over the diffrerence operation.
 
Index set_remove_single_key (const Index &a, const PropertyT &p)
 Removes a single element from a given set if the "key" element matches.
 
Index set_intersection (const Index &_a, const Index &_b)
 Calculates, or returns a cached result of the intersection of a and b
 
Index set_filter (Index s, std::function< bool(const PropertyElement &)> filter_func, UnaryOperationMap &cache)
 Filters a set based on a criterion function. This is supposed to be an abstract filtering mechanism that derived classes will use to implement caching on a filter operation rather than letting them implement their own.
 
String property_set_to_string (const Index &idx) const
 
String dump () const
 Dumps the current state of the MDE to a string.
 
String dump_perf () const
 Dumps performance information as a string.
 

Static Public Member Functions

static bool less (const PropertyElement &a, const PropertyElement &b)
 Less than comparator for operations. You MUST use this instead of directly using anything else like "<".
 
static bool less_key (const PropertyElement &a, const PropertyT &b)
 
static bool less_key (const PropertyElement &a, const PropertyElement &b)
 
static bool equal (const PropertyElement &a, const PropertyElement &b)
 Equality comparator for operations. You MUST use this instead of directly using anything else like "<".
 
static bool equal_key (const PropertyElement &a, const PropertyT &b)
 
static bool equal_key (const PropertyElement &a, const PropertyElement &b)
 
static String property_set_to_string (const PropertySet &set)
 Converts the property set to a string.
 

Static Public Attributes

static constexpr const charname = Config::name
 
static constexpr Size BLOCK_SIZE = Config::BLOCK_SIZE
 
static constexpr Size BLOCK_MASK = Config::BLOCK_MASK
 
static constexpr Size BLOCK_SHIFT = Config::BLOCK_SHIFT
 

Protected Member Functions

void store_subset (const Index &a, const Index &b)
 Stores index a as the subset of index b if a < b, else stores index a as the superset of index b
 
virtual void clear ()
 Removes all data from the MDE.
 

Protected Attributes

RefList reflist
 
PerformanceStatistics stat
 
HashMap< String, OperationPerfperf
 
PropertySetStorage property_sets = {}
 
PropertySetMap property_set_map = {}
 
BinaryOperationMap unions = {}
 
BinaryOperationMap intersections = {}
 
BinaryOperationMap differences = {}
 
InternalMap< OperationNode, SubsetRelationsubsets = {}
 

Friends

std::ostream & operator<< (std::ostream &os, const MDENode &obj)
 

Detailed Description

template<typename Config, typename NestingT = NestingNone<typename Config::PropertyT>>
class mde::MDENode< Config, NestingT >

The main MDENode structure. This class can be used as-is with a type or derived for additional functionality as needed.

Template Parameters
PropertyTThe type of the property. The property type must satisfy the following:
  • It must be hashable with std::hash
  • It must be less-than comparable
  • It can be checked for equality
PropertyLessCustom less-than comparator (if required)
PropertyHashCustom hasher (if required)
PropertyEqualCustom equality comaparator (if required)
PropertyPrinterPropertyT string representation generator
NestingTNesting behaviour of the MDE

Definition at line 951 of file mde.hpp.

Member Typedef Documentation

◆ BinaryOperationMap

template<typename Config , typename NestingT = NestingNone<typename Config::PropertyT>>
using mde::MDENode< Config, NestingT >::BinaryOperationMap = OperationMap<OperationNode>

Definition at line 1079 of file mde.hpp.

◆ Nesting

template<typename Config , typename NestingT = NestingNone<typename Config::PropertyT>>
using mde::MDENode< Config, NestingT >::Nesting = NestingT

Definition at line 958 of file mde.hpp.

◆ PropertyElement

template<typename Config , typename NestingT = NestingNone<typename Config::PropertyT>>
using mde::MDENode< Config, NestingT >::PropertyElement = typename Nesting::template PropertyElement< PropertyLess, PropertyHash, PropertyEqual, PropertyPrinter>

The canonical element of property sets. Changes based on the nesting behaviour supplied.

Definition at line 1014 of file mde.hpp.

◆ PropertyEqual

template<typename Config , typename NestingT = NestingNone<typename Config::PropertyT>>
using mde::MDENode< Config, NestingT >::PropertyEqual = typename Config::PropertyEqual

Definition at line 956 of file mde.hpp.

◆ PropertyHash

template<typename Config , typename NestingT = NestingNone<typename Config::PropertyT>>
using mde::MDENode< Config, NestingT >::PropertyHash = typename Config::PropertyHash

Definition at line 955 of file mde.hpp.

◆ PropertyLess

template<typename Config , typename NestingT = NestingNone<typename Config::PropertyT>>
using mde::MDENode< Config, NestingT >::PropertyLess = typename Config::PropertyLess

Definition at line 954 of file mde.hpp.

◆ PropertyPrinter

template<typename Config , typename NestingT = NestingNone<typename Config::PropertyT>>
using mde::MDENode< Config, NestingT >::PropertyPrinter = typename Config::PropertyPrinter

Definition at line 957 of file mde.hpp.

◆ PropertySet

template<typename Config , typename NestingT = NestingNone<typename Config::PropertyT>>
using mde::MDENode< Config, NestingT >::PropertySet = std::vector<PropertyElement>

The storage structure for property elements. Currently implemented as sorted vectors.

Definition at line 1025 of file mde.hpp.

◆ PropertySetFullEqual

template<typename Config , typename NestingT = NestingNone<typename Config::PropertyT>>
using mde::MDENode< Config, NestingT >::PropertySetFullEqual = SetEqual< PropertySet, PropertyElement, typename PropertyElement::FullEqual>

Definition at line 1033 of file mde.hpp.

◆ PropertySetHash

template<typename Config , typename NestingT = NestingNone<typename Config::PropertyT>>
using mde::MDENode< Config, NestingT >::PropertySetHash = SetHash< PropertySet, PropertyElement, typename PropertyElement::Hash>

Definition at line 1027 of file mde.hpp.

◆ PropertySetMap

template<typename Config , typename NestingT = NestingNone<typename Config::PropertyT>>
using mde::MDENode< Config, NestingT >::PropertySetMap = MapAdapter<std::unordered_map< const PropertySet *, IndexValue, PropertySetHash, PropertySetFullEqual> >

The structure responsible for mapping property sets to their respective unique indices. When a key-value pair is actually inserted into the map, the key is a pointer to a valid storage location held by a member of the property set storage vector.

Note
The reason the 'key type' of the map is a pointer to a property set is because of several reasons:
  • Allows us to query arbitrary/user created property sets on the map.
  • Makes it not necessary to actually directly store the property set as a key.
  • Saves us from having to do some sort of complicated manuever to reserve an index value temporarily and rewrite the hash and equality comparators to retrieve the property sets from the indices instead.

Careful handling, especially in the case of reallocating structures like vectors is needed so that the address of the data does not change. It must remain static for the duration of the existence of the MDE instance.

Definition at line 1071 of file mde.hpp.

◆ PropertyT

template<typename Config , typename NestingT = NestingNone<typename Config::PropertyT>>
using mde::MDENode< Config, NestingT >::PropertyT = typename Config::PropertyT

Definition at line 953 of file mde.hpp.

◆ RefList

template<typename Config , typename NestingT = NestingNone<typename Config::PropertyT>>
using mde::MDENode< Config, NestingT >::RefList = typename Nesting::MDEReferenceList

Definition at line 1080 of file mde.hpp.

◆ UnaryOperationMap

template<typename Config , typename NestingT = NestingNone<typename Config::PropertyT>>
using mde::MDENode< Config, NestingT >::UnaryOperationMap = OperationMap<IndexValue>

Definition at line 1078 of file mde.hpp.

Constructor & Destructor Documentation

◆ MDENode()

template<typename Config , typename NestingT = NestingNone<typename Config::PropertyT>>
mde::MDENode< Config, NestingT >::MDENode ( RefList  reflist = {})
inlineexplicit

Definition at line 1347 of file mde.hpp.

Member Function Documentation

◆ clear()

template<typename Config , typename NestingT = NestingNone<typename Config::PropertyT>>
virtual void mde::MDENode< Config, NestingT >::clear ( )
inlineprotectedvirtual

Removes all data from the MDE.

Definition at line 1337 of file mde.hpp.

◆ clear_and_initialize()

template<typename Config , typename NestingT = NestingNone<typename Config::PropertyT>>
void mde::MDENode< Config, NestingT >::clear_and_initialize ( )
inline

Resets state of the MDE to the default.

Definition at line 1359 of file mde.hpp.

◆ contains()

template<typename Config , typename NestingT = NestingNone<typename Config::PropertyT>>
bool mde::MDENode< Config, NestingT >::contains ( const Index index,
const PropertyElement prop 
) const
inline

Determines whether the property set at index contains the element prop or not.

Parameters
[in]indexThe index
[in]propThe property
Returns
true if prop is in index, false otherwise.

Definition at line 1810 of file mde.hpp.

◆ dump()

template<typename Config , typename NestingT = NestingNone<typename Config::PropertyT>>
String mde::MDENode< Config, NestingT >::dump ( ) const
inline

Dumps the current state of the MDE to a string.

Definition at line 2370 of file mde.hpp.

◆ dump_perf()

template<typename Config , typename NestingT = NestingNone<typename Config::PropertyT>>
String mde::MDENode< Config, NestingT >::dump_perf ( ) const
inline

Dumps performance information as a string.

Note
Conditionally enabled if MDE_ENABLE_PERFORMANCE_METRICS is set.
Returns
String containing performance information as a human-readable string.

Definition at line 2416 of file mde.hpp.

◆ equal()

template<typename Config , typename NestingT = NestingNone<typename Config::PropertyT>>
static bool mde::MDENode< Config, NestingT >::equal ( const PropertyElement a,
const PropertyElement b 
)
inlinestatic

Equality comparator for operations. You MUST use this instead of directly using anything else like "<".

Parameters
[in]aLHS Property
[in]bRHS Property
Returns
Result of doing a == b according to provided semantics.

Definition at line 1745 of file mde.hpp.

◆ equal_key() [1/2]

template<typename Config , typename NestingT = NestingNone<typename Config::PropertyT>>
static bool mde::MDENode< Config, NestingT >::equal_key ( const PropertyElement a,
const PropertyElement b 
)
inlinestatic

Definition at line 1753 of file mde.hpp.

◆ equal_key() [2/2]

template<typename Config , typename NestingT = NestingNone<typename Config::PropertyT>>
static bool mde::MDENode< Config, NestingT >::equal_key ( const PropertyElement a,
const PropertyT b 
)
inlinestatic

Definition at line 1749 of file mde.hpp.

◆ find_key()

template<typename Config , typename NestingT = NestingNone<typename Config::PropertyT>>
OptionalRef< PropertyElement > mde::MDENode< Config, NestingT >::find_key ( const Index index,
const PropertyT p 
) const
inline

Finds a property element in the set based on the key provided.

Parameters
[in]indexSet Index
[in]pKey
Returns
An optional that contains a property element if the key was found.

Definition at line 1767 of file mde.hpp.

◆ get_value()

template<typename Config , typename NestingT = NestingNone<typename Config::PropertyT>>
const PropertySet & mde::MDENode< Config, NestingT >::get_value ( const Index index) const
inline

Gets the actual property set specified by index.

Parameters
[in]indexThe index
Returns
The property set.

Definition at line 1681 of file mde.hpp.

◆ is_empty()

template<typename Config , typename NestingT = NestingNone<typename Config::PropertyT>>
bool mde::MDENode< Config, NestingT >::is_empty ( const Index i) const
inline

Definition at line 1352 of file mde.hpp.

◆ is_subset()

template<typename Config , typename NestingT = NestingNone<typename Config::PropertyT>>
SubsetRelation mde::MDENode< Config, NestingT >::is_subset ( const Index a,
const Index b 
) const
inline

Returns whether we currently know whether a is a subset or a superset of b.

Parameters
[in]aThe first set
[in]bThe second set
Returns
Enum value telling if it's a subset, superset or unknown

Definition at line 1373 of file mde.hpp.

◆ less()

template<typename Config , typename NestingT = NestingNone<typename Config::PropertyT>>
static bool mde::MDENode< Config, NestingT >::less ( const PropertyElement a,
const PropertyElement b 
)
inlinestatic

Less than comparator for operations. You MUST use this instead of directly using anything else like "<".

Parameters
[in]aLHS Property
[in]bRHS Property
Returns
Result of doing a < b according to provided semantics.

Definition at line 1724 of file mde.hpp.

◆ less_key() [1/2]

template<typename Config , typename NestingT = NestingNone<typename Config::PropertyT>>
static bool mde::MDENode< Config, NestingT >::less_key ( const PropertyElement a,
const PropertyElement b 
)
inlinestatic

Definition at line 1732 of file mde.hpp.

◆ less_key() [2/2]

template<typename Config , typename NestingT = NestingNone<typename Config::PropertyT>>
static bool mde::MDENode< Config, NestingT >::less_key ( const PropertyElement a,
const PropertyT b 
)
inlinestatic

Definition at line 1728 of file mde.hpp.

◆ prepare_vector_set()

template<typename Config , typename NestingT = NestingNone<typename Config::PropertyT>>
void mde::MDENode< Config, NestingT >::prepare_vector_set ( PropertySet c)
inline

Deduplicates and sorts a vector (to function equivalently to a set).

The deduplicate-sort function here is based on a stackoverflow answer (chosen for speed metrics): https://stackoverflow.com/a/24477023

Ideally, this shouldn't be used or require being used.

Definition at line 1465 of file mde.hpp.

◆ property_set_count()

template<typename Config , typename NestingT = NestingNone<typename Config::PropertyT>>
Size mde::MDENode< Config, NestingT >::property_set_count ( ) const
inline

Returns the total number of property sets currently in the MDE.

Returns
The count.

Definition at line 1696 of file mde.hpp.

◆ property_set_to_string() [1/2]

template<typename Config , typename NestingT = NestingNone<typename Config::PropertyT>>
String mde::MDENode< Config, NestingT >::property_set_to_string ( const Index idx) const
inline

Definition at line 2294 of file mde.hpp.

◆ property_set_to_string() [2/2]

template<typename Config , typename NestingT = NestingNone<typename Config::PropertyT>>
static String mde::MDENode< Config, NestingT >::property_set_to_string ( const PropertySet set)
inlinestatic

Converts the property set to a string.

Parameters
[in]setThe set
Returns
The string representation of the set.

Definition at line 2283 of file mde.hpp.

◆ register_set() [1/6]

template<typename Config , typename NestingT = NestingNone<typename Config::PropertyT>>
template<bool disable_integrity_check = false>
Index mde::MDENode< Config, NestingT >::register_set ( const PropertySet c)
inline

Definition at line 1480 of file mde.hpp.

◆ register_set() [2/6]

template<typename Config , typename NestingT = NestingNone<typename Config::PropertyT>>
template<bool disable_integrity_check = false>
Index mde::MDENode< Config, NestingT >::register_set ( const PropertySet c,
bool cold 
)
inline

Definition at line 1508 of file mde.hpp.

◆ register_set() [3/6]

template<typename Config , typename NestingT = NestingNone<typename Config::PropertyT>>
template<typename Iterator , bool disable_integrity_check = false>
Index mde::MDENode< Config, NestingT >::register_set ( Iterator  begin,
Iterator  end 
)
inline

Definition at line 1600 of file mde.hpp.

◆ register_set() [4/6]

template<typename Config , typename NestingT = NestingNone<typename Config::PropertyT>>
template<typename Iterator , bool disable_integrity_check = false>
Index mde::MDENode< Config, NestingT >::register_set ( Iterator  begin,
Iterator  end,
bool cold 
)
inline

Definition at line 1629 of file mde.hpp.

◆ register_set() [5/6]

template<typename Config , typename NestingT = NestingNone<typename Config::PropertyT>>
template<bool disable_integrity_check = false>
Index mde::MDENode< Config, NestingT >::register_set ( PropertySet &&  c)
inline

Definition at line 1540 of file mde.hpp.

◆ register_set() [6/6]

template<typename Config , typename NestingT = NestingNone<typename Config::PropertyT>>
template<bool disable_integrity_check = false>
Index mde::MDENode< Config, NestingT >::register_set ( PropertySet &&  c,
bool cold 
)
inline

Definition at line 1568 of file mde.hpp.

◆ register_set_single() [1/2]

template<typename Config , typename NestingT = NestingNone<typename Config::PropertyT>>
Index mde::MDENode< Config, NestingT >::register_set_single ( const PropertyElement c)
inline

Inserts a (or gets an existing) single-element set into property set storage.

Parameters
[in]cThe single-element property set.
Returns
Index of the newly created/existing set.
Todo:
Check whether the cache hit check can be removed.

Definition at line 1395 of file mde.hpp.

◆ register_set_single() [2/2]

template<typename Config , typename NestingT = NestingNone<typename Config::PropertyT>>
Index mde::MDENode< Config, NestingT >::register_set_single ( const PropertyElement c,
bool cold 
)
inline

Inserts a (or gets an existing) single-element set into the property set storage, and reports whether this set was already present or not.

Parameters
[in]cThe single-element property set.
[out]coldReport if this was a cold miss.
Returns
Index of the newly created set.

Definition at line 1430 of file mde.hpp.

◆ set_difference()

template<typename Config , typename NestingT = NestingNone<typename Config::PropertyT>>
Index mde::MDENode< Config, NestingT >::set_difference ( const Index a,
const Index b 
)
inline

Calculates, or returns a cached result of the difference of a from b

Parameters
[in]aThe first set (what to subtract from)
[in]bThe second set (what will be subtracted)
Returns
Index of the new PropertySet.

Definition at line 1985 of file mde.hpp.

◆ set_filter()

template<typename Config , typename NestingT = NestingNone<typename Config::PropertyT>>
Index mde::MDENode< Config, NestingT >::set_filter ( Index  s,
std::function< bool(const PropertyElement &)>  filter_func,
UnaryOperationMap cache 
)
inline

Filters a set based on a criterion function. This is supposed to be an abstract filtering mechanism that derived classes will use to implement caching on a filter operation rather than letting them implement their own.

Parameters
[in]sThe set to filter
[in]filter_funcThe filter function (can be a lambda)
cacheThe cache to use (possibly defined by the user)
Todo:

Implement sort bound optimization

Implement bounding as a seperate function instead

Returns
Index of the filtered set.

Definition at line 2231 of file mde.hpp.

◆ set_insert_single()

template<typename Config , typename NestingT = NestingNone<typename Config::PropertyT>>
Index mde::MDENode< Config, NestingT >::set_insert_single ( const Index a,
const PropertyElement b 
)
inline

Inserts a single element from a given set (and returns the index of the set). This is a wrapper over the union operation.

Parameters
[in]aThe set to insert the element to
[in]bThe element to be inserted.
Returns
Index of the new PropertySet.

Definition at line 1971 of file mde.hpp.

◆ set_intersection()

template<typename Config , typename NestingT = NestingNone<typename Config::PropertyT>>
Index mde::MDENode< Config, NestingT >::set_intersection ( const Index _a,
const Index _b 
)
inline

Calculates, or returns a cached result of the intersection of a and b

Parameters
[in]aThe first set
[in]bThe second set
Returns
Index of the new property set.

Definition at line 2122 of file mde.hpp.

◆ set_remove_single()

template<typename Config , typename NestingT = NestingNone<typename Config::PropertyT>>
Index mde::MDENode< Config, NestingT >::set_remove_single ( const Index a,
const PropertyElement b 
)
inline

Removes a single element from a given set (and returns the index of the set). This is a wrapper over the diffrerence operation.

Parameters
[in]aThe set to remove the element from
[in]bThe element to be removed
Returns
Index of the new PropertySet.

Definition at line 2084 of file mde.hpp.

◆ set_remove_single_key()

template<typename Config , typename NestingT = NestingNone<typename Config::PropertyT>>
Index mde::MDENode< Config, NestingT >::set_remove_single_key ( const Index a,
const PropertyT p 
)
inline

Removes a single element from a given set if the "key" element matches.

Parameters
[in]aThe set to remove the element from
[in]pThe key of the element with that is to be removed
Returns
Index of the new PropertySet.

Definition at line 2097 of file mde.hpp.

◆ set_union()

template<typename Config , typename NestingT = NestingNone<typename Config::PropertyT>>
Index mde::MDENode< Config, NestingT >::set_union ( const Index _a,
const Index _b 
)
inline

Calculates, or returns a cached result of the union of a and b

Parameters
[in]aThe first set
[in]bThe second set
Returns
Index of the new property set.

Definition at line 1853 of file mde.hpp.

◆ size_of()

template<typename Config , typename NestingT = NestingNone<typename Config::PropertyT>>
Size mde::MDENode< Config, NestingT >::size_of ( const Index index) const
inline

Returns the size of the set at index

Parameters
[in]indexThe index
Returns
size of the set.

Definition at line 1707 of file mde.hpp.

◆ store_subset()

template<typename Config , typename NestingT = NestingNone<typename Config::PropertyT>>
void mde::MDENode< Config, NestingT >::store_subset ( const Index a,
const Index b 
)
inlineprotected

Stores index a as the subset of index b if a < b, else stores index a as the superset of index b

Parameters
[in]aThe index of the first set
[in]bThe index of the second set.

Definition at line 1321 of file mde.hpp.

Friends And Related Symbol Documentation

◆ operator<<

template<typename Config , typename NestingT = NestingNone<typename Config::PropertyT>>
std::ostream & operator<< ( std::ostream &  os,
const MDENode< Config, NestingT > &  obj 
)
friend

Definition at line 2403 of file mde.hpp.

Member Data Documentation

◆ BLOCK_MASK

template<typename Config , typename NestingT = NestingNone<typename Config::PropertyT>>
constexpr Size mde::MDENode< Config, NestingT >::BLOCK_MASK = Config::BLOCK_MASK
staticconstexpr

Definition at line 962 of file mde.hpp.

◆ BLOCK_SHIFT

template<typename Config , typename NestingT = NestingNone<typename Config::PropertyT>>
constexpr Size mde::MDENode< Config, NestingT >::BLOCK_SHIFT = Config::BLOCK_SHIFT
staticconstexpr

Definition at line 963 of file mde.hpp.

◆ BLOCK_SIZE

template<typename Config , typename NestingT = NestingNone<typename Config::PropertyT>>
constexpr Size mde::MDENode< Config, NestingT >::BLOCK_SIZE = Config::BLOCK_SIZE
staticconstexpr

Definition at line 961 of file mde.hpp.

◆ differences

template<typename Config , typename NestingT = NestingNone<typename Config::PropertyT>>
BinaryOperationMap mde::MDENode< Config, NestingT >::differences = {}
protected

Definition at line 1310 of file mde.hpp.

◆ intersections

template<typename Config , typename NestingT = NestingNone<typename Config::PropertyT>>
BinaryOperationMap mde::MDENode< Config, NestingT >::intersections = {}
protected

Definition at line 1309 of file mde.hpp.

◆ name

template<typename Config , typename NestingT = NestingNone<typename Config::PropertyT>>
constexpr const char* mde::MDENode< Config, NestingT >::name = Config::name
staticconstexpr

Definition at line 960 of file mde.hpp.

◆ perf

template<typename Config , typename NestingT = NestingNone<typename Config::PropertyT>>
HashMap<String, OperationPerf> mde::MDENode< Config, NestingT >::perf
protected

Definition at line 1087 of file mde.hpp.

◆ property_set_map

template<typename Config , typename NestingT = NestingNone<typename Config::PropertyT>>
PropertySetMap mde::MDENode< Config, NestingT >::property_set_map = {}
protected

Definition at line 1306 of file mde.hpp.

◆ property_sets

template<typename Config , typename NestingT = NestingNone<typename Config::PropertyT>>
PropertySetStorage mde::MDENode< Config, NestingT >::property_sets = {}
protected

Definition at line 1303 of file mde.hpp.

◆ reflist

template<typename Config , typename NestingT = NestingNone<typename Config::PropertyT>>
RefList mde::MDENode< Config, NestingT >::reflist
protected

Definition at line 1083 of file mde.hpp.

◆ stat

template<typename Config , typename NestingT = NestingNone<typename Config::PropertyT>>
PerformanceStatistics mde::MDENode< Config, NestingT >::stat
protected

Definition at line 1086 of file mde.hpp.

◆ subsets

template<typename Config , typename NestingT = NestingNone<typename Config::PropertyT>>
InternalMap<OperationNode, SubsetRelation> mde::MDENode< Config, NestingT >::subsets = {}
protected

Definition at line 1312 of file mde.hpp.

◆ unions

template<typename Config , typename NestingT = NestingNone<typename Config::PropertyT>>
BinaryOperationMap mde::MDENode< Config, NestingT >::unions = {}
protected

Definition at line 1308 of file mde.hpp.


The documentation for this class was generated from the following file: