77 * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
88 * Portions Copyright (c) 1994, Regents of the University of California
99 *
10- * $Id: nodes.h,v 1.119 2002/10/11 04:12:14 momjian Exp $
10+ * $Id: nodes.h,v 1.120 2002/10/11 04:16:44 momjian Exp $
1111 *
1212 *-------------------------------------------------------------------------
1313 */
@@ -261,24 +261,6 @@ typedef struct Node
261261
262262#define nodeTag (nodeptr )(((Node*)(nodeptr))->type)
263263
264- /*
265- *There is no way to dereference the palloc'ed pointer to assign the
266- *tag, and return the pointer itself, so we need a holder variable.
267- *Fortunately, this function isn't recursive so we just define
268- *a global variable for this purpose.
269- */
270- extern Node * newNodeMacroHolder ;
271-
272- #define newNode (size ,tag ) \
273- ( \
274- AssertMacro((size) >= sizeof(Node)),/* need the tag, at least */ \
275- \
276- newNodeMacroHolder = (Node *) palloc0(size), \
277- newNodeMacroHolder->type = (tag), \
278- newNodeMacroHolder \
279- )
280-
281-
282264#define makeNode (_type_ )((_type_ *) newNode(sizeof(_type_),T_##_type_))
283265#define NodeSetTag (nodeptr ,t )(((Node*)(nodeptr))->type = (t))
284266
@@ -300,6 +282,11 @@ extern Node *newNodeMacroHolder;
300282 * ----------------------------------------------------------------
301283 */
302284
285+ /*
286+ * nodes/nodes.c
287+ */
288+ extern Node * newNode (Size size ,NodeTag tag );
289+
303290/*
304291 * nodes/{outfuncs.c,print.c}
305292 */