00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00047 #ifndef STLSOFT_INCL_STLSOFT_MEMORY_HPP_ALLOCATOR_SELECTOR
00048 #define STLSOFT_INCL_STLSOFT_MEMORY_HPP_ALLOCATOR_SELECTOR
00049
00050 #ifndef STLSOFT_DOCUMENTATION_SKIP_SECTION
00051 # define STLSOFT_VER_STLSOFT_MEMORY_HPP_ALLOCATOR_SELECTOR_MAJOR 2
00052 # define STLSOFT_VER_STLSOFT_MEMORY_HPP_ALLOCATOR_SELECTOR_MINOR 1
00053 # define STLSOFT_VER_STLSOFT_MEMORY_HPP_ALLOCATOR_SELECTOR_REVISION 3
00054 # define STLSOFT_VER_STLSOFT_MEMORY_HPP_ALLOCATOR_SELECTOR_EDIT 26
00055 #endif
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070 #ifndef STLSOFT_INCL_STLSOFT_H_STLSOFT
00071 # include <stlsoft/stlsoft.h>
00072 #endif
00073 #ifndef STLSOFT_INCL_STLSOFT_MEMORY_HPP_ALLOCATOR_FEATURES
00074 # include <stlsoft/memory/allocator_features.hpp>
00075 #endif
00076
00077
00078
00079
00080 #if defined(STLSOFT_ALLOCATOR_SELECTOR_NO_USE_STLSOFT_MALLOC_ALLOCATOR) && \
00081 defined(STLSOFT_ALLOCATOR_SELECTOR_USE_STLSOFT_MALLOC_ALLOCATOR)
00082
00083 # undef STLSOFT_ALLOCATOR_SELECTOR_USE_STLSOFT_MALLOC_ALLOCATOR
00084 #endif
00085
00086 #if defined(STLSOFT_ALLOCATOR_SELECTOR_NO_USE_STLSOFT_NEW_ALLOCATOR) && \
00087 defined(STLSOFT_ALLOCATOR_SELECTOR_USE_STLSOFT_NEW_ALLOCATOR)
00088
00089 # undef STLSOFT_ALLOCATOR_SELECTOR_USE_STLSOFT_NEW_ALLOCATOR
00090 #endif
00091
00092 #if defined(STLSOFT_ALLOCATOR_SELECTOR_NO_USE_STD_ALLOCATOR) && \
00093 defined(STLSOFT_ALLOCATOR_SELECTOR_USE_STD_ALLOCATOR)
00094
00095 # undef STLSOFT_ALLOCATOR_SELECTOR_USE_STD_ALLOCATOR
00096 #endif
00097
00098
00099
00100 #if defined(STLSOFT_COMPILER_IS_BORLAND) || \
00101 ( defined(STLSOFT_COMPILER_IS_DMC) && \
00102 __DMC__ < 0x0845) || \
00103 ( defined(STLSOFT_COMPILER_IS_GCC) && \
00104 __GNUC__ < 3)
00105
00106
00107
00108
00109
00110 # define STLSOFT_ALLOCATOR_SELECTOR_USE_STLSOFT_NEW_ALLOCATOR
00111 #elif defined(STLSOFT_COMPILER_IS_WATCOM) || \
00112 ( defined(STLSOFT_COMPILER_IS_MSVC) && \
00113 _MSC_VER >= 1400)
00114
00115
00116
00117
00118
00119 # define STLSOFT_ALLOCATOR_SELECTOR_USE_STLSOFT_MALLOC_ALLOCATOR
00120 #else
00121
00122 # if !defined(STLSOFT_ALLOCATOR_SELECTOR_USE_STLSOFT_MALLOC_ALLOCATOR) && \
00123 !defined(STLSOFT_ALLOCATOR_SELECTOR_USE_STLSOFT_NEW_ALLOCATOR) && \
00124 !defined(STLSOFT_ALLOCATOR_SELECTOR_USE_STD_ALLOCATOR)
00125 # if !defined(STLSOFT_ALLOCATOR_SELECTOR_NO_USE_STD_ALLOCATOR)
00126 # define STLSOFT_ALLOCATOR_SELECTOR_USE_STD_ALLOCATOR
00127 # elif !defined(STLSOFT_ALLOCATOR_SELECTOR_NO_USE_STLSOFT_NEW_ALLOCATOR)
00128 # define STLSOFT_ALLOCATOR_SELECTOR_USE_STLSOFT_NEW_ALLOCATOR
00129 # elif !defined(STLSOFT_ALLOCATOR_SELECTOR_NO_USE_STLSOFT_MALLOC_ALLOCATOR)
00130 # define STLSOFT_ALLOCATOR_SELECTOR_USE_STLSOFT_MALLOC_ALLOCATOR
00131 # else
00132 # error All allocator types disabled. You must enable one or more, by disabling one or more of
00133 # error symbols STLSOFT_ALLOCATOR_SELECTOR_NO_USE_STD_ALLOCATOR,
00134 # error STLSOFT_ALLOCATOR_SELECTOR_NO_USE_STLSOFT_NEW_ALLOCATOR
00135 # error or STLSOFT_ALLOCATOR_SELECTOR_NO_USE_STLSOFT_MALLOC_ALLOCATOR.
00136 # endif
00137 # endif
00138 #endif
00139
00140
00141
00142
00143
00144 #if defined(STLSOFT_ALLOCATOR_SELECTOR_USE_STLSOFT_MALLOC_ALLOCATOR)
00145 # ifndef STLSOFT_INCL_STLSOFT_MEMORY_HPP_MALLOC_ALLOCATOR
00146 # include <stlsoft/memory/malloc_allocator.hpp>
00147 # endif
00148 #elif defined(STLSOFT_ALLOCATOR_SELECTOR_USE_STLSOFT_NEW_ALLOCATOR)
00149 # ifndef STLSOFT_INCL_STLSOFT_MEMORY_HPP_NEW_ALLOCATOR
00150 # include <stlsoft/memory/new_allocator.hpp>
00151 # endif
00152 #elif defined(STLSOFT_ALLOCATOR_SELECTOR_USE_STD_ALLOCATOR)
00153 # include <memory>
00154 #else
00155 # error Error in discrimination. allocator_selector must select either std::allocator, stlsoft::malloc_allocator or stlsoft::new_allocator
00156 #endif
00157
00158
00159
00160
00161
00162 #ifndef _STLSOFT_NO_NAMESPACE
00163 namespace stlsoft
00164 {
00165 #endif
00166
00167
00168
00169
00170
00201 template <ss_typename_param_k T>
00202 struct allocator_selector
00203 {
00204 #if defined(STLSOFT_DOCUMENTATION_SKIP_SECTION)
00212 typedef _some_allocator_<T> allocator_type;
00213 #elif defined(STLSOFT_ALLOCATOR_SELECTOR_USE_STLSOFT_MALLOC_ALLOCATOR)
00214 typedef malloc_allocator<T> allocator_type;
00215 #elif defined(STLSOFT_ALLOCATOR_SELECTOR_USE_STLSOFT_NEW_ALLOCATOR)
00216 typedef new_allocator<T> allocator_type;
00217 #elif defined(STLSOFT_ALLOCATOR_SELECTOR_USE_STD_ALLOCATOR)
00218 typedef stlsoft_ns_qual_std(allocator)<T> allocator_type;
00219 #else
00220 # error Error in discrimination. allocator_selector must select either std::allocator, stlsoft::malloc_allocator or stlsoft::new_allocator
00221 #endif
00222 };
00223
00224
00225
00226 #ifndef _STLSOFT_NO_NAMESPACE
00227 }
00228 #endif
00229
00230
00231
00232 #endif
00233
00234