[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Requiring module extensions
Quoting Robert John Andersen:
> name = scheme_intern_symbol( "my-mod" );
> module_env = scheme_primitive_module( name, env );
>
> prim = scheme_make_prim_w_arity( prim1, "prim1", 0, 0 );
> scheme_add_global( "prim1", prim, module );
------
>
> scheme_finish_primitive_module( module_env );
The problem may be simply the underlined `module', which should be
`module_env'. Or maybe that was just a typo in the e-mail message.
The code below (yours, with appropriate wrappers) worked for me when
compiled to "x.so":
> (load-extension "x.so")
> (require my-mod)
> prim1
#<primitive:prim1>
> (prim1)
hello
Does that much work for you, too?
Matthew
----------------------------------------
#include "escheme.h"
Scheme_Object *prim1 (int argc, Scheme_Object **argv)
{
return scheme_intern_symbol("hello");
}
Scheme_Object *scheme_reload(Scheme_Env *env)
{
Scheme_Object *name, *prim;
Scheme_Env *module_env;
name = scheme_intern_symbol( "my-mod" );
module_env = scheme_primitive_module( name, env );
prim = scheme_make_prim_w_arity( prim1, "prim1", 0, 0 );
scheme_add_global( "prim1", prim, module_env );
scheme_finish_primitive_module( module_env );
return scheme_void;
}
Scheme_Object *scheme_initialize(Scheme_Env *env)
{
return scheme_reload(env);
}