/*-------------------------------------------------------------------------
*
* value . h
* interface for value nodes
*
*
* Copyright ( c ) 2003 - 2025 , PostgreSQL Global Development Group
*
* src / include / nodes / value . h
*
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
*/
#ifndef VALUE_H
#define VALUE_H
#include "nodes/nodes.h"
/*
* The node types Integer , Float , String , and BitString are used to represent
* literals in the lexer and are also used to pass constants around in the
* parser . One difference between these node types and , say , a plain int or
* char * is that the nodes can be put into a List .
*
* ( There used to be a Value node , which encompassed all these different node types . Hence the name of this file . )
*/
typedef struct Integer
{
pg_node_attr(special_read_write)
NodeTag type;
int ival;
} Integer;
/*
* Float is internally represented as string . Using T_Float as the node type
* simply indicates that the contents of the string look like a valid numeric
* literal . The value might end up being converted to NUMERIC , so we can ' t
* store it internally as a C double , since that could lose precision . Since
* these nodes are generally 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 an ' int ' .
*/
typedef struct Float
{
pg_node_attr(special_read_write)
NodeTag type;
char *fval;
} Float ;
typedef struct Boolean
{
pg_node_attr(special_read_write)
NodeTag type;
bool boolval;
} Boolean;
typedef struct String
{
pg_node_attr(special_read_write)
NodeTag type;
char *sval;
} String;
typedef struct BitString
{
pg_node_attr(special_read_write)
NodeTag type;
char *bsval;
} BitString;
#define intVal(v) (castNode(Integer, v)->ival)
#define floatVal(v) atof(castNode(Float , v)->fval)
#define boolVal(v) (castNode(Boolean, v)->boolval)
#define strVal(v) (castNode(String, v)->sval)
extern Integer *makeInteger(int i);
extern Float *makeFloat(char *numericStr);
extern Boolean *makeBoolean(bool val);
extern String *makeString(char *str);
extern BitString *makeBitString(char *str);
#endif /* VALUE_H */
Messung V0.5 in Prozent C=96 H=100 G=97
¤ Dauer der Verarbeitung: 0.1 Sekunden
(vorverarbeitet am 2026-08-06)
¤
*© Formatika GbR, Deutschland