Hi Ludo,

On 01/04/12 13:17, Ludovic Courtès wrote:
If the users files are evaluated rather than compiled/loaded, this is
not a problem:

I do *all* guile processing via the ag_scm_c_eval_string_from_file_line
function.  I suck up a string from my input file, determine that it
needs guile processing and invoke that function.  It has this profile:

SCM
ag_scm_c_eval_string_from_file_line(
    char const * pzExpr, char const * pzFile, int line);

#define SCM_EVAL_CONST(_s) \
    do { static file_line_t const fl = { __LINE__ - 1, __FILE__, _s }; \
        pzLastScheme = fl.text; \
        ag_scm_c_eval_string_from_file_line(fl.text, fl.file, fl.line); \
    } while (0)

and I *can* redefine define because I start Guile with my own
initialization:

#define SCHEME_INIT_FILE "directive.h"
static const int  schemeLine = __LINE__+2;
static char const zSchemeInit[3846] = // this is generated code...
"(use-modules (ice-9 common-list))\n\
..................................";

    pzLastScheme = zSchemeInit;
    ag_scm_c_eval_string_from_file_line(
        zSchemeInit, SCHEME_INIT_FILE, schemeLine);

    SCM_EVAL_CONST("(add-hook! before-error-hook error-source-line)\n"
                   "(use-modules (ice-9 stack-catch))");

Could you check whether this is the case?

So it is the case.  My processing consists of slicing up the input
into a bunch of slivers based on markers.  I look at each sliver to
see how to process it.  Some are emitted directly, others trigger
internal mechanisms, a few are handed off to a separate server shell
process and finally, if the text starts with an open parenthesis
or a semi-colon (Guile comment marker), then Guile gets it via that call.

Thanks -Bruce

Reply via email to