char * mcstrdup(MemoryContext *cntx, char * src);
char * mcnstrdup(MemoryContext *cntx, char *src, int len);
+typedef void* (*MemAlloc)(void *ptr, size_t size);
+
typedef struct {
char *buf;
char *ptr;
u_int32_t len;
MemoryContext *mc;
+ MemAlloc memalloc;
} StringBuffer;
-StringBuffer* initStringBuffer(StringBuffer* state, MemoryContext *mc, int initsize);
+StringBuffer* initStringBuffer(StringBuffer* state, int initsize);
+StringBuffer* initStringBufferMC(StringBuffer* state, MemoryContext *mc, int initsize);
+StringBuffer* initStringBufferMA(StringBuffer* state, MemAlloc memalloc, int initsize);
StringBuffer* appendStringBuffer( StringBuffer *state, char *string, int stringlen);
StringBuffer* printStringBuffer( StringBuffer *state, const char *format, ...);