Compartilhar via


Macros <allocators>

ALLOCATOR_DECL

Produz um modelo de classe allocator.

#define ALLOCATOR_DECL(cache, sync, name) <alloc_template>

Comentários

A macro produz uma definição de modelo template <class Type> class name {.....} e uma especialização template <> class name<void> {.....} que, em conjunto, definem um modelo de classe allocator que usa o filtro de sincronização sync e um cache do tipo cache.

Para os compiladores que podem compilar reassociação, a definição de modelo resultante tem esta aparência:

struct rebind
   {    /* convert a name<Type> to a name<Other> */
   typedef name<Other> other;
   };

Para compiladores que não podem compilar reassociação, a definição de modelo resultante tem esta aparência:

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

Produz stdext::allocators::cache_chunklist<sizeof(Type)>.

#define CACHE_CHUNKLIST <cache_class>

Comentários

CACHE_FREELIST

Produz stdext::allocators::cache_freelist<sizeof(Type), max>.

#define CACHE_FREELIST(max) <cache_class>

Comentários

CACHE_SUBALLOC

Produz stdext::allocators::cache_suballoc<sizeof(Type)>.

#define CACHE_SUBALLOC <cache_class>

Comentários

SYNC_DEFAULT

Produz um filtro de sincronização.

#define SYNC_DEFAULT <sync_template>

Comentários

Se um compilador der suporte à compilação de aplicativos de single-threaded e multi-threaded, para aplicativos de single-threaded, a macro produzirá stdext::allocators::sync_none, em todos os outros casos, ela produzirá stdext::allocators::sync_shared.

Confira também

<allocators>