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

📄 mal_type.c

📁 一个内存数据库的源代码这是服务器端还有客户端
💻 C
字号:
#line 113 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/mal/mal_type.mx"#include "mal_config.h"#include "mal_type.h"strgetTypeName(malType tpe){	char buf[PATHLENGTH], *s;	int l = PATHLENGTH, k;#ifdef DEBUG_MAL_TYPE	stream_printf(GDKout, "maltype: %d %d %d", tpe, getHeadType(tpe), getTailType(tpe));	stream_printf(GDKout, " [%d,%d]", getHeadIndex(tpe), getTailIndex(tpe));	stream_printf(GDKout, "  : %s\n", (isaBatType(tpe) ? "bat" : ""));#endif	if (tpe == TYPE_any)		return GDKstrdup("any");	if (isaBatType(tpe)) {		k = getHeadIndex(tpe);		if (k)			snprintf(buf, l, "bat[:any%c%d,", TMPMARKER, k);		else if (getHeadType(tpe) == TYPE_any)			snprintf(buf, l, "bat[:any,");		else			snprintf(buf, l, "bat[:%s,", ATOMname(getHeadType(tpe)));		l -= strlen(buf);		s = buf + strlen(buf);		k = getTailIndex(tpe);		if (k)			snprintf(s, l, ":any%c%d]",TMPMARKER,  k);		else if (getTailType(tpe) == TYPE_any)			snprintf(s, l, ":any]");		else			snprintf(s, l, ":%s]", ATOMname(getTailType(tpe)));#ifdef DEBUG_MAL_TYPE		stream_printf(GDKout, "%s\n", buf);#endif		return GDKstrdup(buf);	}	if (isAnyExpression(tpe)) {		strncpy(buf, "any", 4);		if (isAnyExpression(tpe))			snprintf(buf + 3, PATHLENGTH - 3, "%c%d",					TMPMARKER, getTailIndex(tpe));		return GDKstrdup(buf);	}#ifdef DEBUG_MAL_TYPE	stream_printf(GDKout, "Rely on GDK atom %s\n", ATOMname(tpe));#endif	return GDKstrdup(ATOMname(tpe));}#line 167 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/mal/mal_type.mx"int gdkCoercionTable[12][12] = {/*      void bit chr sht bat int         oid ptr flt dbl lng str *//* void */	{TYPE_void, TYPE_any, TYPE_any, TYPE_any, TYPE_any, TYPE_any,	 TYPE_any, TYPE_any, TYPE_any, TYPE_any, TYPE_any, TYPE_str},/* bit */	{TYPE_any, TYPE_bit, TYPE_any, TYPE_any, TYPE_any, TYPE_any,	 TYPE_any, TYPE_any, TYPE_any, TYPE_any, TYPE_any, TYPE_str},/* chr */	{TYPE_any, TYPE_any, TYPE_chr, TYPE_any, TYPE_any, TYPE_any,	 TYPE_any, TYPE_any, TYPE_any, TYPE_any, TYPE_any, TYPE_str},/* sht */	{TYPE_any, TYPE_any, TYPE_any, TYPE_sht, TYPE_any, TYPE_int,	 TYPE_any, TYPE_any, TYPE_flt, TYPE_dbl, TYPE_lng, TYPE_str},/* bat */	{TYPE_any, TYPE_any, TYPE_any, TYPE_any, TYPE_bat, TYPE_any,	 TYPE_any, TYPE_any, TYPE_any, TYPE_any, TYPE_any, TYPE_str},/* int */	{TYPE_any, TYPE_any, TYPE_any, TYPE_int, TYPE_any, TYPE_int,	 TYPE_any, TYPE_any, TYPE_flt, TYPE_dbl, TYPE_lng, TYPE_str},/* oid */	{TYPE_any, TYPE_any, TYPE_any, TYPE_int, TYPE_any, TYPE_int,	 TYPE_oid, TYPE_any, TYPE_any, TYPE_int, TYPE_any, TYPE_str},/* ptr */	{TYPE_any, TYPE_any, TYPE_any, TYPE_any, TYPE_any, TYPE_any,	 TYPE_any, TYPE_ptr, TYPE_any, TYPE_any, TYPE_any, TYPE_str},/* flt */	{TYPE_any, TYPE_any, TYPE_any, TYPE_any, TYPE_any, TYPE_any,	 TYPE_any, TYPE_any, TYPE_flt, TYPE_dbl, TYPE_any, TYPE_str},/* dbl */	{TYPE_any, TYPE_any, TYPE_any, TYPE_any, TYPE_any, TYPE_any,	 TYPE_any, TYPE_any, TYPE_dbl, TYPE_dbl, TYPE_any, TYPE_str},/* lng */	{TYPE_any, TYPE_any, TYPE_any, TYPE_lng, TYPE_any, TYPE_lng,	 TYPE_any, TYPE_any, TYPE_flt, TYPE_dbl, TYPE_lng, TYPE_str},/* str */	{TYPE_str, TYPE_str, TYPE_str, TYPE_str, TYPE_str, TYPE_str,	 TYPE_str, TYPE_str, TYPE_str, TYPE_str, TYPE_str, TYPE_str}};#line 213 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/mal/mal_type.mx"malTypecoercion(malType t1, malType t2){	if (t1 == t2)		return t1;	if (t1 < 0 || t1 >= TYPE_str)		return t1;	if (t2 < 0 || t2 >= TYPE_str)		return t2;	return gdkCoercionTable[(int) t1][(int) t2];}#line 234 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/mal/mal_type.mx"INLINE intidcmp(str n, str m){	if (* n == * m)		return strcmp(n, m);	return -1;}#line 247 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/mal/mal_type.mx"#define qt(x) (nme[1]==x[1] && nme[2]==x[2] )intgetTypeIndex(str nme, int len, int deftype){	int i,k=0;	char old=0;	if (len == 3)		switch (*nme) {		case 'a':			if (qt("any"))				return TYPE_any;			break;		case 'b':			if (qt("bat"))				return TYPE_bat;			if (qt("bit"))				return TYPE_bit;			if (qt("bte"))				return TYPE_bte;			break;		case 'c':			if (qt("chr"))				return TYPE_chr;			break;		case 'd':			if (qt("dbl"))				return TYPE_dbl;			break;		case 'i':			if (qt("int"))				return TYPE_int;			break;		case 'f':			if (qt("flt"))				return TYPE_flt;			break;		case 'l':			if (qt("lng"))				return TYPE_lng;			break;		case 'o':			if (qt("oid"))				return TYPE_oid;			break;		case 'p':			if (qt("ptr"))				return TYPE_ptr;			break;		case 's':			if (qt("str"))				return TYPE_str;			if (qt("sht"))				return TYPE_sht;			break;		case 'w':			if (qt("wrd"))				return TYPE_wrd;			break;		}	if( nme[0]=='v' && qt("voi") && nme[3] == 'd')				return TYPE_void;	if( len > 0 ){		old=  nme[k = MIN(IDLENGTH, len)];		nme[k] = 0;	}	for(i= TYPE_str; i< GDKatomcnt; i++)	if( BATatoms[i].name[0]==nme[0] &&		strcmp(nme,BATatoms[i].name)==0) break;	if( len > 0)		nme[k]=old;	/*stream_printf(GDKout,"getTypeIndex %s %d %d\n",nme,i, GDKatomcnt); */	if (i == GDKatomcnt)		i = deftype;	return i;}INLINE intfindGDKtype(int type){	if (type == TYPE_any || type== TYPE_void)		return TYPE_void;	if (isaBatType(type))		return TYPE_bat;	return ATOMtype(type);}strnewTmpName(char tag, int i){	char buf[PATHLENGTH];	snprintf(buf, PATHLENGTH, "%c%d", tag, i);	return GDKstrdup(buf);}INLINE intisTmpName(str n){	return n && *n == TMPMARKER;}intisTypeName(str n){	int i = ATOMindex(n);	return i >= 0;}intisIdentifier(str s){	if (!isalpha((int) *s))		return -1;	for (; s && *s; s++)		if (!isalnum((int) *s) && *s != '_')			return -1;	return 0;}#line 367 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/mal/mal_type.mx"

⌨️ 快捷键说明

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