From 5cabcfccce4b8b826c9b30828f3012b7926a6946 Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Mon, 26 Aug 2002 17:54:02 +0000 Subject: Modify array operations to include array's element type OID in the array header, and to compute sizing and alignment of array elements the same way normal tuple access operations do --- viz, using the tupmacs.h macros att_addlength and att_align. This makes the world safe for arrays of cstrings or intervals, and should make it much easier to write array-type-polymorphic functions; as examples see the cleanups of array_out and contrib/array_iterator. By Joe Conway and Tom Lane. --- contrib/array/array_iterator.h | 43 ++++++++++++++++++------------------------ 1 file changed, 18 insertions(+), 25 deletions(-) (limited to 'contrib/array/array_iterator.h') diff --git a/contrib/array/array_iterator.h b/contrib/array/array_iterator.h index f959f09c7c7..c85d68f27ac 100644 --- a/contrib/array/array_iterator.h +++ b/contrib/array/array_iterator.h @@ -1,23 +1,23 @@ #ifndef ARRAY_ITERATOR_H #define ARRAY_ITERATOR_H -static int32 array_iterator(Oid elemtype, Oid proc, int and, +static int32 array_iterator(Oid proc, int and, ArrayType *array, Datum value); -int32 array_texteq(ArrayType *array, char *value); -int32 array_all_texteq(ArrayType *array, char *value); -int32 array_textregexeq(ArrayType *array, char *value); -int32 array_all_textregexeq(ArrayType *array, char *value); +int32 array_texteq(ArrayType *array, void *value); +int32 array_all_texteq(ArrayType *array, void *value); +int32 array_textregexeq(ArrayType *array, void *value); +int32 array_all_textregexeq(ArrayType *array, void *value); -int32 array_varchareq(ArrayType *array, char *value); -int32 array_all_varchareq(ArrayType *array, char *value); -int32 array_varcharregexeq(ArrayType *array, char *value); -int32 array_all_varcharregexeq(ArrayType *array, char *value); +int32 array_varchareq(ArrayType *array, void *value); +int32 array_all_varchareq(ArrayType *array, void *value); +int32 array_varcharregexeq(ArrayType *array, void *value); +int32 array_all_varcharregexeq(ArrayType *array, void *value); -int32 array_bpchareq(ArrayType *array, char *value); -int32 array_all_bpchareq(ArrayType *array, char *value); -int32 array_bpcharregexeq(ArrayType *array, char *value); -int32 array_all_bpcharregexeq(ArrayType *array, char *value); +int32 array_bpchareq(ArrayType *array, void *value); +int32 array_all_bpchareq(ArrayType *array, void *value); +int32 array_bpcharregexeq(ArrayType *array, void *value); +int32 array_all_bpcharregexeq(ArrayType *array, void *value); int32 array_int4eq(ArrayType *array, int4 value); int32 array_all_int4eq(ArrayType *array, int4 value); @@ -35,16 +35,9 @@ int32 array_all_int4le(ArrayType *array, int4 value); int32 array_oideq(ArrayType *array, Oid value); int32 array_all_oidne(ArrayType *array, Oid value); -int32 array_ineteq(ArrayType *array, Oid value); -int32 array_all_ineteq(ArrayType *array, Oid value); -int32 array_inetne(ArrayType *array, Oid value); -int32 array_all_inetne(ArrayType *array, Oid value); -#endif +int32 array_ineteq(ArrayType *array, void *value); +int32 array_all_ineteq(ArrayType *array, void *value); +int32 array_inetne(ArrayType *array, void *value); +int32 array_all_inetne(ArrayType *array, void *value); -/* - * Local Variables: - * tab-width: 4 - * c-indent-level: 4 - * c-basic-offset: 4 - * End: - */ +#endif -- cgit v1.2.3