221 lines
5.9 KiB
C
221 lines
5.9 KiB
C
/*++
|
|
|
|
Copyright (c) 1998 Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
growbuf.h
|
|
|
|
Abstract:
|
|
|
|
Implements the GROWBUFFER data type, a dynamically allocated buffer
|
|
that grows (and potentially changes addresses). GROWBUFFERs are
|
|
typically used to maintain dynamic sized arrays, or multi-sz lists.
|
|
|
|
Author:
|
|
|
|
Jim Schmidt (jimschm) 25-Feb-1997
|
|
|
|
Revision History:
|
|
|
|
<alias> <date> <comments>
|
|
|
|
--*/
|
|
|
|
|
|
|
|
typedef struct {
|
|
PBYTE Buf;
|
|
DWORD Size;
|
|
DWORD End;
|
|
DWORD GrowSize;
|
|
DWORD UserIndex; // Unused by Growbuf. For caller use.
|
|
} GROWBUFFER, *PGROWBUFFER;
|
|
|
|
#define GROWBUF_INIT {NULL,0,0,0,0}
|
|
|
|
PBYTE
|
|
RealGrowBuffer (
|
|
IN OUT PGROWBUFFER GrowBuf,
|
|
IN DWORD SpaceNeeded
|
|
);
|
|
|
|
#define GrowBuffer(buf,size) SETTRACKCOMMENT(PBYTE,"GrowBuffer",__FILE__,__LINE__)\
|
|
RealGrowBuffer(buf,size)\
|
|
CLRTRACKCOMMENT
|
|
|
|
VOID
|
|
FreeGrowBuffer (
|
|
IN PGROWBUFFER GrowBuf
|
|
);
|
|
|
|
|
|
PBYTE
|
|
RealGrowBufferReserve (
|
|
IN OUT PGROWBUFFER GrowBuf,
|
|
IN DWORD SpaceNeeded
|
|
);
|
|
|
|
#define GrowBufferReserve(buf,size) SETTRACKCOMMENT(PBYTE,"GrowBufferReserve",__FILE__,__LINE__)\
|
|
RealGrowBufferReserve(buf,size)\
|
|
CLRTRACKCOMMENT
|
|
BOOL
|
|
RealMultiSzAppendA (
|
|
PGROWBUFFER GrowBuf,
|
|
PCSTR String
|
|
);
|
|
|
|
#define MultiSzAppendA(buf,str) SETTRACKCOMMENT(BOOL,"MultiSzAppendA",__FILE__,__LINE__)\
|
|
RealMultiSzAppendA(buf,str)\
|
|
CLRTRACKCOMMENT
|
|
|
|
BOOL
|
|
RealMultiSzAppendW (
|
|
PGROWBUFFER GrowBuf,
|
|
PCWSTR String
|
|
);
|
|
|
|
#define MultiSzAppendW(buf,str) SETTRACKCOMMENT(BOOL,"MultiSzAppendW",__FILE__,__LINE__)\
|
|
RealMultiSzAppendW(buf,str)\
|
|
CLRTRACKCOMMENT
|
|
|
|
BOOL
|
|
RealMultiSzAppendValA (
|
|
PGROWBUFFER GrowBuf,
|
|
PCSTR Key,
|
|
DWORD Val
|
|
);
|
|
|
|
#define MultiSzAppendValA(buf,k,v) SETTRACKCOMMENT(BOOL,"MultiSzAppendValA",__FILE__,__LINE__)\
|
|
RealMultiSzAppendValA(buf,k,v)\
|
|
CLRTRACKCOMMENT
|
|
|
|
BOOL
|
|
RealMultiSzAppendValW (
|
|
PGROWBUFFER GrowBuf,
|
|
PCWSTR Key,
|
|
DWORD Val
|
|
);
|
|
|
|
#define MultiSzAppendValW(buf,k,v) SETTRACKCOMMENT(BOOL,"MultiSzAppendValW",__FILE__,__LINE__)\
|
|
RealMultiSzAppendValW(buf,k,v)\
|
|
CLRTRACKCOMMENT
|
|
|
|
BOOL
|
|
RealMultiSzAppendStringA (
|
|
PGROWBUFFER GrowBuf,
|
|
PCSTR Key,
|
|
PCSTR Val
|
|
);
|
|
|
|
#define MultiSzAppendStringA(buf,k,v) SETTRACKCOMMENT(BOOL,"MultiSzAppendStringA",__FILE__,__LINE__)\
|
|
RealMultiSzAppendStringA(buf,k,v)\
|
|
CLRTRACKCOMMENT
|
|
|
|
BOOL
|
|
RealMultiSzAppendStringW (
|
|
PGROWBUFFER GrowBuf,
|
|
PCWSTR Key,
|
|
PCWSTR Val
|
|
);
|
|
|
|
#define MultiSzAppendStringW(buf,k,v) SETTRACKCOMMENT(BOOL,"MultiSzAppendStringW",__FILE__,__LINE__)\
|
|
RealMultiSzAppendStringW(buf,k,v)\
|
|
CLRTRACKCOMMENT
|
|
|
|
BOOL
|
|
RealGrowBufAppendDword (
|
|
PGROWBUFFER GrowBuf,
|
|
DWORD d
|
|
);
|
|
|
|
#define GrowBufAppendDword(buf,d) SETTRACKCOMMENT(BOOL,"GrowBufAppendDword",__FILE__,__LINE__)\
|
|
RealGrowBufAppendDword(buf,d)\
|
|
CLRTRACKCOMMENT
|
|
|
|
|
|
BOOL
|
|
RealGrowBufAppendStringA (
|
|
PGROWBUFFER GrowBuf,
|
|
PCSTR String
|
|
);
|
|
|
|
#define GrowBufAppendStringA(buf,str) SETTRACKCOMMENT(BOOL,"GrowBufAppendStringA",__FILE__,__LINE__)\
|
|
RealGrowBufAppendStringA(buf,str)\
|
|
CLRTRACKCOMMENT
|
|
|
|
BOOL
|
|
RealGrowBufAppendStringW (
|
|
PGROWBUFFER GrowBuf,
|
|
PCWSTR String
|
|
);
|
|
|
|
#define GrowBufAppendStringW(buf,str) SETTRACKCOMMENT(BOOL,"GrowBufAppendStringW",__FILE__,__LINE__)\
|
|
RealGrowBufAppendStringW(buf,str)\
|
|
CLRTRACKCOMMENT
|
|
|
|
|
|
BOOL
|
|
RealGrowBufAppendStringABA (
|
|
PGROWBUFFER GrowBuf,
|
|
PCSTR Start,
|
|
PCSTR EndPlusOne
|
|
);
|
|
|
|
#define GrowBufAppendStringABA(buf,a,b) SETTRACKCOMMENT(BOOL,"GrowBufAppendStringABA",__FILE__,__LINE__)\
|
|
RealGrowBufAppendStringABA(buf,a,b)\
|
|
CLRTRACKCOMMENT
|
|
|
|
BOOL
|
|
RealGrowBufAppendStringABW (
|
|
PGROWBUFFER GrowBuf,
|
|
PCWSTR Start,
|
|
PCWSTR EndPlusOne
|
|
);
|
|
|
|
#define GrowBufAppendStringABW(buf,a,b) SETTRACKCOMMENT(BOOL,"GrowBufAppendStringABW",__FILE__,__LINE__)\
|
|
RealGrowBufAppendStringABW(buf,a,b)\
|
|
CLRTRACKCOMMENT
|
|
|
|
|
|
|
|
BOOL
|
|
RealGrowBufCopyStringA (
|
|
PGROWBUFFER GrowBuf,
|
|
PCSTR String
|
|
);
|
|
|
|
#define GrowBufCopyStringA(buf,str) SETTRACKCOMMENT(BOOL,"GrowBufCopyStringA",__FILE__,__LINE__)\
|
|
RealGrowBufCopyStringA(buf,str)\
|
|
CLRTRACKCOMMENT
|
|
|
|
BOOL
|
|
RealGrowBufCopyStringW (
|
|
PGROWBUFFER GrowBuf,
|
|
PCWSTR String
|
|
);
|
|
|
|
#define GrowBufCopyStringW(buf,str) SETTRACKCOMMENT(BOOL,"GrowBufCopyStringW",__FILE__,__LINE__)\
|
|
RealGrowBufCopyStringW(buf,str)\
|
|
CLRTRACKCOMMENT
|
|
|
|
#ifdef UNICODE
|
|
|
|
#define MultiSzAppend MultiSzAppendW
|
|
#define MultiSzAppendVal MultiSzAppendValW
|
|
#define MultiSzAppendString MultiSzAppendStringW
|
|
#define GrowBufAppendString GrowBufAppendStringW
|
|
#define GrowBufAppendStringAB GrowBufAppendStringABW
|
|
#define GrowBufCopyString GrowBufCopyStringW
|
|
|
|
#else
|
|
|
|
#define MultiSzAppend MultiSzAppendA
|
|
#define MultiSzAppendVal MultiSzAppendValA
|
|
#define MultiSzAppendString MultiSzAppendStringA
|
|
#define GrowBufAppendString GrowBufAppendStringA
|
|
#define GrowBufAppendStringAB GrowBufAppendStringABA
|
|
#define GrowBufCopyString GrowBufCopyStringA
|
|
|
|
#endif
|