NS-3 based Named Data Networking (NDN) simulator
ndnSIM 2.3: NDN, CCN, CCNx, content centric networks
API Documentation
Main Page
Related Pages
Modules
Namespaces
Classes
Files
File List
File Members
ndnSIM
ndnSIM documentation
All Attributes
All GlobalValues
All LogComponents
All TraceSources
Todo List
Deprecated List
Modules
Namespaces
Classes
Files
File List
File Members
•
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Modules
Pages
cpp11.hpp
Go to the documentation of this file.
1
/*
2
* Copyright (c) 2014, Peter Thorson. All rights reserved.
3
*
4
* Redistribution and use in source and binary forms, with or without
5
* modification, are permitted provided that the following conditions are met:
6
* * Redistributions of source code must retain the above copyright
7
* notice, this list of conditions and the following disclaimer.
8
* * Redistributions in binary form must reproduce the above copyright
9
* notice, this list of conditions and the following disclaimer in the
10
* documentation and/or other materials provided with the distribution.
11
* * Neither the name of the WebSocket++ Project nor the
12
* names of its contributors may be used to endorse or promote products
13
* derived from this software without specific prior written permission.
14
*
15
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
16
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18
* ARE DISCLAIMED. IN NO EVENT SHALL PETER THORSON BE LIABLE FOR ANY
19
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
20
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
21
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
22
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
23
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
24
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25
*
26
*/
27
28
#ifndef WEBSOCKETPP_COMMON_CPP11_HPP
29
#define WEBSOCKETPP_COMMON_CPP11_HPP
30
35
// Hide clang feature detection from other compilers
36
#ifndef __has_feature // Optional of course.
37
#define __has_feature(x) 0 // Compatibility with non-clang compilers.
38
#endif
39
#ifndef __has_extension
40
#define __has_extension __has_feature // Compatibility with pre-3.0 compilers.
41
#endif
42
43
// The code below attempts to use information provided by the build system or
44
// user supplied defines to selectively enable C++11 language and library
45
// features. In most cases features that are targeted individually may also be
46
// selectively disabled via an associated _WEBSOCKETPP_NOXXX_ define.
47
48
#if defined(_WEBSOCKETPP_CPP11_STL_) || __cplusplus >= 201103L || defined(_WEBSOCKETPP_CPP11_STRICT_)
49
// This check tests for blanket c++11 coverage. It can be activated in one
50
// of three ways. Either the compiler itself reports that it is a full
51
// C++11 compiler via the __cplusplus macro or the user/build system
52
// supplies one of the two preprocessor defines below:
53
54
// This is defined to allow other WebSocket++ common headers to enable
55
// C++11 features when they are detected by this file rather than
56
// duplicating the above logic in every common header.
57
#define _WEBSOCKETPP_CPP11_INTERNAL_
58
59
// _WEBSOCKETPP_CPP11_STRICT_
60
//
61
// This define reports to WebSocket++ that 100% of the language and library
62
// features of C++11 are available. Using this define on a non-C++11
63
// compiler will result in problems.
64
65
// _WEBSOCKETPP_CPP11_STL_
66
//
67
// This define enables *most* C++11 options that were implemented early on
68
// by compilers. It is typically used for compilers that have many, but not
69
// all C++11 features. It should be safe to use on GCC 4.7-4.8 and perhaps
70
// earlier.
71
#ifndef _WEBSOCKETPP_NOEXCEPT_TOKEN_
72
#define _WEBSOCKETPP_NOEXCEPT_TOKEN_ noexcept
73
#endif
74
#ifndef _WEBSOCKETPP_CONSTEXPR_TOKEN_
75
#define _WEBSOCKETPP_CONSTEXPR_TOKEN_ constexpr
76
#endif
77
#ifndef _WEBSOCKETPP_INITIALIZER_LISTS_
78
#define _WEBSOCKETPP_INITIALIZER_LISTS_
79
#endif
80
#ifndef _WEBSOCKETPP_NULLPTR_TOKEN_
81
#define _WEBSOCKETPP_NULLPTR_TOKEN_ nullptr
82
#endif
83
#ifndef _WEBSOCKETPP_MOVE_SEMANTICS_
84
#define _WEBSOCKETPP_MOVE_SEMANTICS_
85
#endif
86
#ifndef _WEBSOCKETPP_DEFAULT_DELETE_FUNCTIONS_
87
#define _WEBSOCKETPP_DEFAULT_DELETE_FUNCTIONS_
88
#endif
89
90
#ifndef __GNUC__
91
// GCC as of version 4.9 (latest) does not support std::put_time yet.
92
// so ignore it
93
#define _WEBSOCKETPP_PUTTIME_
94
#endif
95
#else
96
// In the absence of a blanket define, try to use compiler versions or
97
// feature testing macros to selectively enable what we can.
98
99
// Test for noexcept
100
#ifndef _WEBSOCKETPP_NOEXCEPT_TOKEN_
101
#ifdef _WEBSOCKETPP_NOEXCEPT_
102
// build system says we have noexcept
103
#define _WEBSOCKETPP_NOEXCEPT_TOKEN_ noexcept
104
#else
105
#if __has_feature(cxx_noexcept)
106
// clang feature detect says we have noexcept
107
#define _WEBSOCKETPP_NOEXCEPT_TOKEN_ noexcept
108
#elif defined(_MSC_VER) && _MSC_VER >= 1900
109
// Visual Studio 2015+ has noexcept
110
#define _WEBSOCKETPP_NOEXCEPT_TOKEN_ noexcept
111
#else
112
// assume we don't have noexcept
113
#define _WEBSOCKETPP_NOEXCEPT_TOKEN_
114
#endif
115
#endif
116
#endif
117
118
// Test for constexpr
119
#ifndef _WEBSOCKETPP_CONSTEXPR_TOKEN_
120
#ifdef _WEBSOCKETPP_CONSTEXPR_
121
// build system says we have constexpr
122
#define _WEBSOCKETPP_CONSTEXPR_TOKEN_ constexpr
123
#else
124
#if __has_feature(cxx_constexpr)
125
// clang feature detect says we have constexpr
126
#define _WEBSOCKETPP_CONSTEXPR_TOKEN_ constexpr
127
#elif defined(_MSC_VER) && _MSC_VER >= 1900
128
// Visual Studio 2015+ has constexpr
129
#define _WEBSOCKETPP_CONSTEXPR_TOKEN_ constexpr
130
#else
131
// assume we don't have constexpr
132
#define _WEBSOCKETPP_CONSTEXPR_TOKEN_
133
#endif
134
#endif
135
#endif
136
137
// Enable initializer lists on clang when available.
138
#if __has_feature(cxx_generalized_initializers) && !defined(_WEBSOCKETPP_INITIALIZER_LISTS_)
139
#define _WEBSOCKETPP_INITIALIZER_LISTS_
140
#endif
141
142
// Test for nullptr
143
#ifndef _WEBSOCKETPP_NULLPTR_TOKEN_
144
#ifdef _WEBSOCKETPP_NULLPTR_
145
// build system says we have nullptr
146
#define _WEBSOCKETPP_NULLPTR_TOKEN_ nullptr
147
#else
148
#if __has_feature(cxx_nullptr)
149
// clang feature detect says we have nullptr
150
#define _WEBSOCKETPP_NULLPTR_TOKEN_ nullptr
151
#elif defined(_MSC_VER) &&_MSC_VER >= 1600
152
// Visual Studio version that has nullptr
153
#define _WEBSOCKETPP_NULLPTR_TOKEN_ nullptr
154
#else
155
// assume we don't have nullptr
156
#define _WEBSOCKETPP_NULLPTR_TOKEN_ 0
157
#endif
158
#endif
159
#endif
160
#endif
161
162
#endif // WEBSOCKETPP_COMMON_CPP11_HPP
ndnSIM
NFD
websocketpp
websocketpp
common
cpp11.hpp
Generated on Thu Nov 2 2017 03:30:29 for ndnSIM by
1.8.11