⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pg_list.h

📁 关系型数据库 Postgresql 6.5.2
💻 H
字号:
/*------------------------------------------------------------------------- * * pg_list.h *	  POSTGRES generic list package * * * Copyright (c) 1994, Regents of the University of California * * $Id: pg_list.h,v 1.11 1999/02/22 05:26:47 momjian Exp $ * *------------------------------------------------------------------------- */#ifndef PG_LIST_H#define PG_LIST_H#include <nodes/nodes.h>/* ---------------------------------------------------------------- *						node definitions * ---------------------------------------------------------------- *//*---------------------- *		Value node *---------------------- */typedef struct Value{	NodeTag		type;			/* tag appropriately (eg. T_String) */	union ValUnion	{		char	   *str;		/* string */		long		ival;		double		dval;	}			val;} Value;#define intVal(v)		(((Value *)v)->val.ival)#define floatVal(v)		(((Value *)v)->val.dval)#define strVal(v)		(((Value *)v)->val.str)/*---------------------- *		List node *---------------------- */typedef struct List{	NodeTag		type;	union	{		void	   *ptr_value;		int			int_value;	}			elem;	struct List *next;} List;#define    NIL			((List *) NULL)/* ---------------- *		accessor macros * ---------------- *//* anything that doesn't end in 'i' is assumed to be referring to the *//* pointer version of the list (where it makes a difference)		  */#define lfirst(l)								((l)->elem.ptr_value)#define lnext(l)								((l)->next)#define lsecond(l)								(lfirst(lnext(l)))#define lfirsti(l)								((l)->elem.int_value)/* * foreach - *	  a convenience macro which loops through the list */#define foreach(_elt_,_list_)	\	for(_elt_=_list_; _elt_!=NIL;_elt_=lnext(_elt_))/* * function prototypes in nodes/list.c */extern int	length(List *list);extern List *nconc(List *list1, List *list2);extern List *lcons(void *datum, List *list);extern bool member(void *foo, List *bar);extern Value *makeInteger(long i);extern Value *makeFloat(double d);extern Value *makeString(char *str);extern List *makeList(void *elem,...);extern List *lappend(List *list, void *obj);extern List *lremove(void *elem, List *list);extern void freeList(List *list);extern List *LispRemove(void *elem, List *list);extern void *nth(int n, List *l);extern void set_nth(List *l, int n, void *elem);List	   *lconsi(int datum, List *list);List	   *lappendi(List *list, int datum);extern bool intMember(int, List *);extern int	nthi(int n, List *l);extern List *set_difference(List *, List *);extern List *set_differencei(List *, List *);extern List *LispUnion(List *foo, List *bar);extern List *LispUnioni(List *foo, List *bar);extern bool same(List *foo, List *bar);/* should be in nodes.h but needs List *//* in copyfuncs.c */extern List *listCopy(List *);#endif	 /* PG_LIST_H */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -