/*! * \file sketch_support.h * * \brief header file for sketch support routines */ #ifndef SKETCH_SUPPORT_H #define SKETCH_SUPPORT_H #define MD5_HASHLEN 16 #define MD5_HASHLEN_BITS 8*MD5_HASHLEN /*! md5 hash length in bits */ #ifndef MAXINT8LEN #define MAXINT8LEN 25 /*! number of chars to hold an int8 */ #endif #ifndef CHAR_BIT #include #endif Datum array_set_bit_in_place(bytea *, int32, int32, int32, int32); uint32 rightmost_one(uint8 *, size_t, size_t, size_t); uint32 leftmost_zero(uint8 *, size_t, size_t, size_t); uint32 ui_rightmost_one(uint32 v); void hex_to_bytes(char *hex, uint8 *bytes, size_t); void bit_print(uint8 *c, int numbytes); Datum md5_cstring(char *); bytea *sketch_md5_bytea(Datum, Oid); int32 safe_log2(int64); void int64_big_endianize(uint64 *, uint32, bool); /*! macro to convert a pointer into a marshalled array of Datums into a Datum */ #define PointerExtractDatum(x, byVal) (byVal ? (*(Datum *)x) : (PointerGetDatum(x))) /*! macro to convert a Datum into a pointer suitable for memcpy */ #define DatumExtractPointer(x, byVal) (byVal ? (void *)&x : DatumGetPointer(x)) size_t ExtractDatumLen(Datum x, int len, bool byVal, size_t capacity); #endif /* SKETCH_SUPPORT_H */