removed most global functions from factor.cpp

Phil Dawes 2009-08-24 18:34:30 +01:00
parent 38eb7a23f1
commit 28665b5287
2 changed files with 24 additions and 102 deletions

View File

@ -3,7 +3,7 @@
namespace factor namespace factor
{ {
factorvm *vm = new factorvm; factorvm *vm;
void factorvm::default_parameters(vm_parameters *p) void factorvm::default_parameters(vm_parameters *p)
{ {
@ -45,11 +45,6 @@ void factorvm::default_parameters(vm_parameters *p)
p->stack_traces = true; p->stack_traces = true;
} }
VM_C_API void default_parameters(vm_parameters *p)
{
return vm->default_parameters(p);
}
bool factorvm::factor_arg(const vm_char* str, const vm_char* arg, cell* value) bool factorvm::factor_arg(const vm_char* str, const vm_char* arg, cell* value)
{ {
int val; int val;
@ -62,11 +57,6 @@ bool factorvm::factor_arg(const vm_char* str, const vm_char* arg, cell* value)
return false; return false;
} }
bool factor_arg(const vm_char* str, const vm_char* arg, cell* value)
{
return vm->factor_arg(str,arg,value);
}
void factorvm::init_parameters_from_args(vm_parameters *p, int argc, vm_char **argv) void factorvm::init_parameters_from_args(vm_parameters *p, int argc, vm_char **argv)
{ {
default_parameters(p); default_parameters(p);
@ -92,11 +82,6 @@ void factorvm::init_parameters_from_args(vm_parameters *p, int argc, vm_char **a
} }
} }
VM_C_API void init_parameters_from_args(vm_parameters *p, int argc, vm_char **argv)
{
return vm->init_parameters_from_args(p,argc,argv);
}
/* Do some initialization that we do once only */ /* Do some initialization that we do once only */
void factorvm::do_stage1_init() void factorvm::do_stage1_init()
{ {
@ -110,11 +95,6 @@ void factorvm::do_stage1_init()
fflush(stdout); fflush(stdout);
} }
void do_stage1_init()
{
return vm->do_stage1_init();
}
void factorvm::init_factor(vm_parameters *p) void factorvm::init_factor(vm_parameters *p)
{ {
/* Kilobytes */ /* Kilobytes */
@ -171,11 +151,6 @@ void factorvm::init_factor(vm_parameters *p)
} }
} }
VM_C_API void init_factor(vm_parameters *p)
{
return vm->init_factor(p);
}
/* May allocate memory */ /* May allocate memory */
void factorvm::pass_args_to_factor(int argc, vm_char **argv) void factorvm::pass_args_to_factor(int argc, vm_char **argv)
{ {
@ -189,11 +164,6 @@ void factorvm::pass_args_to_factor(int argc, vm_char **argv)
userenv[ARGS_ENV] = args.elements.value(); userenv[ARGS_ENV] = args.elements.value();
} }
VM_C_API void pass_args_to_factor(int argc, vm_char **argv)
{
return vm->pass_args_to_factor(argc,argv);
}
void factorvm::start_factor(vm_parameters *p) void factorvm::start_factor(vm_parameters *p)
{ {
if(p->fep) factorbug(); if(p->fep) factorbug();
@ -203,20 +173,28 @@ void factorvm::start_factor(vm_parameters *p)
unnest_stacks(); unnest_stacks();
} }
void start_factor(vm_parameters *p)
char *factorvm::factor_eval_string(char *string)
{ {
return vm->start_factor(p); char *(*callback)(char *) = (char *(*)(char *))alien_offset(userenv[EVAL_CALLBACK_ENV]);
return callback(string);
} }
void factorvm::start_embedded_factor(vm_parameters *p) void factorvm::factor_eval_free(char *result)
{ {
userenv[EMBEDDED_ENV] = T; free(result);
start_factor(p);
} }
VM_C_API void start_embedded_factor(vm_parameters *p) void factorvm::factor_yield()
{ {
return vm->start_embedded_factor(p); void (*callback)() = (void (*)())alien_offset(userenv[YIELD_CALLBACK_ENV]);
callback();
}
void factorvm::factor_sleep(long us)
{
void (*callback)(long) = (void (*)(long))alien_offset(userenv[SLEEP_CALLBACK_ENV]);
callback(us);
} }
void factorvm::start_standalone_factor(int argc, vm_char **argv) void factorvm::start_standalone_factor(int argc, vm_char **argv)
@ -229,54 +207,6 @@ void factorvm::start_standalone_factor(int argc, vm_char **argv)
start_factor(&p); start_factor(&p);
} }
VM_C_API void start_standalone_factor(int argc, vm_char **argv)
{
return vm->start_standalone_factor(argc,argv);
}
char *factorvm::factor_eval_string(char *string)
{
char *(*callback)(char *) = (char *(*)(char *))alien_offset(userenv[EVAL_CALLBACK_ENV]);
return callback(string);
}
VM_C_API char *factor_eval_string(char *string)
{
return vm->factor_eval_string(string);
}
void factorvm::factor_eval_free(char *result)
{
free(result);
}
VM_C_API void factor_eval_free(char *result)
{
return vm->factor_eval_free(result);
}
void factorvm::factor_yield()
{
void (*callback)() = (void (*)())alien_offset(userenv[YIELD_CALLBACK_ENV]);
callback();
}
VM_C_API void factor_yield()
{
return vm->factor_yield();
}
void factorvm::factor_sleep(long us)
{
void (*callback)(long) = (void (*)(long))alien_offset(userenv[SLEEP_CALLBACK_ENV]);
callback(us);
}
VM_C_API void factor_sleep(long us)
{
return vm->factor_sleep(us);
}
struct startargs { struct startargs {
int argc; int argc;
vm_char **argv; vm_char **argv;
@ -286,16 +216,18 @@ void* start_standalone_factor_thread(void *arg)
{ {
factorvm *newvm = new factorvm; factorvm *newvm = new factorvm;
startargs *args = (startargs*) arg; startargs *args = (startargs*) arg;
vm_parameters p; newvm->start_standalone_factor(args->argc, args->argv);
newvm->default_parameters(&p);
newvm->init_parameters_from_args(&p,args->argc, args->argv);
newvm->init_factor(&p);
newvm->pass_args_to_factor(args->argc,args->argv);
newvm->start_factor(&p);
return 0; return 0;
} }
VM_C_API void start_standalone_factor(int argc, vm_char **argv)
{
factorvm *newvm = new factorvm;
vm = newvm;
return newvm->start_standalone_factor(argc,argv);
}
VM_C_API void start_standalone_factor_in_new_thread(int argc, vm_char **argv) VM_C_API void start_standalone_factor_in_new_thread(int argc, vm_char **argv)
{ {
startargs *args = new startargs; // leaks startargs structure startargs *args = new startargs; // leaks startargs structure

View File

@ -1,17 +1,7 @@
namespace factor namespace factor
{ {
VM_C_API void default_parameters(vm_parameters *p);
VM_C_API void init_parameters_from_args(vm_parameters *p, int argc, vm_char **argv);
VM_C_API void init_factor(vm_parameters *p);
VM_C_API void pass_args_to_factor(int argc, vm_char **argv);
VM_C_API void start_embedded_factor(vm_parameters *p);
VM_C_API void start_standalone_factor(int argc, vm_char **argv); VM_C_API void start_standalone_factor(int argc, vm_char **argv);
VM_C_API void start_standalone_factor_in_new_thread(int argc, vm_char **argv); VM_C_API void start_standalone_factor_in_new_thread(int argc, vm_char **argv);
VM_C_API char *factor_eval_string(char *string);
VM_C_API void factor_eval_free(char *result);
VM_C_API void factor_yield();
VM_C_API void factor_sleep(long ms);
} }