コード例 #1
0
ファイル: fasl.c プロジェクト: mschaef/vcsh
static lref_t find_package(lref_t name)
{
    _TCHAR *n = get_c_string(name);

    for (lref_t l = interp.fasl_package_list; CONSP(l); l = CDR(l))
    {
        lref_t p = CAR(l);

        if (!PACKAGEP(p))
            panic("damaged package list");

        if (_tcscmp(n, get_c_string(p->as.package.name)) == 0)
            return p;
    }

    return boolcons(false);
}
コード例 #2
0
ファイル: package.c プロジェクト: 8l/xedit
LispObj *
LispFindPackage(LispObj *name)
{
    char *string = NULL;

    if (PACKAGEP(name))
	return (name);

    if (SYMBOLP(name))
	string = ATOMID(name)->value;
    else if (STRINGP(name))
	string = THESTR(name);
    else
	LispDestroy("FIND-PACKAGE: %s is not a string or symbol", STROBJ(name));

    return (LispFindPackageFromString(string));
}
コード例 #3
0
ファイル: fasl.c プロジェクト: mschaef/vcsh
static void fast_read_symbol(lref_t reader, lref_t * retval)
{
    lref_t print_name;
    fast_read(reader, &print_name, false);

    if (!STRINGP(print_name))
        vmerror_fast_read("symbols must have string print names", reader, print_name);

    lref_t home;
    fast_read(reader, &home, false);

    if (!(PACKAGEP(home) || NULLP(home) || FALSEP(home)))
        vmerror_fast_read("a symbol must either have a package or NIL/#f for home", reader, home);

    if (NULLP(home) || FALSEP(home))
        *retval = symcons(print_name, NIL);
    else
        *retval = simple_intern(print_name, home);

    if (*retval == NIL)
        vmerror_fast_read("internal error creating symbol", reader, print_name);
}