~ubuntu-branches/ubuntu/saucy/deal.ii/saucy

« back to all changes in this revision

Viewing changes to contrib/boost/include/boost/type_traits/is_class.hpp

  • Committer: Package Import Robot
  • Author(s): "Adam C. Powell, IV", Adam C. Powell, IV, Christophe Trophime
  • Date: 2012-02-21 06:57:30 UTC
  • mfrom: (3.1.7 sid)
  • Revision ID: package-import@ubuntu.com-20120221065730-r2iz70lg557wcd2e
Tags: 7.1.0-1
[ Adam C. Powell, IV ]
* New upstream (closes: #652057).
* Updated to use PETSc and SLEPc 3.2, and forward-ported all patches.
* Removed NetCDF Build-Depends because it uses serial HDF5.
* Made Sacado cmath patch work with new configure.
* Moved -dev package symlink lines in rules to arch all section.

[ Christophe Trophime ]
* debian/rules:
   - add dh_strip --dbg-package to generate dbg package (closes: #652058)
   - add .install files to simplify rules
* Add support for mumps, arpack (closes: #637655)
* Add patch for slepc 3.2 (closes: #659245)

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
//  (C) Copyright Dave Abrahams, Steve Cleary, Beman Dawes, Howard
2
 
//  Hinnant & John Maddock 2000-2003.
3
 
//  Use, modification and distribution are subject to the Boost Software License,
4
 
//  Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
5
 
//  http://www.boost.org/LICENSE_1_0.txt).
6
 
//
7
 
//  See http://www.boost.org/libs/type_traits for most recent version including documentation.
8
 
 
9
 
 
10
 
#ifndef BOOST_TT_IS_CLASS_HPP_INCLUDED
11
 
#define BOOST_TT_IS_CLASS_HPP_INCLUDED
12
 
 
13
 
#include <boost/type_traits/config.hpp>
14
 
#include <boost/type_traits/intrinsics.hpp>
15
 
#ifndef BOOST_IS_CLASS
16
 
#   include <boost/type_traits/is_union.hpp>
17
 
#   include <boost/type_traits/detail/ice_and.hpp>
18
 
#   include <boost/type_traits/detail/ice_not.hpp>
19
 
 
20
 
#ifdef BOOST_TT_HAS_CONFORMING_IS_CLASS_IMPLEMENTATION
21
 
#   include <boost/type_traits/detail/yes_no_type.hpp>
22
 
#else
23
 
#   include <boost/type_traits/is_scalar.hpp>
24
 
#   include <boost/type_traits/is_array.hpp>
25
 
#   include <boost/type_traits/is_reference.hpp>
26
 
#   include <boost/type_traits/is_void.hpp>
27
 
#   include <boost/type_traits/is_function.hpp>
28
 
#endif
29
 
 
30
 
#endif // BOOST_IS_CLASS
31
 
 
32
 
#ifdef __EDG_VERSION__
33
 
#   include <boost/type_traits/remove_cv.hpp>
34
 
#endif
35
 
 
36
 
// should be the last #include
37
 
#include <boost/type_traits/detail/bool_trait_def.hpp>
38
 
 
39
 
namespace boost {
40
 
 
41
 
namespace detail {
42
 
 
43
 
#ifndef BOOST_IS_CLASS
44
 
#ifdef BOOST_TT_HAS_CONFORMING_IS_CLASS_IMPLEMENTATION
45
 
 
46
 
// This is actually the conforming implementation which works with
47
 
// abstract classes.  However, enough compilers have trouble with
48
 
// it that most will use the one in
49
 
// boost/type_traits/object_traits.hpp. This implementation
50
 
// actually works with VC7.0, but other interactions seem to fail
51
 
// when we use it.
52
 
 
53
 
// is_class<> metafunction due to Paul Mensonides
54
 
// (leavings@attbi.com). For more details:
55
 
// http://groups.google.com/groups?hl=en&selm=000001c1cc83%24e154d5e0%247772e50c%40c161550a&rnum=1
56
 
#if defined(__GNUC__)  && !defined(__EDG_VERSION__)
57
 
 
58
 
template <class U> ::boost::type_traits::yes_type is_class_tester(void(U::*)(void));
59
 
template <class U> ::boost::type_traits::no_type is_class_tester(...);
60
 
 
61
 
template <typename T>
62
 
struct is_class_impl
63
 
{
64
 
 
65
 
    BOOST_STATIC_CONSTANT(bool, value =
66
 
        (::boost::type_traits::ice_and<
67
 
            sizeof(is_class_tester<T>(0)) == sizeof(::boost::type_traits::yes_type),
68
 
            ::boost::type_traits::ice_not< ::boost::is_union<T>::value >::value
69
 
        >::value)
70
 
        );
71
 
};
72
 
 
73
 
#else
74
 
 
75
 
template <typename T>
76
 
struct is_class_impl
77
 
{
78
 
    template <class U> static ::boost::type_traits::yes_type is_class_tester(void(U::*)(void));
79
 
    template <class U> static ::boost::type_traits::no_type is_class_tester(...);
80
 
 
81
 
    BOOST_STATIC_CONSTANT(bool, value =
82
 
        (::boost::type_traits::ice_and<
83
 
            sizeof(is_class_tester<T>(0)) == sizeof(::boost::type_traits::yes_type),
84
 
            ::boost::type_traits::ice_not< ::boost::is_union<T>::value >::value
85
 
        >::value)
86
 
        );
87
 
};
88
 
 
89
 
#endif
90
 
 
91
 
#else
92
 
 
93
 
template <typename T>
94
 
struct is_class_impl
95
 
{
96
 
#   ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
97
 
    BOOST_STATIC_CONSTANT(bool, value =
98
 
    (::boost::type_traits::ice_and<
99
 
        ::boost::type_traits::ice_not< ::boost::is_union<T>::value >::value,
100
 
        ::boost::type_traits::ice_not< ::boost::is_scalar<T>::value >::value,
101
 
        ::boost::type_traits::ice_not< ::boost::is_array<T>::value >::value,
102
 
        ::boost::type_traits::ice_not< ::boost::is_reference<T>::value>::value,
103
 
        ::boost::type_traits::ice_not< ::boost::is_void<T>::value >::value,
104
 
        ::boost::type_traits::ice_not< ::boost::is_function<T>::value >::value
105
 
        >::value));
106
 
#   else
107
 
    BOOST_STATIC_CONSTANT(bool, value =
108
 
    (::boost::type_traits::ice_and<
109
 
        ::boost::type_traits::ice_not< ::boost::is_union<T>::value >::value,
110
 
        ::boost::type_traits::ice_not< ::boost::is_scalar<T>::value >::value,
111
 
        ::boost::type_traits::ice_not< ::boost::is_array<T>::value >::value,
112
 
        ::boost::type_traits::ice_not< ::boost::is_reference<T>::value>::value,
113
 
        ::boost::type_traits::ice_not< ::boost::is_void<T>::value >::value
114
 
        >::value));
115
 
#   endif
116
 
};
117
 
 
118
 
# endif // BOOST_TT_HAS_CONFORMING_IS_CLASS_IMPLEMENTATION
119
 
# else // BOOST_IS_CLASS
120
 
template <typename T>
121
 
struct is_class_impl
122
 
{
123
 
    BOOST_STATIC_CONSTANT(bool, value = BOOST_IS_CLASS(T));
124
 
};
125
 
# endif // BOOST_IS_CLASS
126
 
 
127
 
} // namespace detail
128
 
 
129
 
# ifdef __EDG_VERSION__
130
 
BOOST_TT_AUX_BOOL_TRAIT_DEF1(
131
 
   is_class,T, boost::detail::is_class_impl<typename boost::remove_cv<T>::type>::value)
132
 
# else 
133
 
BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_class,T,::boost::detail::is_class_impl<T>::value)
134
 
# endif
135
 
    
136
 
} // namespace boost
137
 
 
138
 
#include <boost/type_traits/detail/bool_trait_undef.hpp>
139
 
 
140
 
#endif // BOOST_TT_IS_CLASS_HPP_INCLUDED