On Sat, Dec 31, 2016 at 11:30 PM, Tom Lane <t...@sss.pgh.pa.us> wrote: > Peter Eisentraut <peter.eisentr...@2ndquadrant.com> writes: >> I propose a macro castNode() that combines the assertion and the cast, >> so this would become >> RestrictInfo *rinfo = castNode(RestrictInfo, lfirst(lc)); >
+1. That would be wonderful. > Seems like an OK idea, but I'm concerned by the implied multiple > evaluations, particularly if you're going to apply this to function > results --- as the above example does. I think you need to go the > extra mile to make it single-evaluation. See newNode() for ideas. > +1. In case the Assert fails, the debugger would halt at castNode macro and a first time reader would be puzzled to see no assert there. Obviously looking at the #define should clarify the confusion. But I don't see how that can be avoided. I was thinking of using a function castNodeFunc(), but it can't accomodate Assert with _type_. Will calling this function as checkAndCastNode() help? -- Best Wishes, Ashutosh Bapat EnterpriseDB Corporation The Postgres Database Company -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers