summaryrefslogtreecommitdiff
path: root/stdcpp.h
blob: ec90476526566c026212218eb5034cbd0460a0e1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
#ifndef CRYPTOPP_STDCPP_H
#define CRYPTOPP_STDCPP_H

#if _MSC_VER >= 1500
#define _DO_NOT_DECLARE_INTERLOCKED_INTRINSICS_IN_MEMORY
#include <intrin.h>
#endif

#include <stddef.h>
#include <assert.h>
#include <limits.h>
#include <stdlib.h>
#include <string.h>

// http://marshall.calepin.co/c-and-xcode-46.html. Apple does some wonky stuff with
//   <memory>, auto_ptr and unique_ptr. Apple's built-in Clang behaves
//   differently than a LLVM downloaded and compiled CLang. So we fall back to Clang's
//   __has_include (http://clang.llvm.org/docs/LanguageExtensions.html#id3).
#if (__cplusplus >= 201103L) && !defined(__clang__)
#    include <memory>
#elif defined(__clang__)
#   if (__has_include(<tr1/memory>))
#      include <tr1/memory>
#   endif
#elif (__cplusplus < 201103L)
#   include <tr1/memory>
#else
#   include <memory>
#endif

#include <map>
#include <vector>
#include <string>
#include <limits>
#include <exception>
#include <typeinfo>
#include <algorithm>
#include <functional>

#ifdef CRYPTOPP_INCLUDE_VECTOR_CC
// workaround needed on Sun Studio 12u1 Sun C++ 5.10 SunOS_i386 128229-02 2009/09/21
#include <vector.cc>
#endif

// for alloca
// #ifdef __sun
// #include <alloca.h>
// #elif defined(__MINGW32__) || defined(__BORLANDC__)
// #include <malloc.h>
// #endif

// Nearly everyone gets alloca from <alloca.h>.
#if defined(CRYPTOPP_UNIX_AVAILABLE) && !defined(__MINGW32__) && !defined(__BORLANDC__)
# include <alloca.h>
#endif

// Windows includes alloca in <malloc.h>.
#if defined(CRYPTOPP_WIN32_AVAILABLE) || defined(__MINGW32__) || defined(__BORLANDC__)
# include <malloc.h>
#endif

#ifdef _MSC_VER
#pragma warning(disable: 4231)	// re-disable this
#ifdef _CRTAPI1
#define CRYPTOPP_MSVCRT6
#endif
#endif

#endif