- upgrade to latest simplecudd.

- fix paths in learning.
This commit is contained in:
Costa Vitor 2009-07-31 17:04:11 -05:00
parent 98843bea46
commit 77e947cdae
5 changed files with 75 additions and 56 deletions

View File

@ -10,7 +10,7 @@
% will run 20 iterations of learning with default settings % will run 20 iterations of learning with default settings
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
:- use_module('../learning'). :- use_module(library(problog_learning)).
%%%% %%%%
% background knowledge % background knowledge

View File

@ -233,8 +233,8 @@
shell/2]). shell/2]).
% load our own modules % load our own modules
:- use_module('learning/logger'). :- use_module('problog_learning/logger').
:- use_module('learning/flags_learning'). :- use_module('problog_learning/flags_learning').
:- use_module(problog). :- use_module(problog).
% used to indicate the state of the system % used to indicate the state of the system

View File

@ -142,7 +142,6 @@
* * * *
\******************************************************************************/ \******************************************************************************/
#include "simplecudd.h" #include "simplecudd.h"
#include <signal.h> #include <signal.h>
@ -218,12 +217,18 @@ int main(int argc, char **arg) {
return -1; return -1;
} }
if (params.method != 0 && arg[params.method][0] != 'g' && arg[params.method][0] != 'p' && arg[params.method][0] != 'o' && arg[params.method][0] != 'l') { if (params.method != 0 && arg[params.method][0] != 'g' && arg[params.method][0] != 'p' && arg[params.method][0] != 'o' && arg[params.method][0] != 'l') {
printhelp(argc, arg); printhelp(argc, arg);
fprintf(stderr, "Error: you must choose a calculation method beetween [p]robability, [g]radient, [l]ine search, [o]nline.\n"); fprintf(stderr, "Error: you must choose a calculation method beetween [p]robability, [g]radient, [l]ine search, [o]nline.\n");
return -1; return -1;
} }
if (params.method != 0 && (arg[params.method][0] == 'g' || arg[params.method][0] == 'p' || arg[params.method][0] == 'l') && params.inputfile == -1) {
printhelp(argc, arg);
fprintf(stderr, "Error: an input file is necessary for probability, gradient or line search calculation methods.\n");
return -1;
}
if (params.debug) DEBUGON; if (params.debug) DEBUGON;
RAPIDLOADON; RAPIDLOADON;
SETMAXBUFSIZE(params.maxbufsize); SETMAXBUFSIZE(params.maxbufsize);
@ -247,11 +252,6 @@ int main(int argc, char **arg) {
fileheader = ReadFileHeader(arg[params.loadfile]); fileheader = ReadFileHeader(arg[params.loadfile]);
switch(fileheader.filetype) { switch(fileheader.filetype) {
case BDDFILE_SCRIPT: case BDDFILE_SCRIPT:
if (params.inputfile == -1) {
printhelp(argc, arg);
fprintf(stderr, "Error: an input file is necessary for this type of loading file.\n");
return -1;
}
MyManager.manager = simpleBDDinit(fileheader.varcnt); MyManager.manager = simpleBDDinit(fileheader.varcnt);
MyManager.t = HIGH(MyManager.manager); MyManager.t = HIGH(MyManager.manager);
MyManager.f = LOW(MyManager.manager); MyManager.f = LOW(MyManager.manager);
@ -260,11 +260,6 @@ int main(int argc, char **arg) {
ivarcnt = fileheader.varcnt; ivarcnt = fileheader.varcnt;
break; break;
case BDDFILE_NODEDUMP: case BDDFILE_NODEDUMP:
if (params.inputfile == -1) {
printhelp(argc, arg);
fprintf(stderr, "Error: an input file is necessary for this type of loading file.\n");
return -1;
}
MyManager.manager = simpleBDDinit(fileheader.varcnt); MyManager.manager = simpleBDDinit(fileheader.varcnt);
MyManager.t = HIGH(MyManager.manager); MyManager.t = HIGH(MyManager.manager);
MyManager.f = LOW(MyManager.manager); MyManager.f = LOW(MyManager.manager);
@ -301,10 +296,10 @@ int main(int argc, char **arg) {
probability = tvalue.probability; probability = tvalue.probability;
double factor = sigmoid(MyManager.varmap.dvalue[i], params.sigmoid_slope) * (1 - sigmoid(MyManager.varmap.dvalue[i], params.sigmoid_slope)) * params.sigmoid_slope; double factor = sigmoid(MyManager.varmap.dvalue[i], params.sigmoid_slope) * (1 - sigmoid(MyManager.varmap.dvalue[i], params.sigmoid_slope)) * params.sigmoid_slope;
if (varpattern == NULL) { if (varpattern == NULL) {
printf("query_gradient(%s,%s,%1.12f).\n", arg[params.queryid], MyManager.varmap.vars[i], tvalue.gradient * factor); printf("query_gradient(%s,%s,%e).\n", arg[params.queryid], MyManager.varmap.vars[i], tvalue.gradient * factor);
} else { } else {
varpattern[strlen(varpattern) - 2] = '\0'; varpattern[strlen(varpattern) - 2] = '\0';
printf("query_gradient(%s,%s,%1.12f).\n", arg[params.queryid], varpattern, tvalue.gradient * factor); printf("query_gradient(%s,%s,%e).\n", arg[params.queryid], varpattern, tvalue.gradient * factor);
} }
ReInitHistory(MyManager.his, MyManager.varmap.varcnt); ReInitHistory(MyManager.his, MyManager.varmap.varcnt);
} }
@ -318,15 +313,15 @@ int main(int argc, char **arg) {
tvalue = CalcGradient(MyManager, bdd, 0 + MyManager.varmap.varstart, NULL); tvalue = CalcGradient(MyManager, bdd, 0 + MyManager.varmap.varstart, NULL);
probability = tvalue.probability; probability = tvalue.probability;
} }
printf("query_probability(%s,%1.12f).\n", arg[params.queryid], probability); printf("query_probability(%s,%e).\n", arg[params.queryid], probability);
break; break;
case 'l': case 'l':
tvalue = CalcGradient(MyManager, bdd, 0 + MyManager.varmap.varstart, NULL); tvalue = CalcGradient(MyManager, bdd, 0 + MyManager.varmap.varstart, NULL);
probability = tvalue.probability; probability = tvalue.probability;
printf("query_probability(%s,%1.12f).\n", arg[params.queryid], probability); printf("query_probability(%s,%e).\n", arg[params.queryid], probability);
break; break;
case 'p': case 'p':
printf("probability(%1.12f).\n", CalcProbability(MyManager, bdd)); printf("probability(%e).\n", CalcProbability(MyManager, bdd));
break; break;
case 'o': case 'o':
onlinetraverse(MyManager.manager, MyManager.varmap, MyManager.his, bdd); onlinetraverse(MyManager.manager, MyManager.varmap, MyManager.his, bdd);
@ -347,7 +342,13 @@ int main(int argc, char **arg) {
KillBDD(MyManager.manager); KillBDD(MyManager.manager);
free(MyManager.varmap.dvalue); free(MyManager.varmap.dvalue);
free(MyManager.varmap.ivalue); free(MyManager.varmap.ivalue);
free(MyManager.varmap.dynvalue); if (MyManager.varmap.dynvalue != NULL) {
for(i = 0; i < MyManager.varmap.varcnt; i++)
if (MyManager.varmap.dynvalue[i] != NULL) {
free(MyManager.varmap.dynvalue[i]);
}
free(MyManager.varmap.dynvalue);
}
for (i = 0; i < MyManager.varmap.varcnt; i++) for (i = 0; i < MyManager.varmap.varcnt; i++)
free(MyManager.varmap.vars[i]); free(MyManager.varmap.vars[i]);
free(MyManager.varmap.vars); free(MyManager.varmap.vars);
@ -386,12 +387,12 @@ void printhelp(int argc, char **arg) {
fprintf(stderr, "Optional parameters:\n"); fprintf(stderr, "Optional parameters:\n");
fprintf(stderr, "\t-sd [filename]\t->\tfilename to save generated BDD in node dump format (fast loading, traverse valid only)\n"); fprintf(stderr, "\t-sd [filename]\t->\tfilename to save generated BDD in node dump format (fast loading, traverse valid only)\n");
fprintf(stderr, "\t-e [filename]\t->\tfilename to export generated BDD in dot format\n"); fprintf(stderr, "\t-e [filename]\t->\tfilename to export generated BDD in dot format\n");
fprintf(stderr, "\t-m [method]\t->\tthe calculation method to be used: none(default), [p]robability, [g]radient, [o]nline\n"); fprintf(stderr, "\t-m [method]\t->\tthe calculation method to be used: none(default), [p]robability, [g]radient, [l]ine search, [o]nline\n");
fprintf(stderr, "\t-id [queryid]\t->\tthe queries identity name (used by gradient) default: %s\n", arg[0]); fprintf(stderr, "\t-id [queryid]\t->\tthe queries identity name (used by gradient) default: %s\n", arg[0]);
fprintf(stderr, "\t-sl [double]\t->\tthe sigmoid slope (used by gradient) default: 1.0\n"); fprintf(stderr, "\t-sl [double]\t->\tthe sigmoid slope (used by gradient) default: 1.0\n");
fprintf(stderr, "Extra parameters:\n"); fprintf(stderr, "Extra parameters:\n");
fprintf(stderr, "\t-t [seconds]\t->\tthe seconds (int) for BDD generation timeout default 0 = no timeout\n"); fprintf(stderr, "\t-t [seconds]\t->\tthe seconds (int) for BDD generation timeout default 0 = no timeout\n");
fprintf(stderr, "\t-pid [pid]\t->\ta process id (int) to check for termination default 0 = no process to check works only under POSIX OS\n"); fprintf(stderr, "\t-pid [pid]\t->\ta process id (int) to check for termination default 0 = no process to check\n");
fprintf(stderr, "\t-bs [bytes]\t->\tthe bytes (int) to use as a maximum buffer size to read files default 0 = no max\n"); fprintf(stderr, "\t-bs [bytes]\t->\tthe bytes (int) to use as a maximum buffer size to read files default 0 = no max\n");
fprintf(stderr, "\t-d\t\t->\tRun in debug mode (gives extra messages in stderr)\n"); fprintf(stderr, "\t-d\t\t->\tRun in debug mode (gives extra messages in stderr)\n");
fprintf(stderr, "\t-h\t\t->\tHelp (displays this message)\n\n"); fprintf(stderr, "\t-h\t\t->\tHelp (displays this message)\n\n");
@ -580,7 +581,7 @@ void myexpand(extmanager MyManager, DdNode *Current) {
} }
} }
/* Angelikas Algorithm */ /* Angelicas Algorithm */
double CalcProbability(extmanager MyManager, DdNode *Current) { double CalcProbability(extmanager MyManager, DdNode *Current) {
DdNode *h, *l; DdNode *h, *l;

View File

@ -184,49 +184,55 @@ DdNode* LowNodeOf(DdManager *manager, DdNode *node) {
DdNode* D_BDDAnd(DdManager *manager, DdNode *bdd1, DdNode *bdd2) { DdNode* D_BDDAnd(DdManager *manager, DdNode *bdd1, DdNode *bdd2) {
DdNode *tmp; DdNode *tmp;
Cudd_Ref(bdd1);
tmp = Cudd_bddAnd(manager, bdd1, bdd2); tmp = Cudd_bddAnd(manager, bdd1, bdd2);
Cudd_Ref(tmp); Cudd_Ref(tmp);
Cudd_RecursiveDeref(manager, bdd2); //Cudd_RecursiveDeref(manager, bdd2);
return tmp; return tmp;
} }
DdNode* D_BDDNand(DdManager *manager, DdNode *bdd1, DdNode *bdd2) { DdNode* D_BDDNand(DdManager *manager, DdNode *bdd1, DdNode *bdd2) {
DdNode *tmp; DdNode *tmp;
Cudd_Ref(bdd1);
tmp = Cudd_bddNand(manager, bdd1, bdd2); tmp = Cudd_bddNand(manager, bdd1, bdd2);
Cudd_Ref(tmp); Cudd_Ref(tmp);
Cudd_RecursiveDeref(manager, bdd2); //Cudd_RecursiveDeref(manager, bdd2);
return tmp; return tmp;
} }
DdNode* D_BDDOr(DdManager *manager, DdNode *bdd1, DdNode *bdd2) { DdNode* D_BDDOr(DdManager *manager, DdNode *bdd1, DdNode *bdd2) {
DdNode *tmp; DdNode *tmp;
Cudd_Ref(bdd1);
tmp = Cudd_bddOr(manager, bdd1, bdd2); tmp = Cudd_bddOr(manager, bdd1, bdd2);
Cudd_Ref(tmp); Cudd_Ref(tmp);
Cudd_RecursiveDeref(manager, bdd2); //Cudd_RecursiveDeref(manager, bdd2);
return tmp; return tmp;
} }
DdNode* D_BDDNor(DdManager *manager, DdNode *bdd1, DdNode *bdd2) { DdNode* D_BDDNor(DdManager *manager, DdNode *bdd1, DdNode *bdd2) {
DdNode *tmp; DdNode *tmp;
Cudd_Ref(bdd1);
tmp = Cudd_bddNor(manager, bdd1, bdd2); tmp = Cudd_bddNor(manager, bdd1, bdd2);
Cudd_Ref(tmp); Cudd_Ref(tmp);
Cudd_RecursiveDeref(manager, bdd2); //Cudd_RecursiveDeref(manager, bdd2);
return tmp; return tmp;
} }
DdNode* D_BDDXor(DdManager *manager, DdNode *bdd1, DdNode *bdd2) { DdNode* D_BDDXor(DdManager *manager, DdNode *bdd1, DdNode *bdd2) {
DdNode *tmp; DdNode *tmp;
Cudd_Ref(bdd1);
tmp = Cudd_bddXor(manager, bdd1, bdd2); tmp = Cudd_bddXor(manager, bdd1, bdd2);
Cudd_Ref(tmp); Cudd_Ref(tmp);
Cudd_RecursiveDeref(manager, bdd2); //Cudd_RecursiveDeref(manager, bdd2);
return tmp; return tmp;
} }
DdNode* D_BDDXnor(DdManager *manager, DdNode *bdd1, DdNode *bdd2) { DdNode* D_BDDXnor(DdManager *manager, DdNode *bdd1, DdNode *bdd2) {
DdNode *tmp; DdNode *tmp;
Cudd_Ref(bdd1);
tmp = Cudd_bddXnor(manager, bdd1, bdd2); tmp = Cudd_bddXnor(manager, bdd1, bdd2);
Cudd_Ref(tmp); Cudd_Ref(tmp);
Cudd_RecursiveDeref(manager, bdd2); //Cudd_RecursiveDeref(manager, bdd2);
return tmp; return tmp;
} }
@ -541,7 +547,7 @@ int LoadVariableData(namedvars varmap, char *filename) {
int icur = 0, maxbufsize = 10, hasvar = 0, index = -1, idat = 0, ivalue = 0; int icur = 0, maxbufsize = 10, hasvar = 0, index = -1, idat = 0, ivalue = 0;
dynvalue = NULL; dynvalue = NULL;
if ((data = fopen(filename, "r")) == NULL) { if ((data = fopen(filename, "r")) == NULL) {
perror("fopen"); perror(filename);
return -1; return -1;
} }
dataread = (char *) malloc(sizeof(char) * maxbufsize); dataread = (char *) malloc(sizeof(char) * maxbufsize);
@ -716,7 +722,7 @@ namedvars InitNamedVars(int varcnt, int varstart) {
temp.loaded = (int *) malloc(sizeof(int) * varcnt); temp.loaded = (int *) malloc(sizeof(int) * varcnt);
temp.dvalue = (double *) malloc(sizeof(double) * varcnt); temp.dvalue = (double *) malloc(sizeof(double) * varcnt);
temp.ivalue = (int *) malloc(sizeof(int) * varcnt); temp.ivalue = (int *) malloc(sizeof(int) * varcnt);
temp.dynvalue = (void **) malloc(sizeof(int) * varcnt); temp.dynvalue = (void **) malloc(sizeof(void *) * varcnt);
for (i = 0; i < varcnt; i++) { for (i = 0; i < varcnt; i++) {
temp.vars[i] = NULL; temp.vars[i] = NULL;
temp.loaded[i] = 0; temp.loaded[i] = 0;
@ -733,7 +739,7 @@ void EnlargeNamedVars(namedvars *varmap, int newvarcnt) {
varmap->loaded = (int *) realloc(varmap->loaded, sizeof(int) * newvarcnt); varmap->loaded = (int *) realloc(varmap->loaded, sizeof(int) * newvarcnt);
varmap->dvalue = (double *) realloc(varmap->dvalue, sizeof(double) * newvarcnt); varmap->dvalue = (double *) realloc(varmap->dvalue, sizeof(double) * newvarcnt);
varmap->ivalue = (int *) realloc(varmap->ivalue, sizeof(int) * newvarcnt); varmap->ivalue = (int *) realloc(varmap->ivalue, sizeof(int) * newvarcnt);
varmap->dynvalue = (void **) realloc(varmap->dynvalue, sizeof(int) * newvarcnt); varmap->dynvalue = (void **) realloc(varmap->dynvalue, sizeof(void *) * newvarcnt);
for (i = varmap->varcnt; i < newvarcnt; i++) { for (i = varmap->varcnt; i < newvarcnt; i++) {
varmap->vars[i] = NULL; varmap->vars[i] = NULL;
varmap->loaded[i] = 0; varmap->loaded[i] = 0;
@ -1483,7 +1489,7 @@ int GetParam(char *inputline, int iParam) {
void onlinetraverse(DdManager *manager, namedvars varmap, hisqueue *HisQueue, DdNode *bdd) { void onlinetraverse(DdManager *manager, namedvars varmap, hisqueue *HisQueue, DdNode *bdd) {
char buf, *inputline; char buf, *inputline;
int icur, maxlinesize, iline, index, iloop, ivalue, iQsize, i, inQ; int icur, maxlinesize, iline, index, iloop, ivalue, iQsize, i, inQ, iRoot;
double dvalue; double dvalue;
DdNode **Q, **Q2, *h_node, *l_node, *curnode; DdNode **Q, **Q2, *h_node, *l_node, *curnode;
hisqueue *his; hisqueue *his;
@ -1495,6 +1501,7 @@ void onlinetraverse(DdManager *manager, namedvars varmap, hisqueue *HisQueue, Dd
inputline = (char *) malloc(sizeof(char) * maxlinesize); inputline = (char *) malloc(sizeof(char) * maxlinesize);
curnode = bdd; curnode = bdd;
iQsize = 0; iQsize = 0;
iRoot = 1;
Q = (DdNode **) malloc(sizeof(DdNode *) * iQsize); Q = (DdNode **) malloc(sizeof(DdNode *) * iQsize);
Q2 = NULL; Q2 = NULL;
his = InitHistory(varmap.varcnt); his = InitHistory(varmap.varcnt);
@ -1505,11 +1512,17 @@ void onlinetraverse(DdManager *manager, namedvars varmap, hisqueue *HisQueue, Dd
if ((icur > 0) && (inputline[0] == '@') && (inputline[2] == ',' || inputline[2] == '\0')) { if ((icur > 0) && (inputline[0] == '@') && (inputline[2] == ',' || inputline[2] == '\0')) {
switch(inputline[1]) { switch(inputline[1]) {
case 'c': case 'c':
printf("bdd_temp_value('%s', %i).\n", GetNodeVarNameDisp(manager, varmap, curnode), iQsize); if (iRoot) {
iRoot = 0;
printf("bdd_temp_value('%s', %i).\n", GetNodeVarNameDisp(manager, varmap, curnode), 1);
} else {
printf("bdd_temp_value('%s', %i).\n", GetNodeVarNameDisp(manager, varmap, curnode), iQsize);
}
fflush(stdout);
break; break;
case 'n': case 'n':
if (curnode != HIGH(manager) && curnode != LOW(manager) && (hnode = GetNode(his, varmap.varstart, curnode)) == NULL) { if (curnode != HIGH(manager) && curnode != LOW(manager) && (hnode = GetNode(his, varmap.varstart, curnode)) == NULL) {
AddNode(his, varmap.varstart, curnode, 0.0, 0, NULL); //AddNode(his, varmap.varstart, curnode, 0.0, 0, NULL);
l_node = LowNodeOf(manager, curnode); l_node = LowNodeOf(manager, curnode);
h_node = HighNodeOf(manager, curnode); h_node = HighNodeOf(manager, curnode);
inQ = 0; inQ = 0;
@ -1519,6 +1532,7 @@ void onlinetraverse(DdManager *manager, namedvars varmap, hisqueue *HisQueue, Dd
if (inQ & 2 == 0) inQ = inQ + 2 * (GetNode(his, varmap.varstart, h_node) != NULL); if (inQ & 2 == 0) inQ = inQ + 2 * (GetNode(his, varmap.varstart, h_node) != NULL);
if (inQ & 1 == 1) inQ = inQ - (l_node == HIGH(manager) || l_node == LOW(manager)); if (inQ & 1 == 1) inQ = inQ - (l_node == HIGH(manager) || l_node == LOW(manager));
if (inQ & 2 == 2) inQ = inQ - 2 * (h_node == HIGH(manager) || h_node == LOW(manager)); if (inQ & 2 == 2) inQ = inQ - 2 * (h_node == HIGH(manager) || h_node == LOW(manager));
inQ = 0;
switch(inQ) { switch(inQ) {
case 0: case 0:
iQsize += 2; iQsize += 2;
@ -1567,14 +1581,17 @@ void onlinetraverse(DdManager *manager, namedvars varmap, hisqueue *HisQueue, Dd
break; break;
case 'h': case 'h':
printf("bdd_temp_value('%s').\n", GetNodeVarNameDisp(manager, varmap, HighNodeOf(manager, curnode))); printf("bdd_temp_value('%s').\n", GetNodeVarNameDisp(manager, varmap, HighNodeOf(manager, curnode)));
fflush(stdout);
break; break;
case 'l': case 'l':
printf("bdd_temp_value('%s').\n", GetNodeVarNameDisp(manager, varmap, LowNodeOf(manager, curnode))); printf("bdd_temp_value('%s').\n", GetNodeVarNameDisp(manager, varmap, LowNodeOf(manager, curnode)));
fflush(stdout);
break; break;
case 'v': case 'v':
index = GetNamedVarIndex(varmap, inputline + 3); index = GetNamedVarIndex(varmap, inputline + 3);
if (index >= 0) { if (index >= 0) {
fprintf(stdout, "bdd_temp_value([%f,%i,%s]).\n", varmap.dvalue[index], varmap.ivalue[index], (char *) varmap.dynvalue[index]); printf("bdd_temp_value([%f,%i,%s]).\n", varmap.dvalue[index], varmap.ivalue[index], (char *) varmap.dynvalue[index]);
fflush(stdout);
} else { } else {
fprintf(stderr, "Error: Could not find variable: %s, Correct syntax @v,[variable name].\n", inputline + 3); fprintf(stderr, "Error: Could not find variable: %s, Correct syntax @v,[variable name].\n", inputline + 3);
free(Q); free(Q);

View File

@ -152,25 +152,26 @@
#include "cuddInt.h" #include "cuddInt.h"
#include "general.h" #include "general.h"
#define IsHigh(manager, node) HIGH(manager) == node #define IsHigh(manager, node) HIGH(manager) == node
#define IsLow(manager, node) LOW(manager) == node #define IsLow(manager, node) LOW(manager) == node
#define HIGH(manager) Cudd_ReadOne(manager) #define HIGH(manager) Cudd_ReadOne(manager)
#define LOW(manager) Cudd_Not(Cudd_ReadOne(manager)) #define LOW(manager) Cudd_Not(Cudd_ReadOne(manager))
#define NOT(node) Cudd_Not(node) #define NOT(node) Cudd_Not(node)
#define GetIndex(node) Cudd_NodeReadIndex(node) #define GetIndex(node) Cudd_NodeReadIndex(node)
#define GetVar(manager, index) Cudd_bddIthVar(manager, index) #define GetOrder(manager, node) Cudd_ReadPerm(manager, GetIndex(node))
#define NewVar(manager) Cudd_bddNewVar(manager) #define GetVar(manager, index) Cudd_bddIthVar(manager, index)
#define KillBDD(manager) Cudd_Quit(manager) #define NewVar(manager) Cudd_bddNewVar(manager)
#define GetVarCount(manager) Cudd_ReadSize(manager) #define KillBDD(manager) Cudd_Quit(manager)
#define DEBUGON _debug = 1 #define GetVarCount(manager) Cudd_ReadSize(manager)
#define DEBUGOFF _debug = 0 #define DEBUGON _debug = 1
#define RAPIDLOADON _RapidLoad = 1 #define DEBUGOFF _debug = 0
#define RAPIDLOADOFF _RapidLoad = 0 #define RAPIDLOADON _RapidLoad = 1
#define SETMAXBUFSIZE(size) _maxbufsize = size #define RAPIDLOADOFF _RapidLoad = 0
#define BDDFILE_ERROR -1 #define SETMAXBUFSIZE(size) _maxbufsize = size
#define BDDFILE_OTHER 0 #define BDDFILE_ERROR -1
#define BDDFILE_SCRIPT 1 #define BDDFILE_OTHER 0
#define BDDFILE_NODEDUMP 2 #define BDDFILE_SCRIPT 1
#define BDDFILE_NODEDUMP 2
extern int _RapidLoad; extern int _RapidLoad;
extern int _debug; extern int _debug;