44#ifndef EXPANDEDDATUM_H
45#define EXPANDEDDATUM_H
50#define EXPANDED_POINTER_SIZE (VARHDRSZ_EXTERNAL + sizeof(varatt_expanded))
129#define EOH_HEADER_MAGIC (-1)
130#define VARATT_IS_EXPANDED_HEADER(PTR) \
131 (((varattrib_4b *) (PTR))->va_4byte.va_header == (uint32) EOH_HEADER_MAGIC)
151#define DatumIsReadWriteExpandedObject(d, isnull, typlen) \
152 (((isnull) || (typlen) != -1) ? false : \
153 VARATT_IS_EXTERNAL_EXPANDED_RW(DatumGetPointer(d)))
155#define MakeExpandedObjectReadOnly(d, isnull, typlen) \
156 (((isnull) || (typlen) != -1) ? (d) : \
157 MakeExpandedObjectReadOnlyInternal(d))
#define EXPANDED_POINTER_SIZE
static Datum EOHPGetRWDatum(const struct ExpandedObjectHeader *eohptr)
void(* EOM_flatten_into_method)(ExpandedObjectHeader *eohptr, void *result, Size allocated_size)
Size(* EOM_get_flat_size_method)(ExpandedObjectHeader *eohptr)
ExpandedObjectHeader * DatumGetEOHP(Datum d)
void EOH_flatten_into(ExpandedObjectHeader *eohptr, void *result, Size allocated_size)
void EOH_init_header(ExpandedObjectHeader *eohptr, const ExpandedObjectMethods *methods, MemoryContext obj_context)
void DeleteExpandedObject(Datum d)
Datum TransferExpandedObject(Datum d, MemoryContext new_parent)
Datum MakeExpandedObjectReadOnlyInternal(Datum d)
static Datum EOHPGetRODatum(const struct ExpandedObjectHeader *eohptr)
Size EOH_get_flat_size(ExpandedObjectHeader *eohptr)
#define PointerGetDatum(X)
char eoh_rw_ptr[EXPANDED_POINTER_SIZE]
MemoryContext eoh_context
const ExpandedObjectMethods * eoh_methods
char eoh_ro_ptr[EXPANDED_POINTER_SIZE]
EOM_get_flat_size_method get_flat_size
EOM_flatten_into_method flatten_into