mirror of
				https://github.com/postgres/postgres.git
				synced 2025-11-03 09:13:20 +03:00 
			
		
		
		
	Cleanup: move the 'Value' node into a separate file, rather than putting
it in the same file as the 'List' node.
This commit is contained in:
		@@ -1,13 +1,13 @@
 | 
			
		||||
/*-------------------------------------------------------------------------
 | 
			
		||||
 *
 | 
			
		||||
 * pg_list.h
 | 
			
		||||
 *	  POSTGRES generic list package
 | 
			
		||||
 *	  interface for PostgreSQL generic linked list package
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 * Portions Copyright (c) 1996-2003, PostgreSQL Global Development Group
 | 
			
		||||
 * Portions Copyright (c) 1994, Regents of the University of California
 | 
			
		||||
 *
 | 
			
		||||
 * $PostgreSQL: pgsql/src/include/nodes/pg_list.h,v 1.42 2003/11/29 22:41:06 pgsql Exp $
 | 
			
		||||
 * $PostgreSQL: pgsql/src/include/nodes/pg_list.h,v 1.43 2004/01/07 18:43:36 neilc Exp $
 | 
			
		||||
 *
 | 
			
		||||
 *-------------------------------------------------------------------------
 | 
			
		||||
 */
 | 
			
		||||
@@ -21,44 +21,6 @@
 | 
			
		||||
 * ----------------------------------------------------------------
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/*----------------------
 | 
			
		||||
 *		Value node
 | 
			
		||||
 *
 | 
			
		||||
 * The same Value struct is used for five node types: T_Integer,
 | 
			
		||||
 * T_Float, T_String, T_BitString, T_Null.
 | 
			
		||||
 *
 | 
			
		||||
 * Integral values are actually represented by a machine integer,
 | 
			
		||||
 * but both floats and strings are represented as strings.
 | 
			
		||||
 * Using T_Float as the node type simply indicates that
 | 
			
		||||
 * the contents of the string look like a valid numeric literal.
 | 
			
		||||
 *
 | 
			
		||||
 * (Before Postgres 7.0, we used a double to represent T_Float,
 | 
			
		||||
 * but that creates loss-of-precision problems when the value is
 | 
			
		||||
 * ultimately destined to be converted to NUMERIC.	Since Value nodes
 | 
			
		||||
 * are only used in the parsing process, not for runtime data, it's
 | 
			
		||||
 * better to use the more general representation.)
 | 
			
		||||
 *
 | 
			
		||||
 * Note that an integer-looking string will get lexed as T_Float if
 | 
			
		||||
 * the value is too large to fit in a 'long'.
 | 
			
		||||
 *
 | 
			
		||||
 * Nulls, of course, don't need the value part at all.
 | 
			
		||||
 *----------------------
 | 
			
		||||
 */
 | 
			
		||||
typedef struct Value
 | 
			
		||||
{
 | 
			
		||||
	NodeTag		type;			/* tag appropriately (eg. T_String) */
 | 
			
		||||
	union ValUnion
 | 
			
		||||
	{
 | 
			
		||||
		long		ival;		/* machine integer */
 | 
			
		||||
		char	   *str;		/* string */
 | 
			
		||||
	}			val;
 | 
			
		||||
} Value;
 | 
			
		||||
 | 
			
		||||
#define intVal(v)		(((Value *)(v))->val.ival)
 | 
			
		||||
#define floatVal(v)		atof(((Value *)(v))->val.str)
 | 
			
		||||
#define strVal(v)		(((Value *)(v))->val.str)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*----------------------
 | 
			
		||||
 *		List node
 | 
			
		||||
 *
 | 
			
		||||
@@ -150,15 +112,6 @@ typedef struct FastList
 | 
			
		||||
#define makeFastList1(fl, x1)  \
 | 
			
		||||
	( (fl)->head = (fl)->tail = makeList1(x1) )
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * function prototypes in nodes/list.c
 | 
			
		||||
 */
 | 
			
		||||
extern Value *makeInteger(long i);
 | 
			
		||||
extern Value *makeFloat(char *numericStr);
 | 
			
		||||
extern Value *makeString(char *str);
 | 
			
		||||
extern Value *makeBitString(char *str);
 | 
			
		||||
 | 
			
		||||
extern List *lcons(void *datum, List *list);
 | 
			
		||||
extern List *lconsi(int datum, List *list);
 | 
			
		||||
extern List *lconso(Oid datum, List *list);
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user