Experimental: do not use.
Allocator to customize Value internal array. Below is an example of a simple implementation (actual implementation use memory pool).
class DefaultValueArrayAllocator : public ValueArrayAllocator
{
public:
virtual ~DefaultValueArrayAllocator()
{
}
{
return new ValueInternalArray();
}
virtual ValueInternalArray *
newArrayCopy(
const ValueInternalArray &other )
{
return new ValueInternalArray( other );
}
virtual void destruct( ValueInternalArray *array )
{
delete array;
}
{
if ( minNewIndexCount > newIndexCount )
newIndexCount = minNewIndexCount;
void *newIndexes = realloc( indexes, sizeof(Value*) * newIndexCount );
if ( !newIndexes )
throw std::bad_alloc();
indexCount = newIndexCount;
indexes = static_cast<Value **>( newIndexes );
}
{
if ( indexes )
free( indexes );
}
{
}
{
if ( value )
free( value );
}
};
virtual Value * allocateArrayPage()=0
virtual void releaseArrayPageIndex(Value **indexes, ValueInternalArray::PageIndex indexCount)=0
virtual ValueInternalArray * newArray()=0
virtual ValueInternalArray * newArrayCopy(const ValueInternalArray &other)=0
virtual void releaseArrayPage(Value *value)=0
virtual void reallocateArrayPageIndex(Value **&indexes, ValueInternalArray::PageIndex &indexCount, ValueInternalArray::PageIndex minNewIndexCount)=0
Reallocate array page index.
Definition at line 847 of file value.h.