COrderingTags.h
Go to the documentation of this file.
// -*- c++ -*-
//*****************************************************************************
//*****************************************************************************
#ifndef polybori_orderings_COrderingTags_h_
#define polybori_orderings_COrderingTags_h_
// include basic definitions
#include <polybori/pbori_defs.h>
// include basic definitions for tags
#include <polybori/common/tags.h>
#include "order_tags.h"
BEGIN_NAMESPACE_PBORI
template <class OrderTag,
class LexProp, class DegOrderProp, class BlockOrderProp,
class DescendingProp,
class OrderedProp = LexProp,
class TotelDegOrderProp = DegOrderProp,
class SymmetryProp = typename invert_tag<BlockOrderProp>::type >
class COrderingTagsBase {
public:
typedef OrderTag order_tag;
typedef LexProp lex_property;
typedef OrderedProp ordered_property;
typedef SymmetryProp symmetry_property;
typedef DegOrderProp degorder_property;
typedef BlockOrderProp blockorder_property;
typedef TotelDegOrderProp totaldegorder_property;
typedef typename invert_tag<DescendingProp>::type ascending_property;
typedef typename and_tag<DegOrderProp, ascending_property>::type
degrevlexorder_property;
typedef DescendingProp descending_property;
};
template <class OrderTag, class DescProp>
class CDegreeOrderingTags:
public COrderingTagsBase <OrderTag,
invalid_tag, valid_tag, invalid_tag, DescProp> {
};
template <class OrderTag, class DescProp>
class CBlockDegreeOrderingTags:
public COrderingTagsBase <OrderTag,
invalid_tag, invalid_tag, valid_tag, DescProp> {
};
template <class OrderTag>
class COrderingTags;
template <>
class COrderingTags<lex_tag>:
public COrderingTagsBase <lex_tag, valid_tag, invalid_tag, invalid_tag, valid_tag> { };
template <>
class COrderingTags<dlex_tag>:
public CDegreeOrderingTags <dlex_tag, valid_tag> { };
template <>
class COrderingTags<dp_asc_tag>:
public CDegreeOrderingTags<dp_asc_tag, invalid_tag> { };
template <>
class COrderingTags<block_dlex_tag>:
public CBlockDegreeOrderingTags<block_dlex_tag, valid_tag> { };
template <>
class COrderingTags<block_dp_asc_tag>:
public CBlockDegreeOrderingTags<block_dp_asc_tag, invalid_tag> { };
END_NAMESPACE_PBORI
#endif
polybori::invalid_tag
This class shows, whether a property of an order is invalid.
Definition: tags.h:27
polybori::COrderingTagsBase::degrevlexorder_property
and_tag< DegOrderProp, ascending_property >::type degrevlexorder_property
Definition: COrderingTags.h:52
END_NAMESPACE_PBORI
#define END_NAMESPACE_PBORI
Finish project's namespace.
Definition: pbori_defs.h:77
polybori::COrderingTagsBase::lex_property
LexProp lex_property
Definition: COrderingTags.h:44
polybori::COrderingTagsBase::symmetry_property
SymmetryProp symmetry_property
Definition: COrderingTags.h:46
BEGIN_NAMESPACE_PBORI
#define BEGIN_NAMESPACE_PBORI
Start project's namespace.
Definition: pbori_defs.h:74
polybori::COrderingTagsBase::degorder_property
DegOrderProp degorder_property
Definition: COrderingTags.h:47
polybori::dlex_tag
Marker for deg-lex ordering.
Definition: order_tags.h:32
polybori::CBlockDegreeOrderingTags
Definition: COrderingTags.h:63
polybori::COrderingTagsBase::blockorder_property
BlockOrderProp blockorder_property
Definition: COrderingTags.h:48
polybori::lex_tag
Marker for lex ordering.
Definition: order_tags.h:27
order_tags.h
polybori::COrderingTagsBase::descending_property
DescendingProp descending_property
Definition: COrderingTags.h:53
polybori::invert_tag
Changes valid_tag -> invalid_tag and vice versa.
Definition: tags.h:39
pbori_defs.h
polybori::COrderingTagsBase::ordered_property
OrderedProp ordered_property
Definition: COrderingTags.h:45
polybori::dp_asc_tag
Marker for ascending deg-rev-lex ordering.
Definition: order_tags.h:37
polybori::block_tag
Marker for block orderings.
Definition: order_tags.h:43
polybori::COrderingTags
This tempalte class is base for classes which define ordering tags and properties.
Definition: COrderingTags.h:69
polybori::COrderingTagsBase::order_tag
OrderTag order_tag
Definition: COrderingTags.h:43
tags.h
polybori::COrderingTagsBase
Definition: COrderingTags.h:41
polybori::CDegreeOrderingTags
Definition: COrderingTags.h:57
polybori::COrderingTagsBase::ascending_property
invert_tag< DescendingProp >::type ascending_property
Definition: COrderingTags.h:50
polybori::COrderingTagsBase::totaldegorder_property
TotelDegOrderProp totaldegorder_property
Definition: COrderingTags.h:49