lass_allocator.h
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
00044
00045
00046
00047
00048 #ifndef LASS_GUARDIAN_OF_INCLUSION_STDE_LASS_ALLOCATOR_H
00049 #define LASS_GUARDIAN_OF_INCLUSION_STDE_LASS_ALLOCATOR_H
00050
00051 #include "stde_common.h"
00052
00053 namespace lass
00054 {
00055 namespace stde
00056 {
00057
00058 template <typename T, typename VariableAllocator> class lass_allocator;
00059
00060 template <typename VariableAllocator>
00061 class lass_allocator<void, VariableAllocator>
00062 {
00063 public:
00064 typedef void* pointer;
00065 typedef const void* const_pointer;
00066 typedef void value_type;
00067 template <typename U> struct rebind { typedef lass_allocator<U, VariableAllocator> other; };
00068 };
00069
00070 template <typename T, typename VariableAllocator>
00071 class lass_allocator: public VariableAllocator
00072 {
00073 public:
00074 typedef size_t size_type;
00075 typedef ptrdiff_t difference_type;
00076 typedef T* pointer;
00077 typedef const T* const_pointer;
00078 typedef T& reference;
00079 typedef const T& const_reference;
00080 typedef T value_type;
00081 template <typename U> struct rebind { typedef lass_allocator<U, VariableAllocator> other; };
00082
00083 lass_allocator() throw();
00084 lass_allocator(const lass_allocator&) throw();
00085 template <typename U> lass_allocator(const lass_allocator<U, VariableAllocator>&) throw();
00086 ~lass_allocator() throw();
00087
00088 pointer address(reference x) const;
00089 const_pointer address(const_reference x) const;
00090
00091 pointer allocate(size_type n, typename lass_allocator<void, VariableAllocator>::pointer hint = 0);
00092 void deallocate(pointer p, size_type n);
00093 size_type max_size() const throw();
00094
00095 void construct(pointer p, const T& val);
00096 void destroy(pointer p);
00097 };
00098
00099 template <typename T1, typename T2, typename VariableAllocator>
00100 bool operator==(const lass_allocator<T1, VariableAllocator>&, const lass_allocator<T2, VariableAllocator>&);
00101
00102 template <typename T1, typename T2, typename VariableAllocator>
00103 bool operator!=(const lass_allocator<T1, VariableAllocator>&, const lass_allocator<T2, VariableAllocator>&);
00104
00105 }
00106
00107 }
00108
00109 #include "lass_allocator.inl"
00110
00111 #endif
00112
00113