unofficial mirror of guile-user@gnu.org 
 help / color / mirror / Atom feed
From: "Ludovic Courtès" <ludovic.courtes@laas.fr>
Cc: guile-user@gnu.org, guile-sources@gnu.org
Subject: Re: cmod-play 1 available + modsup.h additions
Date: Fri, 14 Nov 2003 09:26:58 +0100	[thread overview]
Message-ID: <20031114082656.GE14359@powergnu.laas.fr> (raw)
In-Reply-To: <E1AKPRR-00036l-00@surf.glug.org>

Hi,

The naming style of the macros in modsup.h doesn't seem to be very
consistent with the rest of the API.  In particular, macros are not
defined in the SCM_ namespace and their name are pretty concise
(abbreviations, no underscores in between words, etc.).  Am I missing
something?

Also, will this be part of Guile 1.6.x too?

Thanks,
Ludovic.

Yesterday, 10 hours, 25 minutes, 3 seconds ago, Thien-Thi Nguyen wrote:
> folks,
> 
> libtool modules cannot depend on other libtool modules (according to the
> documentation on libltdl), so we can't co-opt that strategy if we want
> to design compiled modules that depend on other modules.  sure, we can
> throw up our hands and relegate everything to the system linker/loader,
> but why pass up a thorny question for others to play with?  i mean, to
> do system programming you need to grab control of the system, and to do
> module system programming you need to grab control of the module system.
> 
> so, this message actually presents two pieces of source code: (1) a
> pointer to the documented exploratory process:
> 
>   http://www.glug.org/people/ttn/software/cmod-play/
> 
> and (2) a request for comments on the tentative conclusions of the above
> exploration, as expressed by the additional <guile/modsup.h> interface
> elements excerpted below.  if All Goes Well, they will appear in guile
> 1.4.1.97.
> 
> in other news, i will be using this new support immediately for
> guile-sdl compiled modules (the motivation for all this, you see), so to
> spare everyone the agony guile-sdl will not be released until 1.4.1.97
> is out.  (however, everything works swimmingly from cvs, if you are
> feeling adventurous. :-)
> 
> thi
> 
> _____________________________________________________________
> /*:Return the @var{obj} given, but marked as "permanent".
>    This means that it can never be garbage collected.
> */
> #define GHSTONED(obj) \
>   scm_permanent_object (obj)
> 
> /*:Declare and later arrange for @var{cvar} (type SCM) to hold a resolved
>    module object for @var{fullname}, a C string such as "(ice-9 q)".  The
>    string is saved in a C variable named by prefixing "s_" to @var{cvar}.
>    You must use @var{cvar} as the second arg to @code{MUSEMODULEVAR}.
> */
> #define MUSEMODULE(cvar,fullname) \
> SCM_SNARF_HERE (static char * s_ ## cvar = fullname; static SCM cvar) \
> SCM_SNARF_INIT (cvar = GHSTONED (gh_resolve_module (s_ ## cvar));)
> 
> /*:Declare and later arrange for @var{cvar} (type SCM) to have the
>    same value as the imported module @var{m_cvar} variable @var{s_name}.
>    @var{m_cvar} is the SCM object declared with @code{MUSEMODULE}, and
>    @var{s_name} is a string such as "q-empty?".  If the imported value
>    is a procedure, you can use @code{gh_apply} or @code{gh_call0} through
>    @code{gh_call3} on it.
> */
> #define MUSEMODULEVAR(cvar,m_cvar,s_name) \
> SCM_SNARF_HERE (static SCM cvar) \
> SCM_SNARF_INIT (cvar = GHSTONED (gh_module_lookup (m_cvar, s_name));)
> 
> /*:Declare and define a procedure @var{cvar} that takes 0 (zero) args,
>    which returns the result of calling @code{gh_call0} on @var{proc_cvar}.
>    @var{proc_cvar} is the SCM object declared with @code{MUSEMODULEVAR}.
> */
> #define MUSEMODULEPROC0(cvar,proc_cvar) \
>   static SCM cvar (void) \
>   { return gh_call0 (proc_cvar); }
> 
> /*:Declare and define a procedure @var{cvar} that takes 1 (one) SCM arg,
>    which returns the result of calling @code{gh_call1} on @var{proc_cvar}
>    and this arg.  @var{proc_var} is the SCM object declared with
>    @{MUSEMODULEVAR}.
> */
> #define MUSEMODULEPROC1(cvar,proc_cvar) \
>   static SCM cvar (SCM a1) \
>   { return gh_call1 (proc_cvar, a1); }
> 
> /*:Declare and define a procedure @var{cvar} that takes 2 (two) SCM args,
>    which returns the result of calling @code{gh_call2} on @var{proc_cvar}
>    and the args.  @var{proc_var} is the SCM object declared with
>    @{MUSEMODULEVAR}.
> */
> #define MUSEMODULEPROC2(cvar,proc_cvar) \
>   static SCM cvar (SCM a1, SCM a2) \
>   { return gh_call2 (proc_cvar, a1, a2); }
> 
> /*:Declare and define a procedure @var{cvar} that takes 3 (three) SCM args,
>    which returns the result of calling @code{gh_call3} on @var{proc_cvar}
>    and the args.  @var{proc_var} is the SCM object declared with
>    @{MUSEMODULEVAR}.
> */
> #define MUSEMODULEPROC3(cvar,proc_cvar) \
>   static SCM cvar (SCM a1, SCM a2, SCM a3) \
>   { return gh_call3 (proc_cvar, a1, a2, a3); }
> 
> [modsup.h excerpt ends here]
> 
> 
> _______________________________________________
> Guile-user mailing list
> Guile-user@gnu.org
> http://mail.gnu.org/mailman/listinfo/guile-user


_______________________________________________
Guile-user mailing list
Guile-user@gnu.org
http://mail.gnu.org/mailman/listinfo/guile-user


  reply	other threads:[~2003-11-14  8:26 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-11-13 21:55 cmod-play 1 available + modsup.h additions Thien-Thi Nguyen
2003-11-14  8:26 ` Ludovic Courtès [this message]
2003-11-14 13:10   ` Thien-Thi Nguyen
2003-11-14 13:37     ` Ludovic Courtès
2003-11-14 17:38       ` Thien-Thi Nguyen
2003-11-14 14:29   ` Marius Vollmer
2003-11-14 14:17 ` Marius Vollmer
2003-11-14 15:28   ` Does anyone have a better scm_string_hash ? Roland Orre
2003-11-14 15:51     ` Ludovic Courtès
2003-11-17  8:33       ` Roland Orre
2003-11-17 13:01         ` Ludovic Courtès
2003-11-17 15:42         ` Marius Vollmer
2003-11-17 16:02           ` Marius Vollmer
2003-11-17 16:29             ` Marius Vollmer
2003-11-17 16:48               ` Allister MacLeod
2003-11-17 17:57                 ` Marius Vollmer
2003-11-17 19:17                   ` OT: x86 assembly timings/size (was Re: Does anyone have a better scm_string_hash ?) Allister MacLeod
2003-11-17 21:27                     ` OT: x86 assembly timings/size Marius Vollmer
2003-11-19  9:04             ` Does anyone have a better scm_string_hash ? Ludovic Courtès
2003-11-19 15:02               ` Marius Vollmer
2003-11-14 17:40   ` cmod-play 1 available + modsup.h additions Thien-Thi Nguyen

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/guile/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20031114082656.GE14359@powergnu.laas.fr \
    --to=ludovic.courtes@laas.fr \
    --cc=guile-sources@gnu.org \
    --cc=guile-user@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).