Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
The latest version of this topic can be found at <allocators> macros.
|ALLOCATOR_DECL|CACHE_CHUNKLIST|CACHE_FREELIST|
|CACHE_SUBALLOC|SYNC_DEFAULT|
ALLOCATOR_DECL
Yields an allocator template class.
#define ALLOCATOR_DECL
(cache, sync, name) <alloc_template>
Remarks
The macro yields a template definition template <class Type> class name {.....}
and a specialization template <> class name<void> {.....}
which together define an allocator template class that uses the synchronization filter sync
and a cache of type cache
.
For compilers that can compile rebind, the resulting template definition looks like this:
struct rebind
{ /* convert a name<Type> to a name<Other> */
typedef name<Other> other;
};
For compilers that cannot compile rebind the resulting template definition looks like this:
template <class Type<class name
: public stdext::allocators::allocator_base<Type,
sync<stdext::allocators::rts_alloc<cache>>>
{
public:
name() {}
template <class Other>
name(const name<Other>&) {}
template <class Other>
name& operator= (const name<Other>&)
{return *this; }
};
CACHE_CHUNKLIST
Yields stdext::allocators::cache_chunklist<sizeof(Type)>
.
#define CACHE_CHUNKLIST <cache_class>
Remarks
CACHE_FREELIST
Yields stdext::allocators::cache_freelist<sizeof(Type), max>
.
#define CACHE_FREELIST
(max) <cache_class>
Remarks
CACHE_SUBALLOC
Yields stdext::allocators::cache_suballoc<sizeof(Type)>
.
#define CACHE_SUBALLOC <cache_class>
Remarks
SYNC_DEFAULT
Yields a synchronization filter.
#define SYNC_DEFAULT <sync_template>
Remarks
If a compiler supports compiling both single-threaded and multi-threaded applications, for single-threaded applications the macro yields stdext::allocators::sync_none
; in all other cases it yields stdext::allocators::sync_shared
.