On Fri, Jun 30, 2023, at 06:50, jian he wrote: > more like a C questions > in this context does > #define HASHSET_GET_VALUES(set) ((int32 *) ((set)->data + > CEIL_DIV((set)->capacity, 8))) > define first, then define struct int4hashset_t. Is this normally ok?
Yes, it's fine. Macros are just text substitutions done pre-compilation. > Also does > #define HASHSET_GET_VALUES(set) ((int32 *) ((set)->data + > CEIL_DIV((set)->capacity, 8))) > > remove (int32 *) will make it generic? then when you use it, you can > cast whatever type you like? Maybe, but might be less error-prone more descriptive with different macros for each type, e.g. INT4HASHSET_GET_VALUES, similar to the existing PG_GETARG_INT4HASHSET Curious to hear what everybody thinks about the interface, documentation, semantics and implementation? Is there anything missing or something that you think should be changed/improved? /Joel