annotate DEPENDENCIES/generic/include/boost/icl/gregorian.hpp @ 133:4acb5d8d80b6 tip

Don't fail environmental check if README.md exists (but .txt and no-suffix don't)
author Chris Cannam
date Tue, 30 Jul 2019 12:25:44 +0100
parents 2665513ce2d3
children
rev   line source
Chris@16 1 /*-----------------------------------------------------------------------------+
Chris@16 2 Copyright (c) 2008-2009: Joachim Faulhaber
Chris@16 3 +------------------------------------------------------------------------------+
Chris@16 4 Distributed under the Boost Software License, Version 1.0.
Chris@16 5 (See accompanying file LICENCE.txt or copy at
Chris@16 6 http://www.boost.org/LICENSE_1_0.txt)
Chris@16 7 +-----------------------------------------------------------------------------*/
Chris@16 8 #ifndef BOOST_ICL_GREGORIAN_DATE_HPP_JOFA_080416
Chris@16 9 #define BOOST_ICL_GREGORIAN_DATE_HPP_JOFA_080416
Chris@16 10
Chris@16 11 #include <boost/icl/detail/boost_config.hpp>
Chris@16 12 #include <boost/detail/workaround.hpp>
Chris@16 13
Chris@16 14 #ifdef BOOST_MSVC
Chris@16 15 #pragma warning(push)
Chris@16 16 #pragma warning(disable:4100) // unreferenced formal parameter
Chris@16 17 #pragma warning(disable:4127) // conditional expression is constant
Chris@16 18 #pragma warning(disable:4244) // 'argument' : conversion from 'int' to 'unsigned short', possible loss of data
Chris@16 19 #pragma warning(disable:4702) // boost\lexical_cast.hpp(1159) : warning C4702: unreachable code
Chris@16 20 #pragma warning(disable:4996) // Function call with parameters that may be unsafe - this call relies on the caller to check that the passed values are correct. To disable this warning, use -D_SCL_SECURE_NO_WARNINGS. See documentation on how to use Visual C++ 'Checked Iterators'
Chris@16 21 #endif
Chris@16 22
Chris@16 23 #include <stdio.h>
Chris@16 24 #include <string>
Chris@16 25 #include <sstream>
Chris@16 26 #include <iostream>
Chris@16 27 #include <boost/date_time/gregorian/gregorian.hpp>
Chris@16 28
Chris@16 29 #ifdef BOOST_MSVC
Chris@16 30 #pragma warning(pop)
Chris@16 31 #endif
Chris@16 32
Chris@16 33 #include <boost/icl/type_traits/identity_element.hpp>
Chris@16 34 #include <boost/icl/type_traits/is_discrete.hpp>
Chris@16 35 #include <boost/icl/type_traits/difference_type_of.hpp>
Chris@16 36 #include <boost/icl/type_traits/size_type_of.hpp>
Chris@16 37
Chris@16 38 namespace boost{namespace icl
Chris@16 39 {
Chris@16 40 template<> struct is_discrete<boost::gregorian::date>
Chris@16 41 {
Chris@16 42 typedef is_discrete type;
Chris@16 43 BOOST_STATIC_CONSTANT(bool, value = true);
Chris@16 44 };
Chris@16 45
Chris@16 46 template<>
Chris@16 47 inline boost::gregorian::date identity_element<boost::gregorian::date>::value()
Chris@16 48 {
Chris@16 49 return boost::gregorian::date(boost::gregorian::min_date_time);
Chris@16 50 }
Chris@16 51
Chris@16 52 template<>
Chris@16 53 struct identity_element<boost::gregorian::date_duration>
Chris@16 54 {
Chris@16 55 static boost::gregorian::date_duration value()
Chris@16 56 {
Chris@16 57 return boost::gregorian::date(boost::gregorian::min_date_time)
Chris@16 58 - boost::gregorian::date(boost::gregorian::min_date_time);
Chris@16 59 }
Chris@16 60 };
Chris@16 61
Chris@16 62 template<>
Chris@16 63 struct has_difference<boost::gregorian::date>
Chris@16 64 {
Chris@16 65 typedef has_difference type;
Chris@16 66 BOOST_STATIC_CONSTANT(bool, value = true);
Chris@16 67 };
Chris@16 68
Chris@16 69 template<>
Chris@16 70 struct difference_type_of<boost::gregorian::date>
Chris@16 71 { typedef boost::gregorian::date_duration type; };
Chris@16 72
Chris@16 73 template<>
Chris@16 74 struct size_type_of<boost::gregorian::date>
Chris@16 75 { typedef boost::gregorian::date_duration type; };
Chris@16 76
Chris@16 77
Chris@16 78
Chris@16 79 // ------------------------------------------------------------------------
Chris@16 80 inline boost::gregorian::date operator ++(boost::gregorian::date& x)
Chris@16 81 {
Chris@16 82 return x += boost::gregorian::date::duration_type::unit();
Chris@16 83 }
Chris@16 84
Chris@16 85 inline boost::gregorian::date operator --(boost::gregorian::date& x)
Chris@16 86 {
Chris@16 87 return x -= boost::gregorian::date::duration_type::unit();
Chris@16 88 }
Chris@16 89
Chris@16 90 // ------------------------------------------------------------------------
Chris@16 91 template<> struct is_discrete<boost::gregorian::date_duration>
Chris@16 92 {
Chris@16 93 typedef is_discrete type;
Chris@16 94 BOOST_STATIC_CONSTANT(bool, value = true);
Chris@16 95 };
Chris@16 96
Chris@16 97 template<>
Chris@16 98 struct has_difference<boost::gregorian::date_duration>
Chris@16 99 {
Chris@16 100 typedef has_difference type;
Chris@16 101 BOOST_STATIC_CONSTANT(bool, value = true);
Chris@16 102 };
Chris@16 103
Chris@16 104 template<>
Chris@16 105 struct size_type_of<boost::gregorian::date_duration>
Chris@16 106 {
Chris@16 107 typedef boost::gregorian::date_duration type;
Chris@16 108 };
Chris@16 109
Chris@16 110 inline boost::gregorian::date_duration operator ++(boost::gregorian::date_duration& x)
Chris@16 111 {
Chris@16 112 return x += boost::gregorian::date::duration_type::unit();
Chris@16 113 }
Chris@16 114
Chris@16 115 inline boost::gregorian::date_duration operator --(boost::gregorian::date_duration& x)
Chris@16 116 {
Chris@16 117 return x -= boost::gregorian::date::duration_type::unit();
Chris@16 118 }
Chris@16 119
Chris@16 120 // ------------------------------------------------------------------------
Chris@16 121
Chris@16 122
Chris@16 123 }} // namespace icl boost
Chris@16 124
Chris@16 125 #endif
Chris@16 126
Chris@16 127