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

📄 inspect.c

📁 一个内存数据库的源代码这是服务器端还有客户端
💻 C
📖 第 1 页 / 共 2 页
字号:
#line 116 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/modules/mal/inspect.mx"#include "mal_config.h"#include "gdk.h"#include <stdarg.h>#include <time.h>#include "mal_resolve.h"#include "mal_client.h"#include "mal_exception.h"#include "mal_debugger.h"#include "mal_interpreter.h"#include "mal_namespace.h"#ifdef WIN32#ifndef LIBINSPECT#define inspect_export extern __declspec(dllimport)#else#define inspect_export extern __declspec(dllexport)#endif#else#define inspect_export extern#endifinspect_export str INSPECTgetModuleIds(int *ret);inspect_export str INSPECTsymbolFind(int *ret, int kind);inspect_export str INSPECTfactoryNames(int *ret);inspect_export str INSPECTgetFunctionIds(int *ret);inspect_export str INSPECTpatternNames(int *ret);inspect_export str INSPECTcommandNames(int *ret);inspect_export str INSPECTgetFunction(int *ret);inspect_export str INSPECTgetModule(int *ret);inspect_export str INSPECTgetkind(int *ret);inspect_export str INSPECTgetaddress(int *ret);inspect_export str INSPECTgetAllSignatures(int *ret);inspect_export str INSPECTgetAllModules(int *ret);inspect_export str INSPECTgetAllFunctions(int *ret);inspect_export str INSPECTgetAllAddresses(int *ret);inspect_export str INSPECTgetDefinition(int *ret, str *nme, str *fcn);inspect_export str INSPECTgetSignature(int *ret, str *mod, str *fcn);inspect_export str INSPECTgetAddress(int *ret, str *mod, str *fcn);inspect_export str INSPECTgetComment(int *ret, str *mod, str *fcn);inspect_export str INSPECTgetSource(str *ret, str *mod, str *fcn);inspect_export str INSPECTgetModuleSize(int *ret, str *mod);inspect_export str INSPECTgetFunctionSize(lng *ret, str *mod, str *fcn);inspect_export str INSPECTgetSize(MalBlkPtr mb, MalStkPtr stk, InstrPtr p);inspect_export str INSPECTgetEnvironment(int *ret);inspect_export str INSPECTsymbolType(int *ret, str *mod, str *fcn);inspect_export str INSPECTatom_names(int *ret);inspect_export str INSPECTatom_sup_names(int *ret);inspect_export str INSPECTatom_sizes(int *ret);inspect_export str INSPECTshowFunction(MalBlkPtr mb, MalStkPtr stk, InstrPtr p);inspect_export str INSPECTshowFunction3(MalBlkPtr mb, MalStkPtr stk, InstrPtr p);inspect_export str INSPECTtypename(str *ret, int *tpe);inspect_export str INSPECTtype(MalBlkPtr mb, MalStkPtr stk, InstrPtr pci);inspect_export str INSPECTtypeName(MalBlkPtr mb, MalStkPtr stk, InstrPtr pci);inspect_export str INSPECTtypeIndex(MalBlkPtr mb, MalStkPtr stk, InstrPtr pci);#line 174 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/modules/mal/inspect.mx"strINSPECTgetModuleIds(int *ret){	Client c;	Module s;	int i = 0;	BAT *b = BATnew(TYPE_void, TYPE_str, 256);	if (b == 0)		throw(MAL, "inspect.getModuleIds", "failed to create BAT");	c = MCgetClient();	for (s = c->nspace; s; s = s->outer, i++)		BUNins(b, (ptr) &int_nil, s->name, FALSE);	if (!(b->batDirty&2)) b = BATsetaccess(b, BAT_READ);	#line 113 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/modules/mal/inspect.mx"	if (BBPindex("view_scope_names") <= 0)		BATname(b, "view_scope_names");	BATroles(b,"view","scope");	BATmode(b,TRANSIENT);	BATfakeCommit(b);	*ret = b->batCacheid;	BBPkeepref(*ret);#line 191 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/modules/mal/inspect.mx"	return MAL_SUCCEED;}strINSPECTsymbolFind(int *ret, int kind){	Client c;	Module s;	Symbol t;	int i;	BAT *b = BATnew(TYPE_str, TYPE_str, 256);	if (b == 0)		throw(MAL, "inspect.symbolFind", "failed to create BAT");	c = MCgetClient();	s = c->nspace;	while (s) {		for (i = 0; s && i < MAXSCOPE; i++)			if (s->subscope[i]) {				for (t = s->subscope[i]; t; t = t->peer) {					InstrPtr sig = getSignature(t);					if (kind && kind != sig->token)						continue;					BUNins(b, getModuleId(sig), getFunctionId(sig), FALSE);				}			}		s = s->outer;	}	if (!(b->batDirty&2)) b = BATsetaccess(b, BAT_READ);	#line 113 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/modules/mal/inspect.mx"	if (BBPindex("view_symbol_name") <= 0)		BATname(b, "view_symbol_name");	BATroles(b,"view","symbol");	BATmode(b,TRANSIENT);	BATfakeCommit(b);	*ret = b->batCacheid;	BBPkeepref(*ret);#line 223 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/modules/mal/inspect.mx"	return MAL_SUCCEED;}strINSPECTfactoryNames(int *ret){	return INSPECTsymbolFind(ret, FACTORYsymbol);}strINSPECTgetFunctionIds(int *ret){	return INSPECTsymbolFind(ret, FUNCTIONsymbol);}strINSPECTpatternNames(int *ret){	return INSPECTsymbolFind(ret, PATTERNsymbol);}strINSPECTcommandNames(int *ret){	return INSPECTsymbolFind(ret, COMMANDsymbol);}#line 257 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/modules/mal/inspect.mx"strINSPECTgetAllFunctions(int *ret){	Client c;	Module s;	Symbol t;	int i;	oid k = 0;	BAT *b = BATnew(TYPE_oid, TYPE_str, 256);	if (b == 0)		throw(MAL, "inspect.getgetFunctionId", "failed to create BAT");	BATseqbase(b, k);	c = MCgetClient();	s = c->nspace;	while (s) {		for (i = 0; s && i < MAXSCOPE; i++)			if (s->subscope[i]) {				for (t = s->subscope[i]; t; t = t->peer) {					InstrPtr sig = getSignature(t);					BUNins(b, &k, getFunctionId(sig), FALSE);					k++;				}			}		s = s->outer;	}	if (!(b->batDirty&2)) b = BATsetaccess(b, BAT_READ);	#line 113 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/modules/mal/inspect.mx"	if (BBPindex("view_symbol_function") <= 0)		BATname(b, "view_symbol_function");	BATroles(b,"view","symbol");	BATmode(b,TRANSIENT);	BATfakeCommit(b);	*ret = b->batCacheid;	BBPkeepref(*ret);#line 286 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/modules/mal/inspect.mx"	return MAL_SUCCEED;}strINSPECTgetAllModules(int *ret){	Client c;	Module s;	Symbol t;	int i;	oid k = 0;	BAT *b = BATnew(TYPE_oid, TYPE_str, 256);	if (b == 0)		throw(MAL, "inspect.getmodule", "failed to create BAT");	BATseqbase(b, k);	c = MCgetClient();	s = c->nspace;	while (s) {		for (i = 0; s && i < MAXSCOPE; i++)			if (s->subscope[i]) {				for (t = s->subscope[i]; t; t = t->peer) {					InstrPtr sig = getSignature(t);					BUNins(b, &k, getModuleId(sig), FALSE);					k++;				}			}		s = s->outer;	}	if (!(b->batDirty&2)) b = BATsetaccess(b, BAT_READ);	#line 113 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/modules/mal/inspect.mx"	if (BBPindex("view_symbol_module") <= 0)		BATname(b, "view_symbol_module");	BATroles(b,"view","symbol");	BATmode(b,TRANSIENT);	BATfakeCommit(b);	*ret = b->batCacheid;	BBPkeepref(*ret);#line 319 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/modules/mal/inspect.mx"	return MAL_SUCCEED;}strINSPECTgetkind(int *ret){	Client c;	Module s;	Symbol t;	int i;	oid k = 0;	BAT *b = BATnew(TYPE_oid, TYPE_str, 256);	if (b == 0)		throw(MAL, "inspect.get@1", "failed to create BAT");	BATseqbase(b, k);	c = MCgetClient();	s = c->nspace;	while (s) {		for (i = 0; s && i < MAXSCOPE; i++)			if (s->subscope[i]) {				for (t = s->subscope[i]; t; t = t->peer) {					InstrPtr sig = getSignature(t);					str kind = operatorName(sig->token);					BUNins(b, &k, kind, FALSE);					k++;				}			}		s = s->outer;	}	if (!(b->batDirty&2)) b = BATsetaccess(b, BAT_READ);	#line 113 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/modules/mal/inspect.mx"	if (BBPindex("view_symbol_kind") <= 0)		BATname(b, "view_symbol_kind");	BATroles(b,"view","symbol");	BATmode(b,TRANSIENT);	BATfakeCommit(b);	*ret = b->batCacheid;	BBPkeepref(*ret);#line 353 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/modules/mal/inspect.mx"	return MAL_SUCCEED;}strINSPECTgetaddress(int *ret){	Client c;	Module s;	Symbol t;	int i;	oid k = 0;	BAT *b = BATnew(TYPE_oid, TYPE_str, 256);	if (b == 0)		throw(MAL, "inspect.get@1", "failed to create BAT");	BATseqbase(b, k);	c = MCgetClient();	s = c->nspace;	while (s) {		for (i = 0; s && i < MAXSCOPE; i++)			if (s->subscope[i]) {				for (t = s->subscope[i]; t; t = t->peer) {					str kind = t->def->binding;					if (kind == 0)						kind = "";					BUNins(b, &k, &kind, FALSE);					k++;				}			}		s = s->outer;	}	if (!(b->batDirty&2)) b = BATsetaccess(b, BAT_READ);	#line 113 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/modules/mal/inspect.mx"	if (BBPindex("view_symbol_ address") <= 0)		BATname(b, "view_symbol_ address");	BATroles(b,"view","symbol");	BATmode(b,TRANSIENT);	BATfakeCommit(b);	*ret = b->batCacheid;	BBPkeepref(*ret);#line 388 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/modules/mal/inspect.mx"	return MAL_SUCCEED;}strINSPECTgetAllSignatures(int *ret){	Client c;	Module s;	Symbol t;	int i;	oid k = 0;	BAT *b = BATnew(TYPE_oid, TYPE_str, 256);	char sig[4096],*a;	if (b == 0)		throw(MAL, "inspect.get@1", "failed to create BAT");	BATseqbase(b, k);	c = MCgetClient();	s = c->nspace;	while (s) {		for (i = 0; s && i < MAXSCOPE; i++)			if (s->subscope[i]) {				for (t = s->subscope[i]; t; t = t->peer) {					fcnDefinition(t->def, getSignature(t), sig, 0);					a= strstr(sig,"address");					if(a) *a = 0;					BUNins(b, &k, strchr(sig, '('), FALSE);					k++;				}			}		s = s->outer;	}	if (!(b->batDirty&2)) b = BATsetaccess(b, BAT_READ);	#line 113 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/modules/mal/inspect.mx"	if (BBPindex("view_ symbol_address") <= 0)		BATname(b, "view_ symbol_address");	BATroles(b,"view"," symbol");	BATmode(b,TRANSIENT);	BATfakeCommit(b);	*ret = b->batCacheid;	BBPkeepref(*ret);#line 424 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/modules/mal/inspect.mx"	return MAL_SUCCEED;}strINSPECTgetAllAddresses(int *ret){	Client c;	Module s;	Symbol t;	int i;	oid k = 0;	BAT *b = BATnew(TYPE_oid, TYPE_str, 256);	char sig[4096],*a;	if (b == 0)		throw(MAL, "inspect.get@1", "failed to create BAT");	BATseqbase(b, k);	c = MCgetClient();	s = c->nspace;	while (s) {		for (i = 0; s && i < MAXSCOPE; i++)			if (s->subscope[i]) {				for (t = s->subscope[i]; t; t = t->peer) {					fcnDefinition(t->def, getSignature(t), sig, 0);					a= strstr(sig,"address");					if( a)						for( a=a+7; isspace((int) *a); a++)							;					BUNins(b, &k, (a? a: "nil"), FALSE);					k++;				}			}		s = s->outer;	}	if (!(b->batDirty&2)) b = BATsetaccess(b, BAT_READ);	#line 113 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/modules/mal/inspect.mx"	if (BBPindex("view_ symbol_address") <= 0)		BATname(b, "view_ symbol_address");	BATroles(b,"view"," symbol");	BATmode(b,TRANSIENT);	BATfakeCommit(b);	*ret = b->batCacheid;	BBPkeepref(*ret);#line 460 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/modules/mal/inspect.mx"	return MAL_SUCCEED;}strINSPECTgetDefinition(int *ret, str *mod, str *fcn){	Symbol s;	char buf[BUFSIZ];	BAT *b = BATnew(TYPE_str, TYPE_str, 256);	if (b == 0)		throw(MAL, "inspect.getDefinition", "failed to create BAT");	snprintf(buf,BUFSIZ,"%s.%s",*mod,*fcn);	s = findMALSymbol(putName(*mod, strlen(*mod)), putName(*fcn, strlen(*fcn)));	while (s) {		int i;		str ps;		for (i = 0; i < s->def->stop; i++) {			ps = instruction2str(s->def, getInstrPtr(s->def, i), 0);			BUNins(b, buf, ps + 1, FALSE);			GDKfree(ps);		}		s = s->peer;	}	if (!(b->batDirty&2)) b = BATsetaccess(b, BAT_READ);	#line 113 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/modules/mal/inspect.mx"	if (BBPindex("view_fcn_stmt") <= 0)		BATname(b, "view_fcn_stmt");	BATroles(b,"view","fcn");	BATmode(b,TRANSIENT);	BATfakeCommit(b);	*ret = b->batCacheid;	BBPkeepref(*ret);#line 489 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/modules/mal/inspect.mx"	return MAL_SUCCEED;}

⌨️ 快捷键说明

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