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 (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers