PolyBoRi
tags.h
Go to the documentation of this file.
00001 // -*- c++ -*-
00002 //*****************************************************************************
00013 //*****************************************************************************
00014 
00015 #ifndef polybori_common_common_tags_h_
00016 #define polybori_common_common_tags_h_
00017 
00018 // include basic definitions
00019 #include <polybori/pbori_defs.h>
00020 #include <polybori/orderings/order_tags.h>
00021 
00022 BEGIN_NAMESPACE_PBORI
00023 
00027 struct invalid_tag { };
00028 
00032 struct valid_tag { };
00033 
00034 
00038 template <class Tag>
00039 struct invert_tag;
00040 
00041 template <>
00042 struct invert_tag<valid_tag> { typedef invalid_tag type; };
00043 
00044 template <>
00045 struct invert_tag<invalid_tag> { typedef valid_tag type; };
00046 
00050 template <class Tag1, class Tag2>
00051 struct and_tag { typedef invalid_tag type; };
00052 
00053 template <>
00054 struct and_tag<valid_tag, valid_tag> { typedef valid_tag type; };
00055 
00056 
00060 struct navigator_tag {};
00061 
00065 template <class ValidityTag>
00066 class equality_property {
00067 public:
00068 
00070   typedef ValidityTag easy_equality_property;
00071 };
00072 
00073 
00074 END_NAMESPACE_PBORI
00075 
00076 #endif // order_tags_h_