CGEM BOSS 6.6.5.g
BESIII Offline Software System
Loading...
Searching...
No Matches
BesCxxPolicy/BesCxxPolicy-00-01-01/CxxFeatures/config.h
Go to the documentation of this file.
1#ifndef CXX_FEATURES_CONFIG_H
2# define CXX_FEATURES_CONFIG_H
3
4# if !HAVE_NAMESPACE_STD
5# define std
6# endif
7
8#if HAVE_CXX_STDC_HEADERS
9# define STDC std
10#else
11# define STDC
12#endif
13
14# if !HAVE_BOOL
15# ifndef bool
16 typedef int bool;
17# endif
18# ifndef true
19# define true 1
20# endif
21# ifndef false
22# define false 0
23# endif
24# endif
25
26# if !HAVE_TYPENAME
27# define typename
28# endif
29
30# if !HAVE_EXPLICIT
31# define explicit
32# endif
33
34# if !HAVE_RESTRICT
35# if HAVE_PRIVATE_RESTRICT
36# define restrict __restrict
37# else
38# define restrict
39# endif
40# endif
41
42# if HAVE_NEW_STYLE_CASTS
43# define STATIC_CAST(type,expr) static_cast<type> (expr)
44# define CONST_CAST(type,expr) const_cast<type> (expr)
45# define REINTERPRET_CAST(type,expr) reinterpret_cast<type> (expr)
46# else
47# define STATIC_CAST(type,expr) ((type)(expr))
48# define CONST_CAST(type,expr) ((type)(expr))
49# define REINTERPRET_CAST(type,expr) ((type)(expr))
50# endif
51
52# if HAVE_DYNAMIC_CAST && HAVE_TYPEID
53# define HAVE_FUNCTIONAL_RTTI 1
54# endif
55
56# if HAVE_TEMPLATE_DEFAULT_ARGS
57# define CXX_T_DEFAULT(x) , x
58# define CXX_T_ONDEFAULT(def,nodef) def
59# else
60# define CXX_T_DEFAULT(x)
61# define CXX_T_ONDEFAULT(def,nodef) nodef
62# endif
63
64# if HAVE_TEMPLATE_NULL_ARGS
65# define TEMPLATE_NULL_ARGS <>
66# else
67# define TEMPLATE_NULL_ARGS
68# endif
69
70# if HAVE_TEMPLATE_NULL_SPEC
71# define TEMPLATE_NULL_SPEC template<>
72# else
73# define TEMPLATE_NULL_SPEC
74# endif
75
76/* # undef CXX_FUNCTION */
77# if HAVE_PRETTY_FUNCTION
78# define CXX_FUNCTION __PRETTY_FUNCTION__
79# elif HAVE_FUNCTION
80# define CXX_FUNCTION __FUNCTION__
81# elif HAVE_FUNC
82# define CXX_FUNCTION __func__
83# endif
84
85# if HAVE_ITERATOR
86# define ITERATOR_BASE(cat,val,diff) : public std::iterator<std::cat##_tag,val,diff>
87# elif HAVE_ITERATOR_TRAITS
88# define ITERATOR_BASE(cat,val,diff)
89# else
90# define ITERATOR_BASE(cat,val,diff) : public std::cat<val,diff>
91# endif
92
93# if HAVE_REVERSE_ITERATOR_STYLE == 1
94# define REVERSE_ITERATOR(tname,tag,iter,value,reference,pointer,difference) \
95 std::reverse_iterator<iter>
96# elif HAVE_REVERSE_ITERATOR_STYLE == 2
97# define REVERSE_ITERATOR(tname,tag,iter,value,reference,pointer,difference) \
98 std::reverse_iterator<iter,std::tag,value,reference,pointer,difference>
99# elif HAVE_REVERSE_ITERATOR_STYLE == 3
100# define REVERSE_ITERATOR(tname,tag,iter,value,reference,pointer,difference) \
101 std::tname<iter,value,reference,pointer,difference>
102# elif HAVE_REVERSE_ITERATOR_STYLE == 4
103# define REVERSE_ITERATOR(tname,tag,iter,value,reference,pointer,difference) \
104 std::os_##tname<iter,value,reference,pointer,difference>
105# else
106# define REVERSE_ITERATOR(tname,tag,iter,value,reference,pointer,difference) \
107 I_don_t_know_how_to_define_reverse_iterator
108# endif
109
110# if HAVE_BROKEN_TEMPLATE_RESCOPE
111# define TEMPLATE_RESCOPE(scope)
112# else
113# define TEMPLATE_RESCOPE(scope) typename scope::
114# endif
115
116# ifdef _MSC_VER
117# pragma warning(disable:4786) // '255' characters in the debug information
118# pragma warning(disable:4244) // conversion from double to float
119# pragma warning(disable:4305) // conversion from double to float (5.0)
120# endif //_MSC_VER
121
122#endif /* CXX_FEATURES_CONFIG_H */