PolyBoRi
COrderingTags.h
Go to the documentation of this file.
1 // -*- c++ -*-
2 //*****************************************************************************
15 //*****************************************************************************
16 
17 #ifndef polybori_orderings_COrderingTags_h_
18 #define polybori_orderings_COrderingTags_h_
19 
20 // include basic definitions
21 #include <polybori/pbori_defs.h>
22 
23 // include basic definitions for tags
24 #include <polybori/common/tags.h>
25 #include "order_tags.h"
26 
28 
34 template <class OrderTag,
35  class LexProp, class DegOrderProp, class BlockOrderProp,
36  class DescendingProp,
37  class OrderedProp = LexProp,
38  class TotelDegOrderProp = DegOrderProp,
39  class SymmetryProp = typename invert_tag<BlockOrderProp>::type >
40 
42 public:
43  typedef OrderTag order_tag;
44  typedef LexProp lex_property;
45  typedef OrderedProp ordered_property;
46  typedef SymmetryProp symmetry_property;
47  typedef DegOrderProp degorder_property;
48  typedef BlockOrderProp blockorder_property;
49  typedef TotelDegOrderProp totaldegorder_property;
53  typedef DescendingProp descending_property;
54 };
55 
56 template <class OrderTag, class DescProp>
58  public COrderingTagsBase <OrderTag,
59  invalid_tag, valid_tag, invalid_tag, DescProp> {
60 };
61 
62 template <class OrderTag, class DescProp>
64  public COrderingTagsBase <OrderTag,
65  invalid_tag, invalid_tag, valid_tag, DescProp> {
66 };
67 
68 template <class OrderTag>
70 
71 template <>
73  public COrderingTagsBase <lex_tag, valid_tag, invalid_tag, invalid_tag, valid_tag> { };
74 
75 template <>
77  public CDegreeOrderingTags <dlex_tag, valid_tag> { };
78 
79 
80 template <>
82  public CDegreeOrderingTags<dp_asc_tag, invalid_tag> { };
83 
84 template <>
86  public CBlockDegreeOrderingTags<block_dlex_tag, valid_tag> { };
87 
88 
89 template <>
91  public CBlockDegreeOrderingTags<block_dp_asc_tag, invalid_tag> { };
92 
94 
95 #endif
This class shows, whether a property of an order is invalid.
Definition: tags.h:27
and_tag< DegOrderProp, ascending_property >::type degrevlexorder_property
Definition: COrderingTags.h:52
#define END_NAMESPACE_PBORI
Finish project's namespace.
Definition: pbori_defs.h:77
LexProp lex_property
Definition: COrderingTags.h:44
SymmetryProp symmetry_property
Definition: COrderingTags.h:46
#define BEGIN_NAMESPACE_PBORI
Start project's namespace.
Definition: pbori_defs.h:74
DegOrderProp degorder_property
Definition: COrderingTags.h:47
Marker for deg-lex ordering.
Definition: order_tags.h:32
Definition: COrderingTags.h:63
BlockOrderProp blockorder_property
Definition: COrderingTags.h:48
Marker for lex ordering.
Definition: order_tags.h:27
DescendingProp descending_property
Definition: COrderingTags.h:53
Changes valid_tag -> invalid_tag and vice versa.
Definition: tags.h:39
OrderedProp ordered_property
Definition: COrderingTags.h:45
Marker for ascending deg-rev-lex ordering.
Definition: order_tags.h:37
Marker for block orderings.
Definition: order_tags.h:43
This tempalte class is base for classes which define ordering tags and properties.
Definition: COrderingTags.h:69
OrderTag order_tag
Definition: COrderingTags.h:43
Definition: COrderingTags.h:41
Definition: COrderingTags.h:57
invert_tag< DescendingProp >::type ascending_property
Definition: COrderingTags.h:50
TotelDegOrderProp totaldegorder_property
Definition: COrderingTags.h:49