PolyBoRi
tags.h
Go to the documentation of this file.
1 // -*- c++ -*-
2 //*****************************************************************************
13 //*****************************************************************************
14 
15 #ifndef polybori_common_common_tags_h_
16 #define polybori_common_common_tags_h_
17 
18 // include basic definitions
19 #include <polybori/pbori_defs.h>
21 
23 
27 struct invalid_tag { };
28 
32 struct valid_tag { };
33 
34 
38 template <class Tag>
39 struct invert_tag;
40 
41 template <>
42 struct invert_tag<valid_tag> { typedef invalid_tag type; };
43 
44 template <>
45 struct invert_tag<invalid_tag> { typedef valid_tag type; };
46 
50 template <class Tag1, class Tag2>
51 struct and_tag { typedef invalid_tag type; };
52 
53 template <>
54 struct and_tag<valid_tag, valid_tag> { typedef valid_tag type; };
55 
56 
60 struct navigator_tag {};
61 
65 template <class ValidityTag>
67 public:
68 
70  typedef ValidityTag easy_equality_property;
71 };
72 
73 
75 
76 #endif // order_tags_h_
This class shows, whether a property of an order is invalid.
Definition: tags.h:27
valid_tag type
Definition: tags.h:54
#define END_NAMESPACE_PBORI
Finish project's namespace.
Definition: pbori_defs.h:77
#define BEGIN_NAMESPACE_PBORI
Start project's namespace.
Definition: pbori_defs.h:74
Definition: tags.h:66
invalid_tag type
Definition: tags.h:51
Changes valid_tag -> invalid_tag and vice versa.
Definition: tags.h:39
ValidityTag easy_equality_property
Set marker for validity.
Definition: tags.h:70
invalid_tag type
Definition: tags.h:42
for iterator_category
Definition: tags.h:60
valid_tag type
Definition: tags.h:45
and_tag -> valid_tag, otherwise invalid_tag.
Definition: tags.h:51
This class shows, whether a property of an order is valid.
Definition: tags.h:32