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

📄 varbit.h

📁 PostgreSQL 8.1.4的源码 适用于Linux下的开源数据库系统
💻 H
字号:
/*------------------------------------------------------------------------- * * varbit.h *	  Functions for the SQL datatypes BIT() and BIT VARYING(). * * Code originally contributed by Adriaan Joubert. * * Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * $PostgreSQL: pgsql/src/include/utils/varbit.h,v 1.21 2004/12/31 22:03:46 pgsql Exp $ * *------------------------------------------------------------------------- */#ifndef VARBIT_H#define VARBIT_H#include "fmgr.h"/* * Modeled on struct varlena from postgres.h, but data type is bits8. */typedef struct{	int32		vl_len;			/* standard varlena header (total size in								 * bytes) */	int32		bit_len;		/* number of valid bits */	bits8		bit_dat[1];		/* bit string, most sig. byte first */} VarBit;/* * fmgr interface macros * * BIT and BIT VARYING are toastable varlena types.  They are the same * as far as representation goes, so we just have one set of macros. */#define DatumGetVarBitP(X)		   ((VarBit *) PG_DETOAST_DATUM(X))#define DatumGetVarBitPCopy(X)	   ((VarBit *) PG_DETOAST_DATUM_COPY(X))#define VarBitPGetDatum(X)		   PointerGetDatum(X)#define PG_GETARG_VARBIT_P(n)	   DatumGetVarBitP(PG_GETARG_DATUM(n))#define PG_GETARG_VARBIT_P_COPY(n) DatumGetVarBitPCopy(PG_GETARG_DATUM(n))#define PG_RETURN_VARBIT_P(x)	   return VarBitPGetDatum(x)/* Header overhead *in addition to* VARHDRSZ */#define VARBITHDRSZ			sizeof(int32)/* Number of bits in this bit string */#define VARBITLEN(PTR)		(((VarBit *) (PTR))->bit_len)/* Pointer to the first byte containing bit string data */#define VARBITS(PTR)		(((VarBit *) (PTR))->bit_dat)/* Number of bytes in the data section of a bit string */#define VARBITBYTES(PTR)	(VARSIZE(PTR) - VARHDRSZ - VARBITHDRSZ)/* Padding of the bit string at the end (in bits) */#define VARBITPAD(PTR)		(VARBITBYTES(PTR)*BITS_PER_BYTE - VARBITLEN(PTR))/* Number of bytes needed to store a bit string of a given length */#define VARBITTOTALLEN(BITLEN)	(((BITLEN) + BITS_PER_BYTE-1)/BITS_PER_BYTE + \								 VARHDRSZ + VARBITHDRSZ)/* pointer beyond the end of the bit string (like end() in STL containers) */#define VARBITEND(PTR)		(((bits8 *) (PTR)) + VARSIZE(PTR))/* Mask that will cover exactly one byte, i.e. BITS_PER_BYTE bits */#define BITMASK 0xFF#define BITHIGH 0x80extern Datum bit_in(PG_FUNCTION_ARGS);extern Datum bit_out(PG_FUNCTION_ARGS);extern Datum bit_recv(PG_FUNCTION_ARGS);extern Datum bit_send(PG_FUNCTION_ARGS);extern Datum varbit_in(PG_FUNCTION_ARGS);extern Datum varbit_out(PG_FUNCTION_ARGS);extern Datum varbit_recv(PG_FUNCTION_ARGS);extern Datum varbit_send(PG_FUNCTION_ARGS);extern Datum bit(PG_FUNCTION_ARGS);extern Datum varbit(PG_FUNCTION_ARGS);extern Datum biteq(PG_FUNCTION_ARGS);extern Datum bitne(PG_FUNCTION_ARGS);extern Datum bitlt(PG_FUNCTION_ARGS);extern Datum bitle(PG_FUNCTION_ARGS);extern Datum bitgt(PG_FUNCTION_ARGS);extern Datum bitge(PG_FUNCTION_ARGS);extern Datum bitcmp(PG_FUNCTION_ARGS);extern Datum bitand(PG_FUNCTION_ARGS);extern Datum bitor(PG_FUNCTION_ARGS);extern Datum bitxor(PG_FUNCTION_ARGS);extern Datum bitnot(PG_FUNCTION_ARGS);extern Datum bitshiftleft(PG_FUNCTION_ARGS);extern Datum bitshiftright(PG_FUNCTION_ARGS);extern Datum bitcat(PG_FUNCTION_ARGS);extern Datum bitsubstr(PG_FUNCTION_ARGS);extern Datum bitlength(PG_FUNCTION_ARGS);extern Datum bitoctetlength(PG_FUNCTION_ARGS);extern Datum bitfromint4(PG_FUNCTION_ARGS);extern Datum bittoint4(PG_FUNCTION_ARGS);extern Datum bitfromint8(PG_FUNCTION_ARGS);extern Datum bittoint8(PG_FUNCTION_ARGS);extern Datum bitposition(PG_FUNCTION_ARGS);#endif

⌨️ 快捷键说明

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