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_