HTML Tidy
0.1
|
#include <tidy.h>
Data Fields | |
const TidyAllocatorVtbl * | vtbl |
An allocator. To create your own allocator, do something like the following:
typedef struct _MyAllocator { TidyAllocator base; ...other custom allocator state... } MyAllocator;
void* MyAllocator_alloc(TidyAllocator *base, void *block, size_t nBytes) { MyAllocator *self = (MyAllocator*)base; ... } (etc)
static const TidyAllocatorVtbl MyAllocatorVtbl = { MyAllocator_alloc, MyAllocator_realloc, MyAllocator_free, MyAllocator_panic };
myAllocator allocator; TidyDoc doc;
allocator.base.vtbl = &MyAllocatorVtbl; ...initialise allocator specific state... doc = tidyCreateWithAllocator(&allocator); ...
Although this looks slightly long winded, the advantage is that to create a custom allocator you simply need to set the vtbl pointer correctly. The vtbl itself can reside in static/global data, and hence does not need to be initialised each time an allocator is created, and furthermore the memory is shared amongst all created allocators.