mirror of
				https://github.com/postgres/postgres.git
				synced 2025-10-29 22:49:41 +03:00 
			
		
		
		
	
		
			
				
	
	
		
			49 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			49 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| #include "postgres.h"
 | |
| 
 | |
| typedef bits8  *VarBit;
 | |
| typedef uint32 BitIndex;
 | |
| 
 | |
| #define HEXDIG(z)    (z)<10 ? ((z)+'0') : ((z)-10+'A')
 | |
| 
 | |
| 
 | |
| #define BITSPERBYTE		8
 | |
| #define VARBITHDRSZ		sizeof(int32)
 | |
| /* Number of bits in this bit string */
 | |
| #define VARBITLEN(PTR)		(((struct varlena *)VARDATA(PTR))->vl_len)
 | |
| /* Pointer tp the first byte containing bit string data */
 | |
| #define VARBITS(PTR)		(((struct varlena *)VARDATA(PTR))->vl_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 */
 | |
| #define VARBITPAD(PTR)		(VARBITBYTES(PTR)*BITSPERBYTE - VARBITLEN(PTR))
 | |
| /* Number of bytes needed to store a bit string of a given length */
 | |
| #define VARBITDATALEN(BITLEN)	(BITLEN/BITSPERBYTE + \
 | |
| 				  (BITLEN%BITSPERBYTE > 0 ? 1 : 0) + \
 | |
| 					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. BITSPERBYTE bits */
 | |
| #define BITMASK			0xFF
 | |
| #define BITHIGH                 0x80
 | |
| 
 | |
| 
 | |
| char * zpbitin(char *s, int dummy,  int32 atttypmod);
 | |
| char * zpbitout(char *s);
 | |
| char * zpbitsout(char *s);
 | |
| char * varbitin(char *s, int dummy,  int32 atttypmod);
 | |
| bool biteq (char *arg1, char *arg2);
 | |
| bool bitne (char *arg1, char *arg2);
 | |
| bool bitge (char *arg1, char *arg2);
 | |
| bool bitgt (char *arg1, char *arg2);
 | |
| bool bitle (char *arg1, char *arg2);
 | |
| bool bitlt (char *arg1, char *arg2);
 | |
| int bitcmp (char *arg1, char *arg2);
 | |
| char * bitand (char * arg1, char * arg2);
 | |
| char * bitor (char * arg1, char * arg2);
 | |
| char * bitxor (char * arg1, char * arg2);
 | |
| char * bitnot (char * arg);
 | |
| char * bitshiftright (char * arg, int shft);
 | |
| char * bitshiftleft (char * arg, int shft);
 | |
| char * bitcat (char *arg1, char *arg2);
 | |
| char * bitsubstr (char *arg, int32 s, int32 l);
 |