From mboxrd@z Thu Jan 1 00:00:00 1970 Path: main.gmane.org!not-for-mail From: "Peter S. Christopher" Newsgroups: gmane.lisp.guile.user Subject: Re: primitive inclusion Date: Sat, 26 Jul 2003 13:03:17 -0500 (CDT) Sender: guile-user-bounces+guile-user=m.gmane.org@gnu.org Message-ID: References: NNTP-Posting-Host: main.gmane.org Mime-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII X-Trace: main.gmane.org 1059242965 2966 80.91.224.249 (26 Jul 2003 18:09:25 GMT) X-Complaints-To: usenet@main.gmane.org NNTP-Posting-Date: Sat, 26 Jul 2003 18:09:25 +0000 (UTC) Cc: guile-user@gnu.org Original-X-From: guile-user-bounces+guile-user=m.gmane.org@gnu.org Sat Jul 26 20:09:21 2003 Return-path: Original-Received: from monty-python.gnu.org ([199.232.76.173]) by main.gmane.org with esmtp (Exim 3.35 #1 (Debian)) id 19gTTs-0000lY-00 for ; Sat, 26 Jul 2003 20:09:20 +0200 Original-Received: from localhost ([127.0.0.1] helo=monty-python.gnu.org) by monty-python.gnu.org with esmtp (Exim 4.20) id 19gTR7-0001mG-Vn for guile-user@m.gmane.org; Sat, 26 Jul 2003 14:06:29 -0400 Original-Received: from list by monty-python.gnu.org with tmda-scanned (Exim 4.20) id 19gTPr-0001Gv-JO for guile-user@gnu.org; Sat, 26 Jul 2003 14:05:11 -0400 Original-Received: from mail by monty-python.gnu.org with spam-scanned (Exim 4.20) id 19gTPd-00014D-Od for guile-user@gnu.org; Sat, 26 Jul 2003 14:05:00 -0400 Original-Received: from midway.uchicago.edu ([128.135.12.12]) by monty-python.gnu.org with esmtp (Exim 4.20) id 19gTO2-0008TP-UI for guile-user@gnu.org; Sat, 26 Jul 2003 14:03:19 -0400 Original-Received: from harper.uchicago.edu (harper.uchicago.edu [128.135.12.7]) by midway.uchicago.edu (8.12.9/8.12.9) with ESMTP id h6QI3HcH006327; Sat, 26 Jul 2003 13:03:17 -0500 (CDT) Original-Received: from localhost (peterc@localhost) by harper.uchicago.edu (8.12.9/8.12.9) with ESMTP id h6QI3Hr9015251; Sat, 26 Jul 2003 13:03:17 -0500 (CDT) X-Authentication-Warning: harper.uchicago.edu: peterc owned process doing -bs X-Sender: peterc@harper.uchicago.edu Original-To: Steve Tell In-Reply-To: X-BeenThere: guile-user@gnu.org X-Mailman-Version: 2.1.2 Precedence: list List-Id: General Guile related discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guile-user-bounces+guile-user=m.gmane.org@gnu.org Xref: main.gmane.org gmane.lisp.guile.user:2107 X-Report-Spam: http://spam.gmane.org/gmane.lisp.guile.user:2107 Hi there, Thanks for the help Steve, worked like a charm. For the benefit of anyone who is interested: here is how one defines primitives in the (guile) module (rather than the (guile-user) module which seems to be standard). SCM slab_write_sloppy(); SCM slab_read_sloppy(); SCM map_globals(); SCM dvect_p(); void init_my_proc(void *data){ scm_c_define_gsubr("slab-write-sloppy", 5, 0 ,0, slab_write_sloppy); scm_c_define_gsubr("slab-read-sloppy", 4, 0 ,0, slab_read_sloppy); scm_c_define_gsubr("map-globals", 1, 0 ,0, map_globals); scm_c_define_gsubr("dvect?", 1, 0 ,0, dvect_p); return; } static void inner_main (void *closure, int argc, char **argv){ /*VARIABLES AND WHAT NO*/ // This call makes the "guile" module the current-module for the // duration of the call to init_my_proc scm_c_define_module("guile", init_my_proc, NULL); /*Etcetera*/ } Thanks again. Pete On Sat, 26 Jul 2003, Steve Tell wrote: > On Fri, 25 Jul 2003, Peter S. Christopher wrote: > > > Hi listers, > > > > I'm having a problem finding a primitive function in one of my > > modules. Here is the setup. I have a C program which (after > > booting guile) defines a routine a-la: > > > > scm_c_define_gsubr("dvect?", 1, 0 ,0, dvect_p); > > > > Then the program loads a file using > > > > scm_c_primitive_load("root.scm"); > > > > > > At the top of root.scm I include a module via: (use-modules (slab)) Now > > within the text of the slab.scm I expect to use dcect?. However, the guile > > cannot reference dvect? -- it can't find it. The problem is that dvect? is > > being put in the (guile-user) module. And the slab module can't see it. > > I've tried to (use-modules (guile-user)) and this seems to have no effect. > > > > Does anyone have any ideas how I can get it so that the slab module can > > see dvect? ? > > I had similar problems trying to make a program compatible with both > guile-1.5/1.6 and guile-1.4 - one of the differences between the two is > which module C primitives end up in vs. the default module that scheme > code runs in. > > I came up with this hack, placed immediately after initializing guile and > before defining primitives to make guile-1.6 behave enough like 1.4: > > #ifdef HAVE_SCM_C_READ_STRING > { SCM exp = scm_c_read_string("(define-module (guile))"); > scm_primitive_eval_x(exp); } > #endif > > While this works, making guile 1.6 behave like 1.4 isn't really the way to > go any longer. > > I see that the guile-1.6.4 reference manual has a nice section "Accessing > Modules from C." (thanks authors!) > > When writing a program for guile >= 1.6 only, it appears that one should > use scm_c_define_module() to place their C primitives into the desired > application-specfic module. > > Steve > > > > Thanks for any help, > > > > Pete > > > > _______________________________________________ > > Guile-user mailing list > > Guile-user@gnu.org > > http://mail.gnu.org/mailman/listinfo/guile-user > > > > -- > -- > Steve Tell tell@telltronics.org > > _______________________________________________ Guile-user mailing list Guile-user@gnu.org http://mail.gnu.org/mailman/listinfo/guile-user