/usr/include/x86_64-linux-gnu/qcc/STLContainer.h is in liballjoyn-common-dev-1604 16.04a-3.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
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 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 | /**
* @file STLContainer.h
*
*
*
*/
/******************************************************************************
* Copyright AllSeen Alliance. All rights reserved.
*
* Permission to use, copy, modify, and/or distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*
******************************************************************************/
#ifndef _STLCONTAINER_H
#define _STLCONTAINER_H
#include <qcc/platform.h>
/***************************
* STANDARD C++11
***************************/
#if (__cplusplus >= 201100L)
/*
* The compiler is conformant to the C++11 standard. Use unordered_map,
* etc. directly.
*/
#include <unordered_map>
#include <unordered_set>
#define _BEGIN_NAMESPACE_CONTAINER_FOR_HASH namespace std {
#define _END_NAMESPACE_CONTAINER_FOR_HASH }
#else
/*
* Compiling with a C++ compiler that predates the C++11 standard. Need to
* map compiler specific arrangements to match the standard arrangement.
*/
/***************************
* DARWIN
***************************/
#if defined(QCC_OS_DARWIN) && (__cplusplus < 201100L)
/*
* Darwin (Mac OSX and iOS) currently put unordered_map, etc. under the tr1
* subdirectory and place their template classes in the std::tr1 namespace.
*/
#include <tr1/unordered_map>
#include <tr1/unordered_set>
#define _BEGIN_NAMESPACE_CONTAINER_FOR_HASH namespace std { namespace tr1 {
#define _END_NAMESPACE_CONTAINER_FOR_HASH } }
namespace std {
/*
* Map everything in the std::tr1 namespace to the std namespace.
*/
using namespace std::tr1;
}
/***************************
* MSVC 2008, 2010
***************************/
#elif defined(_MSC_VER)
#if (_MSC_VER >= 1500)
/*
* MSVC 2008 and later provide unordered_map, etc. in the standard location.
*/
#include <unordered_map>
#include <unordered_set>
#if (_MSC_VER >= 1600)
/*
* MSVC 2010 actually follows the C++11 standard for unordered_map, etc. but
* we are here because it still defined __cplusplus to 199711.
*/
#define _BEGIN_NAMESPACE_CONTAINER_FOR_HASH namespace std {
#define _END_NAMESPACE_CONTAINER_FOR_HASH }
#elif (_MSC_VER >= 1500)
/*
* MSVC 2008 puts unordered_map, etc. in the std::tr1 namespace.
*/
#define _BEGIN_NAMESPACE_CONTAINER_FOR_HASH namespace std { namespace tr1 {
#define _END_NAMESPACE_CONTAINER_FOR_HASH } }
namespace std {
/*
* Map everything in the std::tr1 namespace to the std namespace.
*/
using namespace std::tr1;
}
#endif // MSVC versions
#endif // MSVC version >= 2008
/***************************
* GCC
***************************/
#elif defined(__GNUC__)
/*
* Older versions of GCC use hash_map, etc. instead of unordered_map,
* etc. respectively. Thus we need to map the class names to unordered_*.
* Additionally, the hash_* classes are in the __gnu_cxx namespace.
*/
#include <ext/hash_map>
#include <ext/hash_set>
#define _BEGIN_NAMESPACE_CONTAINER_FOR_HASH namespace __gnu_cxx {
#define _END_NAMESPACE_CONTAINER_FOR_HASH }
#define unordered_map hash_map
#define unordered_multimap hash_multimap
#define unordered_set hash_set
#define unordered_multiset hash_multiset
namespace std {
/*
* Map everything in the __gnu_cxx namespace to the std namespace.
*/
using namespace __gnu_cxx;
}
#else
#error Unsupported Compiler/Platform
#endif // Platforms for C++ prior to C++11
#endif // Standard C++11
#endif // _STLCONTAINER_H
|