lass_allocator.inl
Go to the documentation of this file.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
00041
00042
00043 namespace lass
00044 {
00045 namespace stde
00046 {
00047
00048
00049
00050 template <typename T, typename VA>
00051 lass_allocator<T, VA>::lass_allocator() throw()
00052 {
00053 }
00054
00055
00056
00057 template <typename T, typename VA>
00058 lass_allocator<T, VA>::lass_allocator(const lass_allocator& other) throw():
00059 VA(static_cast<const VA&>(other))
00060 {
00061 }
00062
00063
00064
00065 template <typename T, typename VA>
00066 template <typename U>
00067 lass_allocator<T, VA>::lass_allocator(const lass_allocator<U, VA>& other) throw():
00068 VA(static_cast<const VA&>(other))
00069 {
00070 }
00071
00072
00073
00074 template <typename T, typename VA>
00075 lass_allocator<T, VA>::~lass_allocator() throw()
00076 {
00077 }
00078
00079
00080
00081 template <typename T, typename VA>
00082 typename lass_allocator<T, VA>::pointer
00083 lass_allocator<T, VA>::address(reference x) const
00084 {
00085 return &x;
00086 }
00087
00088
00089
00090 template <typename T, typename VA>
00091 typename lass_allocator<T, VA>::const_pointer
00092 lass_allocator<T, VA>::address(const_reference x) const
00093 {
00094 return &x;
00095 }
00096
00097
00098
00099 template <typename T, typename VA>
00100 typename lass_allocator<T, VA>::pointer
00101 lass_allocator<T, VA>::allocate(size_type n, typename lass_allocator<void, VA>::pointer)
00102 {
00103 const size_type size = n * sizeof(T);
00104 return static_cast<pointer>(VA::allocate(size));
00105 }
00106
00107
00108
00109 template <typename T, typename VA>
00110 void lass_allocator<T, VA>::deallocate(pointer p, size_type n)
00111 {
00112 const size_type size = n * sizeof(T);
00113 VA::deallocate(p, size);
00114 }
00115
00116
00117
00118 template <typename T, typename VA>
00119 typename lass_allocator<T, VA>::size_type
00120 lass_allocator<T, VA>::max_size() const throw()
00121 {
00122
00123 const size_type n = size_type(-1) / sizeof(T);
00124 return n > 0 ? n : 1;
00125 }
00126
00127
00128 template <typename T, typename VA>
00129 void lass_allocator<T, VA>::construct(pointer p, const T& val)
00130 {
00131 new(p) T(val);
00132 }
00133
00134
00135
00136 template <typename T, typename VA>
00137 void lass_allocator<T, VA>::destroy(pointer p)
00138 {
00139 p->~T();
00140 }
00141
00142
00143
00144
00145
00146
00147
00148
00149
00150
00151
00152
00153
00154
00155 template <typename T1, typename T2, typename VA>
00156 bool operator==(const lass_allocator<T1, VA>&, const lass_allocator<T2, VA>&)
00157 {
00158 return true;
00159 }
00160
00161
00162
00163 template <typename T1, typename T2, typename VA>
00164 bool operator!=(const lass_allocator<T1, VA>&, const lass_allocator<T2, VA>&)
00165 {
00166 return false;
00167 }
00168
00169
00170
00171 }
00172
00173 }
00174
00175