summaryrefslogtreecommitdiff
path: root/src/include
diff options
context:
space:
mode:
authorNeil Conway2004-01-07 18:43:36 +0000
committerNeil Conway2004-01-07 18:43:36 +0000
commitafca5d50dc296580925b560fff0eb75bb48f0cbe (patch)
tree4ed69580d3e35ce53b79ae9a6fd5115ebca11dd5 /src/include
parent7f5e12a84cfa57e3ae56145297d2971441a42a4c (diff)
Cleanup: move the 'Value' node into a separate file, rather than putting
it in the same file as the 'List' node.
Diffstat (limited to 'src/include')
-rw-r--r--src/include/nodes/nodes.h10
-rw-r--r--src/include/nodes/pg_list.h51
-rw-r--r--src/include/nodes/primnodes.h3
-rw-r--r--src/include/nodes/value.h56
4 files changed, 67 insertions, 53 deletions
diff --git a/src/include/nodes/nodes.h b/src/include/nodes/nodes.h
index cc4d3fe933..ced6f6cb43 100644
--- a/src/include/nodes/nodes.h
+++ b/src/include/nodes/nodes.h
@@ -7,7 +7,7 @@
* Portions Copyright (c) 1996-2003, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
- * $PostgreSQL: pgsql/src/include/nodes/nodes.h,v 1.149 2004/01/06 23:55:19 tgl Exp $
+ * $PostgreSQL: pgsql/src/include/nodes/nodes.h,v 1.150 2004/01/07 18:43:36 neilc Exp $
*
*-------------------------------------------------------------------------
*/
@@ -175,10 +175,9 @@ typedef enum NodeTag
T_AllocSetContext,
/*
- * TAGS FOR VALUE NODES (pg_list.h)
+ * TAGS FOR VALUE NODES (value.h)
*/
T_Value = 650,
- T_List,
T_Integer,
T_Float,
T_String,
@@ -186,6 +185,11 @@ typedef enum NodeTag
T_Null,
/*
+ * TAGS FOR LIST NODES (pg_list.h)
+ */
+ T_List,
+
+ /*
* TAGS FOR PARSE TREE NODES (parsenodes.h)
*/
T_Query = 700,
diff --git a/src/include/nodes/pg_list.h b/src/include/nodes/pg_list.h
index e9d6db8699..31566a29c9 100644
--- a/src/include/nodes/pg_list.h
+++ b/src/include/nodes/pg_list.h
@@ -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 $
*
*-------------------------------------------------------------------------
*/
@@ -22,44 +22,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
*
* We support three types of lists:
@@ -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);
diff --git a/src/include/nodes/primnodes.h b/src/include/nodes/primnodes.h
index 41efbf7516..6a9312b73f 100644
--- a/src/include/nodes/primnodes.h
+++ b/src/include/nodes/primnodes.h
@@ -10,7 +10,7 @@
* Portions Copyright (c) 1996-2003, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
- * $PostgreSQL: pgsql/src/include/nodes/primnodes.h,v 1.93 2003/11/29 22:41:06 pgsql Exp $
+ * $PostgreSQL: pgsql/src/include/nodes/primnodes.h,v 1.94 2004/01/07 18:43:36 neilc Exp $
*
*-------------------------------------------------------------------------
*/
@@ -19,6 +19,7 @@
#include "access/attnum.h"
#include "nodes/pg_list.h"
+#include "nodes/value.h"
/* ----------------------------------------------------------------
diff --git a/src/include/nodes/value.h b/src/include/nodes/value.h
new file mode 100644
index 0000000000..6f135492d3
--- /dev/null
+++ b/src/include/nodes/value.h
@@ -0,0 +1,56 @@
+/*-------------------------------------------------------------------------
+ *
+ * value.h
+ * interface for Value nodes
+ *
+ *
+ * Copyright (c) 2003, PostgreSQL Global Development Group
+ *
+ * $PostgreSQL: pgsql/src/include/nodes/value.h,v 1.1 2004/01/07 18:43:36 neilc Exp $
+ *
+ *-------------------------------------------------------------------------
+ */
+
+#include "nodes/nodes.h"
+
+/*----------------------
+ * 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)
+
+extern Value *makeInteger(long i);
+extern Value *makeFloat(char *numericStr);
+extern Value *makeString(char *str);
+extern Value *makeBitString(char *str);