PolyBoRi
order_traits.h
Go to the documentation of this file.
1 // -*- c++ -*-
2 //*****************************************************************************
13 //*****************************************************************************
14 
15 #ifndef polybori_orderings_order_traits_h_
16 #define polybori_orderings_order_traits_h_
17 
18 // include basic definitions
19 #include <polybori/pbori_defs.h>
20 
21 // include ordering tags
22 #include "order_tags.h"
23 
25 
26 template <class OrderTag>
28 
29 template <>
30 struct order_traits_code<lex_tag> { enum {order_code = CTypes::lp}; };
31 template <>
32 struct order_traits_code<dlex_tag> { enum {order_code = CTypes::dlex}; };
33 template <>
34 struct order_traits_code<dp_asc_tag> { enum {order_code = CTypes::dp_asc}; };
35 template <>
36 struct order_traits_code<block_dlex_tag> { enum {order_code = CTypes::block_dlex}; };
37 template <>
38 struct order_traits_code<block_dp_asc_tag> { enum {order_code = CTypes::block_dp_asc}; };
39 
40 template <class OrderTag>
42 
43 template <class BaseOrderTag>
44 class order_traits<block_tag<BaseOrderTag> > {
45 public:
46  enum { order_code = order_traits_code<block_tag<BaseOrderTag> >::order_code,
48 };
49 
50 template <class OrderTag>
51 class order_traits {
52 public:
54  baseorder_code = order_code };
55 };
56 
58 
59 #endif // order_traits_h_