diff options
Diffstat (limited to 'gsubr.c')
-rw-r--r-- | gsubr.c | 23 |
1 files changed, 9 insertions, 14 deletions
@@ -1,18 +1,18 @@ /* Copyright (C) 1994, 1995, 1996 Free Software Foundation, Inc. - * + * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. - * + * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. - * + * * You should have received a copy of the GNU General Public License * along with this software; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * the Free Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111, USA. * * As a special exception, the Free Software Foundation gives permission * for additional uses of the text contained in its release of GUILE. @@ -36,7 +36,7 @@ * * If you write modifications of your own for GUILE, it is your choice * whether to permit this exception to apply to your modifications. - * If you do not wish that, delete this exception notice. + * If you do not wish that, delete this exception notice. */ /* "gsubr.c" CCLOs taking general number of required, optional, and rest args. @@ -55,7 +55,7 @@ static SCM f_gsubr_apply; SCM make_gsubr(name, req, opt, rst, fcn) - char *name; + const char *name; int req, opt, rst; SCM (*fcn)(); { @@ -71,15 +71,10 @@ SCM make_gsubr(name, req, opt, rst, fcn) default: { SCM symcell = sysintern(name, UNDEFINED); - SCM z, cclo = makcclo(f_gsubr_apply, 3L); - long tmp = ((((CELLPTR)(CAR(symcell)))-heap_org)<<8); + SCM z = scm_maksubr(name, tc7_subr_0, fcn); + SCM cclo = makcclo(f_gsubr_apply, 3L); ASSERT(GSUBR_MAX >= req + opt + rst, MAKINUM(req + opt + rst), OUTOFRANGE, "make_gsubr"); - if ((tmp>>8) != ((CELLPTR)(CAR(symcell))-heap_org)) - tmp = 0; - NEWCELL(z); - SUBRF(z) = fcn; - CAR(z) = tmp + tc7_subr_0; GSUBR_PROC(cclo) = z; GSUBR_TYPE(cclo) = MAKINUM(GSUBR_MAKTYPE(req, opt, rst)); CDR(symcell) = cclo; @@ -102,7 +97,7 @@ SCM gsubr_apply(args) for (i = 0; i < GSUBR_REQ(typ); i++) { #ifndef RECKLESS if IMP(args) - wnargs: wta(UNDEFINED, (char *)WNA, CHARS(SNAME(GSUBR_PROC(self)))); + wnargs: wta(UNDEFINED, (char *)WNA, SNAME(GSUBR_PROC(self))); #endif v[i] = CAR(args); args = CDR(args); |