namespace AttributeFactory

namespace AttributeFactory {

// enums

enum Flags;

// global variables

static bool poolDisabled = false;

// global functions

template <class NonPoolClass, class PoolClass>
NonPoolClass* allocate();

template <class NonPoolClass, class PoolClass, typename ArgType>
NonPoolClass* allocate(const ArgType& arg);

template <class NonPoolClass, class PoolClass, typename ArgType1, typename ArgType2>
NonPoolClass* allocate(
    const ArgType1& arg1,
    const ArgType2& arg2
);

static INLINE AttributeValue* newAttributeValue();
static INLINE Attributes* newAttributes(AttributeAllocator& allocator);
static INLINE AttributeQueue* newAttributeQueue();
static char* newString(int size, short& type);
static void freeString(char* string, short type);

} // namespace AttributeFactory