Hi,
There's a repeated pattern of
Assert(IsA(ptr, nodetype));
foo = (nodetype *) ptr;
how about adding a castNode() that combines those? Something like:
#if !defined(USE_ASSERT_CHECKING)
#define castNode(nodeptr,_type_) \
((_type_ *) (nodeptr))
#elif defined(__GNUC__)
#define castNode(nodeptr,_type_) \
((_type_ *) ({ \
Node *_result; \
_result = nodeptr; \
Assert(IsA(_result, _type_)); \
_result; \
}))
#else
extern PGDLLIMPORT Node *newNodeMacroHolder;
#define castNode(nodePtr,_type_) \
( \
newNodeMacroHolder = nodePtr, \
AssertMacro(IsA(newNodeMacroHolder, _type_)), \
(_type_ *) newNodeMacroHolder \
)
#endif
Greetings,
Andres Freund
--
Andres Freund http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Training & Services
--
Sent via pgsql-hackers mailing list ([email protected])
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers