Changeset: b0ac06eef614 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=b0ac06eef614
Modified Files:
monetdb5/mal/mal_prelude.c
Branch: Oct2020
Log Message:
Use an array of struct instead of a bunch of parallel arrays.
diffs (112 lines):
diff --git a/monetdb5/mal/mal_prelude.c b/monetdb5/mal/mal_prelude.c
--- a/monetdb5/mal/mal_prelude.c
+++ b/monetdb5/mal/mal_prelude.c
@@ -25,11 +25,13 @@
#define MAX_MAL_MODULES 128
static int mel_modules = 0;
-static str mel_module_name[MAX_MAL_MODULES] = {0};
-static mel_atom *mel_module_atoms[MAX_MAL_MODULES] = {0};
-static mel_func *mel_module_funcs[MAX_MAL_MODULES] = {0};
-static mel_init mel_module_inits[MAX_MAL_MODULES] = {0};
-static const char*mel_module_code[MAX_MAL_MODULES] = {0};
+static struct mel_module {
+ char *name;
+ mel_atom *atoms;
+ mel_func *funcs;
+ mel_init inits;
+ const char *code;
+} mel_module[MAX_MAL_MODULES];
int
mal_startup(void)
@@ -48,11 +50,11 @@ void
mal_module2(str name, mel_atom *atoms, mel_func *funcs, mel_init initfunc,
const char *code)
{
assert (mel_modules < MAX_MAL_MODULES);
- mel_module_name[mel_modules] = name;
- mel_module_atoms[mel_modules] = atoms;
- mel_module_funcs[mel_modules] = funcs;
- mel_module_inits[mel_modules] = initfunc;
- mel_module_code[mel_modules] = code;
+ mel_module[mel_modules].name = name;
+ mel_module[mel_modules].atoms = atoms;
+ mel_module[mel_modules].funcs = funcs;
+ mel_module[mel_modules].inits = initfunc;
+ mel_module[mel_modules].code = code;
mel_modules++;
}
@@ -60,11 +62,11 @@ void
mal_module(str name, mel_atom *atoms, mel_func *funcs)
{
assert (mel_modules < MAX_MAL_MODULES);
- mel_module_name[mel_modules] = name;
- mel_module_atoms[mel_modules] = atoms;
- mel_module_funcs[mel_modules] = funcs;
- mel_module_inits[mel_modules] = NULL;
- mel_module_code[mel_modules] = NULL;
+ mel_module[mel_modules].name = name;
+ mel_module[mel_modules].atoms = atoms;
+ mel_module[mel_modules].funcs = funcs;
+ mel_module[mel_modules].inits = NULL;
+ mel_module[mel_modules].code = NULL;
mel_modules++;
}
@@ -415,8 +417,8 @@ malPrelude(Client c, int listing, int em
(void) listing;
/* Add all atom definitions */
for(i = 0; i<mel_modules; i++) {
- if (mel_module_atoms[i]) {
- msg = addAtom(mel_module_atoms[i]);
+ if (mel_module[i].atoms) {
+ msg = addAtom(mel_module[i].atoms);
if (msg)
return msg;
}
@@ -424,32 +426,32 @@ malPrelude(Client c, int listing, int em
/* Add the signatures, where we now have access to all atoms */
for(i = 0; i<mel_modules; i++) {
- if (!malLibraryEnabled(mel_module_name[i]))
+ if (!malLibraryEnabled(mel_module[i].name))
continue;
- if (mel_module_funcs[i]) {
- msg = addFunctions(mel_module_funcs[i]);
- if (!msg && mel_module_code[i]) /* some modules may
also have some function definitions */
- msg = malIncludeString(c, mel_module_name[i],
(str)mel_module_code[i], listing, NULL);
+ if (mel_module[i].funcs) {
+ msg = addFunctions(mel_module[i].funcs);
+ if (!msg && mel_module[i].code) /* some modules may
also have some function definitions */
+ msg = malIncludeString(c, mel_module[i].name,
(str)mel_module[i].code, listing, NULL);
if (msg)
return msg;
/* skip sql should be last to startup and mapi in the
embedded version */
- if (strcmp(mel_module_name[i], "sql") == 0 || (embedded
&& strcmp(mel_module_name[i], "mapi") == 0))
+ if (strcmp(mel_module[i].name, "sql") == 0 || (embedded
&& strcmp(mel_module[i].name, "mapi") == 0))
continue;
- if (!mel_module_inits[i]) {
- msg = initModule(c, mel_module_name[i]);
+ if (!mel_module[i].inits) {
+ msg = initModule(c, mel_module[i].name);
if (msg)
return msg;
}
}
- if (mel_module_inits[i]) {
- msg = mel_module_inits[i]();
+ if (mel_module[i].inits) {
+ msg = mel_module[i].inits();
if (msg)
return msg;
/* skip sql should be last to startup and mapi in the
embedded version */
- if (strcmp(mel_module_name[i], "sql") == 0 || (embedded
&& strcmp(mel_module_name[i], "mapi") == 0))
+ if (strcmp(mel_module[i].name, "sql") == 0 || (embedded
&& strcmp(mel_module[i].name, "mapi") == 0))
continue;
- msg = initModule(c, mel_module_name[i]);
+ msg = initModule(c, mel_module[i].name);
if (msg)
return msg;
}
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list