Esempio n. 1
0
/* Implemented in Scheme */
static void write_walk(ScmObj obj, ScmPort *port)
{
    static ScmObj proc = SCM_UNDEFINED;
    SCM_ASSERT(port->writeState);
    ScmHashTable *ht = port->writeState->sharedTable;
    SCM_ASSERT(ht != NULL);
    SCM_BIND_PROC(proc, "%write-walk-rec", Scm_GaucheInternalModule());
    Scm_ApplyRec3(proc, obj, SCM_OBJ(port), SCM_OBJ(ht));
}
Esempio n. 2
0
ScmObj Scm_ComparatorHashFunction(ScmComparator *cmpr)
{
    if (SCM_FALSEP(cmpr->hashFn)) {
        static ScmObj p = SCM_UNDEFINED;
        SCM_BIND_PROC(p, "comparator-hash-function",
                      Scm_GaucheModule());
        return Scm_ApplyRec1(p, SCM_OBJ(cmpr)); /* this fills hashFn */
    } else {
        return cmpr->hashFn;
    }
}
Esempio n. 3
0
/* C-level accessors, that take care of on-demand filling of slots. */
ScmObj Scm_ComparatorComparisonProcedure(ScmComparator *cmpr)
{
    if (SCM_FALSEP(cmpr->compareFn)) {
        static ScmObj p = SCM_UNDEFINED;
        SCM_BIND_PROC(p, "comparator-comparison-procedure",
                      Scm_GaucheModule());
        return Scm_ApplyRec1(p, SCM_OBJ(cmpr)); /* this fills compareFn */
    } else {
        return cmpr->compareFn;
    }
}
Esempio n. 4
0
ScmObj Scm_ComparatorOrderingPredicate(ScmComparator *cmpr)
{
    if (SCM_FALSEP(cmpr->orderFn)) {
        static ScmObj p = SCM_UNDEFINED;
        SCM_BIND_PROC(p, "comparator-ordering-predicate",
                      Scm_GaucheModule());
        return Scm_ApplyRec1(p, SCM_OBJ(cmpr)); /* this fills orderFn */
    } else {
        return cmpr->orderFn;
    }
}
Esempio n. 5
0
File: main.c Progetto: leque/Gauche
void invoke_other_version(const char *version, int argc, char **argv)
{
    static ScmObj invoke_other_version = SCM_UNDEFINED;
    SCM_BIND_PROC(invoke_other_version, "%invoke-other-version",
                  Scm_GaucheInternalModule());
    ScmEvalPacket epkt;
    Scm_Apply(invoke_other_version,
              SCM_LIST2(SCM_MAKE_STR_COPYING(version),
                        Scm_CStringArrayToList((const char**)argv, argc, 0)),
              &epkt);
    /* %invoke-other-version won't return.  If we're here,
       we even failed to call it. */
    Scm_Panic("Failed to call %%invoke-other-version.  Installation problem?");
}