1 //===----------------------------------------------------------------------===//
2 //
3 //                     The LLVM Compiler Infrastructure
4 //
5 // This file is dual licensed under the MIT and the University of Illinois Open
6 // Source Licenses. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9 //  Adaptation to Boost of the libcxx
10 //  Copyright 2010 Vicente J. Botet Escriba
11 //  Distributed under the Boost Software License, Version 1.0.
12 //  See http://www.boost.org/LICENSE_1_0.txt
13 
14 #ifndef REP_H
15 #define REP_H
16 
17 #include <boost/config.hpp>
18 
19 class Rep
20 {
21 public:
22     int data_;
Rep()23     BOOST_CONSTEXPR Rep() : data_() {}
Rep(int i)24     explicit BOOST_CONSTEXPR Rep(int i) : data_(i) {}
25 
26     BOOST_CONSTEXPR bool operator==(int i) const {return data_ == i;}
27     BOOST_CONSTEXPR bool operator==(const Rep& r) const {return data_ == r.data_;}
28 
29     Rep& operator*=(Rep x) {data_ *= x.data_; return *this;}
30     Rep& operator/=(Rep x) {data_ /= x.data_; return *this;}
31 };
32 
33 #if 0
34 namespace std {
35 
36   template <>
37   struct numeric_limits<Rep>
38   {
39     static BOOST_CONSTEXPR Rep max BOOST_PREVENT_MACRO_SUBSTITUTION ()
40     {
41       return Rep((std::numeric_limits<int>::max)());
42     }
43 
44   };
45 }  // namespace std
46 
47 namespace boost {
48 namespace chrono {
49 template <>
50 struct duration_values<Rep>
51 {
52   static BOOST_CONSTEXPR Rep zero() {return Rep(0);}
53   static BOOST_CONSTEXPR Rep max BOOST_PREVENT_MACRO_SUBSTITUTION ()
54   {
55     return Rep((std::numeric_limits<int>::max)());
56   }
57 
58   static BOOST_CONSTEXPR Rep min BOOST_PREVENT_MACRO_SUBSTITUTION ()
59   {
60     return Rep(detail::numeric_limits<Rep>::lowest());
61   }
62 };
63 
64 }  // namespace chrono
65 }  // namespace boost
66 #endif
67 #endif  // REP_H
68