⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pqexpbuffer.h

📁 PostgreSQL 8.1.4的源码 适用于Linux下的开源数据库系统
💻 H
字号:
/*------------------------------------------------------------------------- * * pqexpbuffer.h *	  Declarations/definitions for "PQExpBuffer" functions. * * PQExpBuffer provides an indefinitely-extensible string data type. * It can be used to buffer either ordinary C strings (null-terminated text) * or arbitrary binary data.  All storage is allocated with malloc(). * * This module is essentially the same as the backend's StringInfo data type, * but it is intended for use in frontend libpq and client applications. * Thus, it does not rely on palloc() nor elog(). * * It does rely on vsnprintf(); if configure finds that libc doesn't provide * a usable vsnprintf(), then a copy of our own implementation of it will * be linked into libpq. * * Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * $PostgreSQL: pgsql/src/interfaces/libpq/pqexpbuffer.h,v 1.15 2004/12/31 22:03:50 pgsql Exp $ * *------------------------------------------------------------------------- */#ifndef PQEXPBUFFER_H#define PQEXPBUFFER_H/*------------------------- * PQExpBufferData holds information about an extensible string. *		data	is the current buffer for the string (allocated with malloc). *		len		is the current string length.  There is guaranteed to be *				a terminating '\0' at data[len], although this is not very *				useful when the string holds binary data rather than text. *		maxlen	is the allocated size in bytes of 'data', i.e. the maximum *				string size (including the terminating '\0' char) that we can *				currently store in 'data' without having to reallocate *				more space.  We must always have maxlen > len. *------------------------- */typedef struct PQExpBufferData{	char	   *data;	size_t		len;	size_t		maxlen;} PQExpBufferData;typedef PQExpBufferData *PQExpBuffer;/*------------------------ * Initial size of the data buffer in a PQExpBuffer. * NB: this must be large enough to hold error messages that might * be returned by PQrequestCancel() or any routine in fe-auth.c. *------------------------ */#define INITIAL_EXPBUFFER_SIZE	256/*------------------------ * There are two ways to create a PQExpBuffer object initially: * * PQExpBuffer stringptr = createPQExpBuffer(); *		Both the PQExpBufferData and the data buffer are malloc'd. * * PQExpBufferData string; * initPQExpBuffer(&string); *		The data buffer is malloc'd but the PQExpBufferData is presupplied. *		This is appropriate if the PQExpBufferData is a field of another *		struct. *------------------------- *//*------------------------ * createPQExpBuffer * Create an empty 'PQExpBufferData' & return a pointer to it. */extern PQExpBuffer createPQExpBuffer(void);/*------------------------ * initPQExpBuffer * Initialize a PQExpBufferData struct (with previously undefined contents) * to describe an empty string. */extern void initPQExpBuffer(PQExpBuffer str);/*------------------------ * To destroy a PQExpBuffer, use either: * * destroyPQExpBuffer(str); *		free()s both the data buffer and the PQExpBufferData. *		This is the inverse of createPQExpBuffer(). * * termPQExpBuffer(str) *		free()s the data buffer but not the PQExpBufferData itself. *		This is the inverse of initPQExpBuffer(). * * NOTE: some routines build up a string using PQExpBuffer, and then * release the PQExpBufferData but return the data string itself to their * caller.	At that point the data string looks like a plain malloc'd * string. */extern void destroyPQExpBuffer(PQExpBuffer str);extern void termPQExpBuffer(PQExpBuffer str);/*------------------------ * resetPQExpBuffer *		Reset a PQExpBuffer to empty */extern void resetPQExpBuffer(PQExpBuffer str);/*------------------------ * enlargePQExpBuffer * Make sure there is enough space for 'needed' more bytes in the buffer * ('needed' does not include the terminating null). * * Returns 1 if OK, 0 if failed to enlarge buffer. */extern int	enlargePQExpBuffer(PQExpBuffer str, size_t needed);/*------------------------ * printfPQExpBuffer * Format text data under the control of fmt (an sprintf-like format string) * and insert it into str.	More space is allocated to str if necessary. * This is a convenience routine that does the same thing as * resetPQExpBuffer() followed by appendPQExpBuffer(). */extern voidprintfPQExpBuffer(PQExpBuffer str, const char *fmt,...)/* This extension allows gcc to check the format string */__attribute__((format(printf, 2, 3)));/*------------------------ * appendPQExpBuffer * Format text data under the control of fmt (an sprintf-like format string) * and append it to whatever is already in str.  More space is allocated * to str if necessary.  This is sort of like a combination of sprintf and * strcat. */extern voidappendPQExpBuffer(PQExpBuffer str, const char *fmt,...)/* This extension allows gcc to check the format string */__attribute__((format(printf, 2, 3)));/*------------------------ * appendPQExpBufferStr * Append the given string to a PQExpBuffer, allocating more space * if necessary. */extern void appendPQExpBufferStr(PQExpBuffer str, const char *data);/*------------------------ * appendPQExpBufferChar * Append a single byte to str. * Like appendPQExpBuffer(str, "%c", ch) but much faster. */extern void appendPQExpBufferChar(PQExpBuffer str, char ch);/*------------------------ * appendBinaryPQExpBuffer * Append arbitrary binary data to a PQExpBuffer, allocating more space * if necessary. */extern void appendBinaryPQExpBuffer(PQExpBuffer str,						const char *data, size_t datalen);#endif   /* PQEXPBUFFER_H */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -