📄 mal_scenario.c
字号:
#line 179 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/mal/mal_scenario.mx"#include "mal_config.h"#include "mal_scenario.h"#include "mal_linker.h" /* for getAddress() */#include "mal_client.h"#include "mal_authorize.h"#include "mal_exception.h"struct SCENARIO scenarioRec[MAXSCEN] = { {"mal", "mal", 0, 0, /* hardwired MALinit*/ 0, 0, /* implicit */ 0, 0, /* no initClient */ "MALexitClient", (MALfcn) &MALexitClient, "MALreader", (MALfcn) &MALreader, 0, "MALparser", (MALfcn) &MALparser, 0, "MALoptimizer", 0, 0, 0, 0, 0, "MALengine", (MALfcn) &MALengine, 0, 0}, {0,0, /* name */ 0, 0, /* init */ 0, 0, /* exit */ 0, 0, /* initClient */ 0, 0, /* exitClient */ 0, 0, 0, /* reader */ 0, 0, 0, /* parser */ 0, 0, 0, /* optimizer */ 0, 0, 0, /* scheduler */ 0, 0, 0, 0 /* engine */ }};#line 214 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/mal/mal_scenario.mx"ScenariogetFreeScenario(){ int i; Scenario scen = NULL; mal_set_lock(mal_contextLock, "Scenario"); for (i = 0; i < MAXSCEN && scenarioRec[i].name; i++) ; if (i == MAXSCEN) { showException(MAL,"freeScenario", "no scenario space left (%d); adjust MAXSCEN and recompile", MAXSCEN); } else { scen = scenarioRec + i; } mal_unset_lock(mal_contextLock, "Scenario"); return scen;}#line 248 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/mal/mal_scenario.mx"strinitScenario(Client c, Scenario s){ str msg = MAL_SUCCEED; if (s->initSystemCmd) return(fillScenario(c, s)); /* prepare for conclicts */ mal_set_lock(mal_contextLock, "Scenario"); if (s->initSystem && s->initSystemCmd == 0) { s->initSystemCmd = (MALfcn) getAddress(s->language, s->language, s->initSystem,1); if (s->initSystemCmd) { msg = (*s->initSystemCmd) (c); } else { char buf[BUFSIZ]; snprintf(buf,BUFSIZ,"%s.init",s->language); msg = createException(MAL, buf, "Scenario not initialized"); } } /* does the return below unset the lock? */ if (msg) return msg; #line 236 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/mal/mal_scenario.mx"if( s-> exitSystem){ if( s-> exitSystemCmd == 0) s-> exitSystemCmd = (MALfcn)getAddress(s->language,s->language,s-> exitSystem,1);}#line 270 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/mal/mal_scenario.mx" #line 236 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/mal/mal_scenario.mx"if( s-> initClient){ if( s-> initClientCmd == 0) s-> initClientCmd = (MALfcn)getAddress(s->language,s->language,s-> initClient,1);}#line 271 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/mal/mal_scenario.mx" #line 236 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/mal/mal_scenario.mx"if( s-> exitClient){ if( s-> exitClientCmd == 0) s-> exitClientCmd = (MALfcn)getAddress(s->language,s->language,s-> exitClient,1);}#line 272 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/mal/mal_scenario.mx" #line 236 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/mal/mal_scenario.mx"if( s-> reader){ if( s-> readerCmd == 0) s-> readerCmd = (MALfcn)getAddress(s->language,s->language,s-> reader,1);}#line 273 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/mal/mal_scenario.mx" #line 236 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/mal/mal_scenario.mx"if( s-> parser){ if( s-> parserCmd == 0) s-> parserCmd = (MALfcn)getAddress(s->language,s->language,s-> parser,1);}#line 274 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/mal/mal_scenario.mx" #line 236 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/mal/mal_scenario.mx"if( s-> optimizer){ if( s-> optimizerCmd == 0) s-> optimizerCmd = (MALfcn)getAddress(s->language,s->language,s-> optimizer,1);}#line 275 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/mal/mal_scenario.mx" #line 236 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/mal/mal_scenario.mx"if( s-> tactics){ if( s-> tacticsCmd == 0) s-> tacticsCmd = (MALfcn)getAddress(s->language,s->language,s-> tactics,1);}#line 276 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/mal/mal_scenario.mx" #line 236 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/mal/mal_scenario.mx"if( s-> engine){ if( s-> engineCmd == 0) s-> engineCmd = (MALfcn)getAddress(s->language,s->language,s-> engine,1);}#line 277 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/mal/mal_scenario.mx" mal_unset_lock(mal_contextLock, "Scenario"); return(fillScenario(c, s));}strdefaultScenario(Client c){ return initScenario(c, scenarioRec);}#line 296 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/mal/mal_scenario.mx"voidshowScenario(stream *f, Scenario scen){ stream_printf(f, "[ \"%s\",", scen->name); #line 292 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/mal/mal_scenario.mx" if( scen->initSystem) stream_printf(f," \"%s%s\",",scen->initSystem, (scen->initSystemCmd?"":"?")); else stream_printf(f," nil,");#line 300 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/mal/mal_scenario.mx" #line 292 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/mal/mal_scenario.mx" if( scen->exitSystem) stream_printf(f," \"%s%s\",",scen->exitSystem, (scen->exitSystemCmd?"":"?")); else stream_printf(f," nil,");#line 301 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/mal/mal_scenario.mx" #line 292 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/mal/mal_scenario.mx" if( scen->initClient) stream_printf(f," \"%s%s\",",scen->initClient, (scen->initClientCmd?"":"?")); else stream_printf(f," nil,");#line 302 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/mal/mal_scenario.mx" #line 292 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/mal/mal_scenario.mx" if( scen->exitClient) stream_printf(f," \"%s%s\",",scen->exitClient, (scen->exitClientCmd?"":"?")); else stream_printf(f," nil,");#line 303 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/mal/mal_scenario.mx" #line 292 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/mal/mal_scenario.mx" if( scen->parser) stream_printf(f," \"%s%s\",",scen->parser, (scen->parserCmd?"":"?")); else stream_printf(f," nil,");#line 304 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/mal/mal_scenario.mx" #line 292 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/mal/mal_scenario.mx" if( scen->optimizer) stream_printf(f," \"%s%s\",",scen->optimizer, (scen->optimizerCmd?"":"?")); else stream_printf(f," nil,");#line 305 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/mal/mal_scenario.mx" #line 292 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/mal/mal_scenario.mx" if( scen->tactics) stream_printf(f," \"%s%s\",",scen->tactics, (scen->tacticsCmd?"":"?")); else stream_printf(f," nil,");#line 306 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/mal/mal_scenario.mx" #line 292 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/mal/mal_scenario.mx" if( scen->engine) stream_printf(f," \"%s%s\",",scen->engine, (scen->engineCmd?"":"?")); else stream_printf(f," nil,");#line 307 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/mal/mal_scenario.mx" stream_printf(f, "]\n");}ScenariofindScenario(str nme){ int i; Scenario scen = scenarioRec; for (i = 0; i < MAXSCEN && scen->name; i++, scen++) if (strcmp(scen->name, nme) == 0) return scen; return NULL;}#line 341 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/mal/mal_scenario.mx"voidupdateScenario(str nme, MALfcn fcn){ int i; Scenario scen = scenarioRec; for (i = 0; i < MAXSCEN && scen->name; i++, scen++) { #line 330 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/mal/mal_scenario.mx"if( scen->initSystem && strcmp(scen->initSystem,nme) == 0){ Client c1; scen->initSystemCmd = fcn; for(c1 = mal_clients; c1 < mal_clients+MAL_MAXCLIENTS; c1++) if( 0 && c1->scenario && strcmp(c1->scenario,scen->name)==0) c1->phase[ 0]= fcn; else if( 0 && c1->oldscenario && strcmp(c1->oldscenario,scen->name)==0) c1->oldphase[ 0]= fcn;}#line 348 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/mal/mal_scenario.mx" #line 330 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/mal/mal_scenario.mx"if( scen->exitSystem && strcmp(scen->exitSystem,nme) == 0){ Client c1; scen->exitSystemCmd = fcn; for(c1 = mal_clients; c1 < mal_clients+MAL_MAXCLIENTS; c1++) if( 0 && c1->scenario && strcmp(c1->scenario,scen->name)==0) c1->phase[ 0]= fcn; else if( 0 && c1->oldscenario && strcmp(c1->oldscenario,scen->name)==0) c1->oldphase[ 0]= fcn;}#line 349 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/mal/mal_scenario.mx" #line 330 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/mal/mal_scenario.mx"if( scen->initClient && strcmp(scen->initClient,nme) == 0){ Client c1; scen->initClientCmd = fcn; for(c1 = mal_clients; c1 < mal_clients+MAL_MAXCLIENTS; c1++) if( INITCLIENT && c1->scenario && strcmp(c1->scenario,scen->name)==0) c1->phase[ INITCLIENT]= fcn; else if( INITCLIENT && c1->oldscenario && strcmp(c1->oldscenario,scen->name)==0) c1->oldphase[ INITCLIENT]= fcn;}#line 350 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/mal/mal_scenario.mx" #line 330 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/mal/mal_scenario.mx"if( scen->exitClient && strcmp(scen->exitClient,nme) == 0){ Client c1; scen->exitClientCmd = fcn; for(c1 = mal_clients; c1 < mal_clients+MAL_MAXCLIENTS; c1++) if( EXITCLIENT && c1->scenario && strcmp(c1->scenario,scen->name)==0) c1->phase[ EXITCLIENT]= fcn; else if( EXITCLIENT && c1->oldscenario && strcmp(c1->oldscenario,scen->name)==0) c1->oldphase[ EXITCLIENT]= fcn;}#line 351 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/mal/mal_scenario.mx" #line 330 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/mal/mal_scenario.mx"if( scen->reader && strcmp(scen->reader,nme) == 0){ Client c1; scen->readerCmd = fcn; for(c1 = mal_clients; c1 < mal_clients+MAL_MAXCLIENTS; c1++) if( READER && c1->scenario && strcmp(c1->scenario,scen->name)==0) c1->phase[ READER]= fcn; else if( READER && c1->oldscenario && strcmp(c1->oldscenario,scen->name)==0) c1->oldphase[ READER]= fcn;}#line 352 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/mal/mal_scenario.mx" #line 330 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/mal/mal_scenario.mx"if( scen->parser && strcmp(scen->parser,nme) == 0){ Client c1; scen->parserCmd = fcn; for(c1 = mal_clients; c1 < mal_clients+MAL_MAXCLIENTS; c1++) if( PARSER && c1->scenario && strcmp(c1->scenario,scen->name)==0) c1->phase[ PARSER]= fcn; else if( PARSER && c1->oldscenario && strcmp(c1->oldscenario,scen->name)==0) c1->oldphase[ PARSER]= fcn;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -