21 #ifndef ABSTRACT_PRODUCT_STRUCTURE_H 22 #define ABSTRACT_PRODUCT_STRUCTURE_H 24 #ifndef SHEAF_DLL_SPEC_H 25 #include "SheafSystem/sheaf_dll_spec.h" 29 #include "SheafSystem/any.h" 33 #include "SheafSystem/pod_types.h" 110 virtual size_type ub(pod_type xi)
const = 0;
115 virtual void ordinal(pod_type* xtuple, pod_type& xordinal)
const = 0;
120 virtual void tuple(pod_type xordinal, pod_type* xtuple)
const = 0;
130 virtual void put_ubs(
size_type* xubs) = 0;
149 virtual bool is_ancestor_of(
const any *other)
const;
154 virtual bool invariant()
const;
170 #endif // ifndef ABSTRACT_PRODUCT_STRUCTURE_H An abstract class that defines the product structure for an id space.
abstract_product_structure(const abstract_product_structure &xother)
Copy constructor; disabled.
pod_index_type ordinal(pod_index_type xi, pod_index_type xj, size_type xj_ub)
2-tuple to ordinal conversion.
Abstract base class with useful features for all objects.
abstract_product_structure()
Default constructor; disabled.
unsigned long size_type
An unsigned integral type used to represent sizes and capacities.
pod_index_type pod_type
The "plain old data" index type for this.
bool operator==(const singly_linked_list< T, Alloc > &lhs, const singly_linked_list< T, Alloc > &rhs)
Checks if the contents of lhs and rhs are equal, that is, whether lhs.size() == rhs.size() and each element in lhs compares equal with the element in rhs at the same position.
int_type pod_index_type
The plain old data index type.
Namespace for the sheaves component of the sheaf system.
void tuple(pod_index_type x, size_type xj_ub, pod_index_type &xi, pod_index_type &xj)
Ordinal to 2-tuple conversion.