Select Git revision
-
Henrik (Grubba) Grubbström authored
The PROGRAM_CLEAR_STORAGE flag now sets the new object flag OBJECT_CLEAR_ON_EXIT (analogous to STRING_CLEAR_ON_EXIT) at clone time.
Henrik (Grubba) Grubbström authoredThe PROGRAM_CLEAR_STORAGE flag now sets the new object flag OBJECT_CLEAR_ON_EXIT (analogous to STRING_CLEAR_ON_EXIT) at clone time.
module.c 1.22 KiB
/*\
||| This file a part of Pike, and is copyright by Fredrik Hubinette
||| Pike is distributed as GPL (General Public License)
||| See the files COPYING and DISCLAIMER for more information.
\*/
#include "global.h"
#include "module.h"
#include "macros.h"
#include "error.h"
#include "builtin_functions.h"
#include "main.h"
#include "svalue.h"
#include "interpret.h"
#include "stralloc.h"
#include "object.h"
#include "mapping.h"
#include "modules/modlist_headers.h"
typedef void (*modfun)(void);
struct static_module
{
char *name;
modfun init;
modfun exit;
};
static struct static_module module_list[] = {
{ "Builtin", init_main, exit_main }
#include "modules/modlist.h"
};
void init_modules(void)
{
unsigned int e;
struct mapping *m = allocate_mapping(10);
m->refs++;
push_text("_static_modules");
push_mapping(m);
f_add_constant(2);
for(e=0;e<NELEM(module_list);e++)
{
struct program *p;
struct pike_string *s;
start_new_program();
module_list[e].init();
p=end_program();
push_text(module_list[e].name);
push_program(p);
mapping_insert(m, sp-2, sp-1);
pop_n_elems(2);
}
}
void exit_modules(void)
{
int e;
for(e=NELEM(module_list)-1;e>=0;e--)
module_list[e].exit();
}