mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-06-19 02:00:26 +02:00
* Eliminate some calls to scm_wta.
This commit is contained in:
parent
cc6c7feea4
commit
db4b4ca64f
13 changed files with 77 additions and 39 deletions
|
@ -1,3 +1,16 @@
|
||||||
|
2001-03-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
|
||||||
|
|
||||||
|
* continuations.c (continuation_apply), eval.c (scm_m_lambda,
|
||||||
|
scm_m_letstar, scm_m_letrec1, scm_m_let, SCM_APPLY), eval.h
|
||||||
|
(SCM_EVALIM2), evalext.c (scm_m_generalized_set_x), gc.c
|
||||||
|
(get_bvec, MARK), goops.c (scm_primitive_generic_generic),
|
||||||
|
options.c (scm_options), ports.c (scm_remove_from_port_table),
|
||||||
|
ramap.c (scm_ramapc), read.c (skip_scsh_block_comment, scm_lreadr,
|
||||||
|
scm_lreadparen, scm_lreadrecparen), script.c (script_get_octal,
|
||||||
|
script_get_backslash, script_read_arg), unif.c (scm_cvref): Don't
|
||||||
|
call function scm_wta, call scm_misc_error or scm_wrong_type_arg
|
||||||
|
instead.
|
||||||
|
|
||||||
2001-03-04 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
|
2001-03-04 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
|
||||||
|
|
||||||
* goops.c (scm_sys_pre_expand_closure_x): New procedure.
|
* goops.c (scm_sys_pre_expand_closure_x): New procedure.
|
||||||
|
|
|
@ -59,6 +59,7 @@
|
||||||
#include "libguile/debug.h"
|
#include "libguile/debug.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#include "libguile/validate.h"
|
||||||
#include "libguile/continuations.h"
|
#include "libguile/continuations.h"
|
||||||
|
|
||||||
|
|
||||||
|
@ -219,8 +220,10 @@ scm_dynthrow (SCM cont, SCM val)
|
||||||
copy_stack_and_call (continuation, val, dst);
|
copy_stack_and_call (continuation, val, dst);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static SCM
|
||||||
|
continuation_apply (SCM cont, SCM args)
|
||||||
#define FUNC_NAME "continuation_apply"
|
#define FUNC_NAME "continuation_apply"
|
||||||
static SCM continuation_apply (SCM cont, SCM args)
|
|
||||||
{
|
{
|
||||||
scm_contregs *continuation = SCM_CONTREGS (cont);
|
scm_contregs *continuation = SCM_CONTREGS (cont);
|
||||||
scm_contregs *rootcont = SCM_CONTREGS (scm_rootcont);
|
scm_contregs *rootcont = SCM_CONTREGS (scm_rootcont);
|
||||||
|
@ -229,7 +232,8 @@ static SCM continuation_apply (SCM cont, SCM args)
|
||||||
/* this base comparison isn't needed */
|
/* this base comparison isn't needed */
|
||||||
|| continuation->base != rootcont->base)
|
|| continuation->base != rootcont->base)
|
||||||
{
|
{
|
||||||
scm_wta (cont, "continuation from wrong top level", FUNC_NAME);
|
SCM_MISC_ERROR ("continuation from wrong top level: ~S",
|
||||||
|
SCM_LIST1 (cont));
|
||||||
}
|
}
|
||||||
|
|
||||||
scm_dowinds (continuation->dynenv,
|
scm_dowinds (continuation->dynenv,
|
||||||
|
@ -241,6 +245,7 @@ static SCM continuation_apply (SCM cont, SCM args)
|
||||||
}
|
}
|
||||||
#undef FUNC_NAME
|
#undef FUNC_NAME
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
scm_init_continuations ()
|
scm_init_continuations ()
|
||||||
{
|
{
|
||||||
|
|
|
@ -681,13 +681,13 @@ scm_m_lambda (SCM xorig, SCM env)
|
||||||
if (!SCM_SYMBOLP (SCM_CAR (proc)))
|
if (!SCM_SYMBOLP (SCM_CAR (proc)))
|
||||||
goto badforms;
|
goto badforms;
|
||||||
else if (scm_c_improper_memq (SCM_CAR(proc), SCM_CDR(proc)))
|
else if (scm_c_improper_memq (SCM_CAR(proc), SCM_CDR(proc)))
|
||||||
scm_wta (xorig, scm_s_duplicate_formals, s_lambda);
|
scm_misc_error (s_lambda, scm_s_duplicate_formals, SCM_EOL);
|
||||||
proc = SCM_CDR (proc);
|
proc = SCM_CDR (proc);
|
||||||
}
|
}
|
||||||
if (SCM_NNULLP (proc))
|
if (SCM_NNULLP (proc))
|
||||||
{
|
{
|
||||||
badforms:
|
badforms:
|
||||||
scm_wta (xorig, scm_s_formals, s_lambda);
|
scm_misc_error (s_lambda, scm_s_formals, SCM_EOL);
|
||||||
}
|
}
|
||||||
|
|
||||||
memlambda:
|
memlambda:
|
||||||
|
@ -713,7 +713,7 @@ scm_m_letstar (SCM xorig, SCM env)
|
||||||
SCM_ASSYNT (2 == scm_ilength (arg1), xorig, scm_s_bindings, s_letstar);
|
SCM_ASSYNT (2 == scm_ilength (arg1), xorig, scm_s_bindings, s_letstar);
|
||||||
SCM_ASSYNT (SCM_SYMBOLP (SCM_CAR (arg1)), xorig, scm_s_variable, s_letstar);
|
SCM_ASSYNT (SCM_SYMBOLP (SCM_CAR (arg1)), xorig, scm_s_variable, s_letstar);
|
||||||
if (scm_c_improper_memq (SCM_CAR (arg1), vars))
|
if (scm_c_improper_memq (SCM_CAR (arg1), vars))
|
||||||
scm_wta (xorig, scm_s_duplicate_bindings, s_letstar);
|
scm_misc_error (s_letstar, scm_s_duplicate_bindings, SCM_EOL);
|
||||||
*varloc = scm_cons2 (SCM_CAR (arg1), SCM_CAR (SCM_CDR (arg1)), SCM_EOL);
|
*varloc = scm_cons2 (SCM_CAR (arg1), SCM_CAR (SCM_CDR (arg1)), SCM_EOL);
|
||||||
varloc = SCM_CDRLOC (SCM_CDR (*varloc));
|
varloc = SCM_CDRLOC (SCM_CDR (*varloc));
|
||||||
proc = SCM_CDR (proc);
|
proc = SCM_CDR (proc);
|
||||||
|
@ -920,7 +920,7 @@ scm_m_letrec1 (SCM op, SCM imm, SCM xorig, SCM env)
|
||||||
SCM_ASSYNT (2 == scm_ilength (arg1), xorig, scm_s_bindings, what);
|
SCM_ASSYNT (2 == scm_ilength (arg1), xorig, scm_s_bindings, what);
|
||||||
SCM_ASSYNT (SCM_SYMBOLP (SCM_CAR (arg1)), xorig, scm_s_variable, what);
|
SCM_ASSYNT (SCM_SYMBOLP (SCM_CAR (arg1)), xorig, scm_s_variable, what);
|
||||||
if (scm_c_improper_memq (SCM_CAR (arg1), vars))
|
if (scm_c_improper_memq (SCM_CAR (arg1), vars))
|
||||||
scm_wta (xorig, scm_s_duplicate_bindings, what);
|
scm_misc_error (what, scm_s_duplicate_bindings, SCM_EOL);
|
||||||
vars = scm_cons (SCM_CAR (arg1), vars);
|
vars = scm_cons (SCM_CAR (arg1), vars);
|
||||||
*initloc = scm_cons (SCM_CAR (SCM_CDR (arg1)), SCM_EOL);
|
*initloc = scm_cons (SCM_CAR (SCM_CDR (arg1)), SCM_EOL);
|
||||||
initloc = SCM_CDRLOC (*initloc);
|
initloc = SCM_CDRLOC (*initloc);
|
||||||
|
@ -982,7 +982,7 @@ scm_m_let (SCM xorig, SCM env)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!SCM_SYMBOLP (proc))
|
if (!SCM_SYMBOLP (proc))
|
||||||
scm_wta (xorig, scm_s_bindings, s_let); /* bad let */
|
scm_misc_error (s_let, scm_s_bindings, SCM_EOL); /* bad let */
|
||||||
name = proc; /* named let, build equiv letrec */
|
name = proc; /* named let, build equiv letrec */
|
||||||
x = SCM_CDR (x);
|
x = SCM_CDR (x);
|
||||||
SCM_ASSYNT (scm_ilength (x) >= 2, xorig, scm_s_body, s_let);
|
SCM_ASSYNT (scm_ilength (x) >= 2, xorig, scm_s_body, s_let);
|
||||||
|
@ -3559,7 +3559,7 @@ tail:
|
||||||
scm_wrong_num_args (proc);
|
scm_wrong_num_args (proc);
|
||||||
default:
|
default:
|
||||||
badproc:
|
badproc:
|
||||||
scm_wta (proc, (char *) SCM_ARG1, "apply");
|
scm_wrong_type_arg ("apply", SCM_ARG1, proc);
|
||||||
RETURN (arg1);
|
RETURN (arg1);
|
||||||
}
|
}
|
||||||
#ifdef DEVAL
|
#ifdef DEVAL
|
||||||
|
|
|
@ -98,7 +98,7 @@ extern SCM scm_eval_options_interface (SCM setting);
|
||||||
* For an explanation of symbols containing "EVAL", see beginning of eval.c.
|
* For an explanation of symbols containing "EVAL", see beginning of eval.c.
|
||||||
*/
|
*/
|
||||||
#define SCM_EVALIM2(x) (((x) == SCM_EOL) \
|
#define SCM_EVALIM2(x) (((x) == SCM_EOL) \
|
||||||
? scm_wta ((x), scm_s_expression, NULL) \
|
? scm_misc_error (NULL, scm_s_expression, SCM_EOL), 0 \
|
||||||
: (x))
|
: (x))
|
||||||
#ifdef MEMOIZE_LOCALS
|
#ifdef MEMOIZE_LOCALS
|
||||||
#define SCM_EVALIM(x, env) (SCM_ILOCP (x) \
|
#define SCM_EVALIM(x, env) (SCM_ILOCP (x) \
|
||||||
|
|
|
@ -65,7 +65,8 @@ scm_m_generalized_set_x (SCM xorig, SCM env)
|
||||||
else if (SCM_CONSP (SCM_CAR (x)))
|
else if (SCM_CONSP (SCM_CAR (x)))
|
||||||
return scm_cons (SCM_LIST2 (scm_sym_setter, SCM_CAAR (x)),
|
return scm_cons (SCM_LIST2 (scm_sym_setter, SCM_CAAR (x)),
|
||||||
scm_append (SCM_LIST2 (SCM_CDAR (x), SCM_CDR (x))));
|
scm_append (SCM_LIST2 (SCM_CDAR (x), SCM_CDR (x))));
|
||||||
return scm_wta (xorig, scm_s_variable, scm_s_set_x);
|
else
|
||||||
|
scm_misc_error (scm_s_set_x, scm_s_variable, SCM_EOL);
|
||||||
}
|
}
|
||||||
|
|
||||||
SCM_DEFINE (scm_definedp, "defined?", 1, 1, 0,
|
SCM_DEFINE (scm_definedp, "defined?", 1, 1, 0,
|
||||||
|
|
|
@ -408,6 +408,7 @@ static scm_mark_space_t *mark_space_head;
|
||||||
|
|
||||||
static scm_c_bvec_limb_t *
|
static scm_c_bvec_limb_t *
|
||||||
get_bvec ()
|
get_bvec ()
|
||||||
|
#define FUNC_NAME "get_bvec"
|
||||||
{
|
{
|
||||||
scm_c_bvec_limb_t *res;
|
scm_c_bvec_limb_t *res;
|
||||||
|
|
||||||
|
@ -415,7 +416,7 @@ get_bvec ()
|
||||||
{
|
{
|
||||||
SCM_SYSCALL (current_mark_space = (scm_mark_space_t *) malloc (sizeof (scm_mark_space_t)));
|
SCM_SYSCALL (current_mark_space = (scm_mark_space_t *) malloc (sizeof (scm_mark_space_t)));
|
||||||
if (!current_mark_space)
|
if (!current_mark_space)
|
||||||
scm_wta (SCM_UNDEFINED, "could not grow", "heap");
|
SCM_MISC_ERROR ("could not grow heap", SCM_EOL);
|
||||||
|
|
||||||
current_mark_space->bvec_space = NULL;
|
current_mark_space->bvec_space = NULL;
|
||||||
current_mark_space->next = NULL;
|
current_mark_space->next = NULL;
|
||||||
|
@ -431,7 +432,7 @@ get_bvec ()
|
||||||
SCM_SYSCALL (current_mark_space->bvec_space =
|
SCM_SYSCALL (current_mark_space->bvec_space =
|
||||||
(scm_c_bvec_limb_t *) calloc (BVEC_GROW_SIZE_IN_BYTES, 1));
|
(scm_c_bvec_limb_t *) calloc (BVEC_GROW_SIZE_IN_BYTES, 1));
|
||||||
if (!(current_mark_space->bvec_space))
|
if (!(current_mark_space->bvec_space))
|
||||||
scm_wta (SCM_UNDEFINED, "could not grow", "heap");
|
SCM_MISC_ERROR ("could not grow heap", SCM_EOL);
|
||||||
|
|
||||||
current_mark_space_offset = 0;
|
current_mark_space_offset = 0;
|
||||||
|
|
||||||
|
@ -450,6 +451,8 @@ get_bvec ()
|
||||||
|
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
#undef FUNC_NAME
|
||||||
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
clear_mark_space ()
|
clear_mark_space ()
|
||||||
|
@ -1143,7 +1146,7 @@ gc_mark_loop_first_time:
|
||||||
#if (defined (GUILE_DEBUG_FREELIST))
|
#if (defined (GUILE_DEBUG_FREELIST))
|
||||||
|
|
||||||
if (SCM_GC_IN_CARD_HEADERP (SCM2PTR (ptr)))
|
if (SCM_GC_IN_CARD_HEADERP (SCM2PTR (ptr)))
|
||||||
scm_wta (ptr, "rogue pointer in heap", NULL);
|
SCM_MISC_ERROR ("rogue pointer in heap", SCM_EOL);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -1644,7 +1644,7 @@ SCM_DEFINE (scm_primitive_generic_generic, "primitive-generic-generic", 1, 0, 0,
|
||||||
if (gf)
|
if (gf)
|
||||||
return gf;
|
return gf;
|
||||||
}
|
}
|
||||||
return scm_wta (subr, (char *) SCM_ARG1, FUNC_NAME);
|
SCM_WRONG_TYPE_ARG (SCM_ARG1, subr);
|
||||||
}
|
}
|
||||||
#undef FUNC_NAME
|
#undef FUNC_NAME
|
||||||
|
|
||||||
|
|
|
@ -190,7 +190,8 @@ scm_options (SCM arg, scm_option options[], int n, const char *s)
|
||||||
}
|
}
|
||||||
#ifndef SCM_RECKLESS
|
#ifndef SCM_RECKLESS
|
||||||
scm_must_free ((char *) flags);
|
scm_must_free ((char *) flags);
|
||||||
scm_wta (SCM_CAR (new_mode), "Unknown mode flag", s);
|
scm_misc_error (s, "Unknown mode flag: ~S",
|
||||||
|
SCM_LIST1 (SCM_CAR (new_mode)));
|
||||||
#endif
|
#endif
|
||||||
cont:
|
cont:
|
||||||
new_mode = SCM_CDR (new_mode);
|
new_mode = SCM_CDR (new_mode);
|
||||||
|
|
|
@ -468,12 +468,13 @@ scm_add_to_port_table (SCM port)
|
||||||
|
|
||||||
void
|
void
|
||||||
scm_remove_from_port_table (SCM port)
|
scm_remove_from_port_table (SCM port)
|
||||||
|
#define FUNC_NAME "scm_remove_from_port_table"
|
||||||
{
|
{
|
||||||
scm_port *p = SCM_PTAB_ENTRY (port);
|
scm_port *p = SCM_PTAB_ENTRY (port);
|
||||||
int i = p->entry;
|
int i = p->entry;
|
||||||
|
|
||||||
if (i >= scm_port_table_size)
|
if (i >= scm_port_table_size)
|
||||||
scm_wta (port, "Port not in table", "scm_remove_from_port_table");
|
SCM_MISC_ERROR ("Port not in table: ~S", SCM_LIST1 (port));
|
||||||
if (p->putback_buf)
|
if (p->putback_buf)
|
||||||
free (p->putback_buf);
|
free (p->putback_buf);
|
||||||
free (p);
|
free (p);
|
||||||
|
@ -487,6 +488,8 @@ scm_remove_from_port_table (SCM port)
|
||||||
SCM_SETPTAB_ENTRY (port, 0);
|
SCM_SETPTAB_ENTRY (port, 0);
|
||||||
scm_port_table_size--;
|
scm_port_table_size--;
|
||||||
}
|
}
|
||||||
|
#undef FUNC_NAME
|
||||||
|
|
||||||
|
|
||||||
#ifdef GUILE_DEBUG
|
#ifdef GUILE_DEBUG
|
||||||
/* Functions for debugging. */
|
/* Functions for debugging. */
|
||||||
|
|
|
@ -329,7 +329,7 @@ scm_ramapc (int (*cproc)(), SCM data, SCM ra0, SCM lra, const char *what)
|
||||||
{
|
{
|
||||||
default:
|
default:
|
||||||
case 0:
|
case 0:
|
||||||
scm_wta (ra0, "array shape mismatch", what);
|
scm_misc_error (what, "array shape mismatch: ~S", ra0);
|
||||||
case 2:
|
case 2:
|
||||||
case 3:
|
case 3:
|
||||||
case 4: /* Try unrolling arrays */
|
case 4: /* Try unrolling arrays */
|
||||||
|
|
|
@ -255,6 +255,7 @@ recsexpr (SCM obj,int line,int column,SCM filename)
|
||||||
|
|
||||||
static void
|
static void
|
||||||
skip_scsh_block_comment (SCM port)
|
skip_scsh_block_comment (SCM port)
|
||||||
|
#define FUNC_NAME "skip_scsh_block_comment"
|
||||||
{
|
{
|
||||||
/* Is this portable? Dear God, spare me from the non-eight-bit
|
/* Is this portable? Dear God, spare me from the non-eight-bit
|
||||||
characters. But is it tasteful? */
|
characters. But is it tasteful? */
|
||||||
|
@ -265,8 +266,7 @@ skip_scsh_block_comment (SCM port)
|
||||||
int c = scm_getc (port);
|
int c = scm_getc (port);
|
||||||
|
|
||||||
if (c == EOF)
|
if (c == EOF)
|
||||||
scm_wta (SCM_UNDEFINED,
|
SCM_MISC_ERROR ("unterminated `#! ... !#' comment", SCM_EOL);
|
||||||
"unterminated `#! ... !#' comment", "read");
|
|
||||||
history = ((history << 8) | (c & 0xff)) & 0xffffffff;
|
history = ((history << 8) | (c & 0xff)) & 0xffffffff;
|
||||||
|
|
||||||
/* Were the last four characters read "\n!#\n"? */
|
/* Were the last four characters read "\n!#\n"? */
|
||||||
|
@ -274,6 +274,8 @@ skip_scsh_block_comment (SCM port)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#undef FUNC_NAME
|
||||||
|
|
||||||
|
|
||||||
static SCM scm_get_hash_procedure(int c);
|
static SCM scm_get_hash_procedure(int c);
|
||||||
|
|
||||||
|
@ -281,6 +283,7 @@ static char s_list[]="list";
|
||||||
|
|
||||||
SCM
|
SCM
|
||||||
scm_lreadr (SCM *tok_buf,SCM port,SCM *copy)
|
scm_lreadr (SCM *tok_buf,SCM port,SCM *copy)
|
||||||
|
#define FUNC_NAME "scm_lreadr"
|
||||||
{
|
{
|
||||||
int c;
|
int c;
|
||||||
scm_sizet j;
|
scm_sizet j;
|
||||||
|
@ -299,7 +302,7 @@ tryagain_no_flush_ws:
|
||||||
? scm_lreadrecparen (tok_buf, port, s_list, copy)
|
? scm_lreadrecparen (tok_buf, port, s_list, copy)
|
||||||
: scm_lreadparen (tok_buf, port, s_list, copy);
|
: scm_lreadparen (tok_buf, port, s_list, copy);
|
||||||
case ')':
|
case ')':
|
||||||
scm_wta (SCM_UNDEFINED, "unexpected \")\"", "read");
|
SCM_MISC_ERROR ("unexpected \")\"", SCM_EOL);
|
||||||
goto tryagain;
|
goto tryagain;
|
||||||
|
|
||||||
case '\'':
|
case '\'':
|
||||||
|
@ -402,7 +405,7 @@ tryagain_no_flush_ws:
|
||||||
if (scm_charnames[c]
|
if (scm_charnames[c]
|
||||||
&& (scm_casei_streq (scm_charnames[c], SCM_STRING_CHARS (*tok_buf))))
|
&& (scm_casei_streq (scm_charnames[c], SCM_STRING_CHARS (*tok_buf))))
|
||||||
return SCM_MAKE_CHAR (scm_charnums[c]);
|
return SCM_MAKE_CHAR (scm_charnums[c]);
|
||||||
scm_wta (SCM_UNDEFINED, "unknown # object: #\\", SCM_STRING_CHARS (*tok_buf));
|
SCM_MISC_ERROR ("unknown # object", SCM_EOL);
|
||||||
|
|
||||||
/* #:SYMBOL is a syntax for keywords supported in all contexts. */
|
/* #:SYMBOL is a syntax for keywords supported in all contexts. */
|
||||||
case ':':
|
case ':':
|
||||||
|
@ -504,7 +507,7 @@ tryagain_no_flush_ws:
|
||||||
c = SCM_STRING_CHARS (*tok_buf)[1];
|
c = SCM_STRING_CHARS (*tok_buf)[1];
|
||||||
goto callshrp;
|
goto callshrp;
|
||||||
}
|
}
|
||||||
scm_wta (SCM_UNDEFINED, "unknown # object", SCM_STRING_CHARS (*tok_buf));
|
SCM_MISC_ERROR ("unknown # object", SCM_EOL);
|
||||||
}
|
}
|
||||||
goto tok;
|
goto tok;
|
||||||
|
|
||||||
|
@ -524,6 +527,8 @@ tryagain_no_flush_ws:
|
||||||
return scm_mem2symbol (SCM_STRING_CHARS (*tok_buf), j);
|
return scm_mem2symbol (SCM_STRING_CHARS (*tok_buf), j);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#undef FUNC_NAME
|
||||||
|
|
||||||
|
|
||||||
#ifdef _UNICOS
|
#ifdef _UNICOS
|
||||||
_Pragma ("noopt"); /* # pragma _CRI noopt */
|
_Pragma ("noopt"); /* # pragma _CRI noopt */
|
||||||
|
@ -617,6 +622,7 @@ _Pragma ("opt"); /* # pragma _CRI opt */
|
||||||
|
|
||||||
SCM
|
SCM
|
||||||
scm_lreadparen (SCM *tok_buf, SCM port, char *name, SCM *copy)
|
scm_lreadparen (SCM *tok_buf, SCM port, char *name, SCM *copy)
|
||||||
|
#define FUNC_NAME "scm_lreadparen"
|
||||||
{
|
{
|
||||||
SCM tmp;
|
SCM tmp;
|
||||||
SCM tl;
|
SCM tl;
|
||||||
|
@ -632,7 +638,7 @@ scm_lreadparen (SCM *tok_buf, SCM port, char *name, SCM *copy)
|
||||||
ans = scm_lreadr (tok_buf, port, copy);
|
ans = scm_lreadr (tok_buf, port, copy);
|
||||||
closeit:
|
closeit:
|
||||||
if (')' != (c = scm_flush_ws (port, name)))
|
if (')' != (c = scm_flush_ws (port, name)))
|
||||||
scm_wta (SCM_UNDEFINED, "missing close paren", "");
|
SCM_MISC_ERROR ("missing close paren", SCM_EOL);
|
||||||
return ans;
|
return ans;
|
||||||
}
|
}
|
||||||
ans = tl = scm_cons (tmp, SCM_EOL);
|
ans = tl = scm_cons (tmp, SCM_EOL);
|
||||||
|
@ -649,10 +655,12 @@ scm_lreadparen (SCM *tok_buf, SCM port, char *name, SCM *copy)
|
||||||
}
|
}
|
||||||
return ans;
|
return ans;
|
||||||
}
|
}
|
||||||
|
#undef FUNC_NAME
|
||||||
|
|
||||||
|
|
||||||
SCM
|
SCM
|
||||||
scm_lreadrecparen (SCM *tok_buf, SCM port, char *name, SCM *copy)
|
scm_lreadrecparen (SCM *tok_buf, SCM port, char *name, SCM *copy)
|
||||||
|
#define FUNC_NAME "scm_lreadrecparen"
|
||||||
{
|
{
|
||||||
register int c;
|
register int c;
|
||||||
register SCM tmp;
|
register SCM tmp;
|
||||||
|
@ -670,7 +678,7 @@ scm_lreadrecparen (SCM *tok_buf, SCM port, char *name, SCM *copy)
|
||||||
{
|
{
|
||||||
ans = scm_lreadr (tok_buf, port, copy);
|
ans = scm_lreadr (tok_buf, port, copy);
|
||||||
if (')' != (c = scm_flush_ws (port, name)))
|
if (')' != (c = scm_flush_ws (port, name)))
|
||||||
scm_wta (SCM_UNDEFINED, "missing close paren", "");
|
SCM_MISC_ERROR ("missing close paren", SCM_EOL);
|
||||||
return ans;
|
return ans;
|
||||||
}
|
}
|
||||||
/* Build the head of the list structure. */
|
/* Build the head of the list structure. */
|
||||||
|
@ -694,7 +702,7 @@ scm_lreadrecparen (SCM *tok_buf, SCM port, char *name, SCM *copy)
|
||||||
: tmp,
|
: tmp,
|
||||||
SCM_EOL));
|
SCM_EOL));
|
||||||
if (')' != (c = scm_flush_ws (port, name)))
|
if (')' != (c = scm_flush_ws (port, name)))
|
||||||
scm_wta (SCM_UNDEFINED, "missing close paren", "");
|
SCM_MISC_ERROR ("missing close paren", SCM_EOL);
|
||||||
goto exit;
|
goto exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -721,6 +729,7 @@ exit:
|
||||||
SCM_EOL));
|
SCM_EOL));
|
||||||
return ans;
|
return ans;
|
||||||
}
|
}
|
||||||
|
#undef FUNC_NAME
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -51,6 +51,7 @@
|
||||||
#include "libguile/load.h"
|
#include "libguile/load.h"
|
||||||
#include "libguile/version.h"
|
#include "libguile/version.h"
|
||||||
|
|
||||||
|
#include "libguile/validate.h"
|
||||||
#include "libguile/script.h"
|
#include "libguile/script.h"
|
||||||
|
|
||||||
#ifdef HAVE_STRING_H
|
#ifdef HAVE_STRING_H
|
||||||
|
@ -168,6 +169,7 @@ scm_find_executable (const char *name)
|
||||||
/* Read a \nnn-style escape. We've just read the backslash. */
|
/* Read a \nnn-style escape. We've just read the backslash. */
|
||||||
static int
|
static int
|
||||||
script_get_octal (FILE *f)
|
script_get_octal (FILE *f)
|
||||||
|
#define FUNC_NAME "script_get_octal"
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
int value = 0;
|
int value = 0;
|
||||||
|
@ -178,16 +180,17 @@ script_get_octal (FILE *f)
|
||||||
if ('0' <= c && c <= '7')
|
if ('0' <= c && c <= '7')
|
||||||
value = (value * 8) + (c - '0');
|
value = (value * 8) + (c - '0');
|
||||||
else
|
else
|
||||||
scm_wta (SCM_UNDEFINED,
|
SCM_MISC_ERROR ("malformed script: bad octal backslash escape",
|
||||||
"malformed script: bad octal backslash escape",
|
SCM_EOL);
|
||||||
"script argument parser");
|
|
||||||
}
|
}
|
||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
|
#undef FUNC_NAME
|
||||||
|
|
||||||
|
|
||||||
static int
|
static int
|
||||||
script_get_backslash (FILE *f)
|
script_get_backslash (FILE *f)
|
||||||
|
#define FUNC_NAME "script_get_backslash"
|
||||||
{
|
{
|
||||||
int c = getc (f);
|
int c = getc (f);
|
||||||
|
|
||||||
|
@ -211,24 +214,22 @@ script_get_backslash (FILE *f)
|
||||||
case '4': case '5': case '6': case '7':
|
case '4': case '5': case '6': case '7':
|
||||||
ungetc (c, f);
|
ungetc (c, f);
|
||||||
return script_get_octal (f);
|
return script_get_octal (f);
|
||||||
|
|
||||||
case EOF:
|
case EOF:
|
||||||
scm_wta (SCM_UNDEFINED,
|
SCM_MISC_ERROR ("malformed script: backslash followed by EOF", SCM_EOL);
|
||||||
"malformed script: backslash followed by EOF",
|
|
||||||
"script argument parser");
|
|
||||||
return 0; /* not reached? */
|
return 0; /* not reached? */
|
||||||
|
|
||||||
default:
|
default:
|
||||||
scm_wta (SCM_UNDEFINED,
|
SCM_MISC_ERROR ("malformed script: bad backslash sequence", SCM_EOL);
|
||||||
"malformed script: bad backslash sequence",
|
|
||||||
"script argument parser");
|
|
||||||
return 0; /* not reached? */
|
return 0; /* not reached? */
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#undef FUNC_NAME
|
||||||
|
|
||||||
|
|
||||||
static char *
|
static char *
|
||||||
script_read_arg (FILE *f)
|
script_read_arg (FILE *f)
|
||||||
|
#define FUNC_NAME "script_read_arg"
|
||||||
{
|
{
|
||||||
int size = 7;
|
int size = 7;
|
||||||
char *buf = malloc (size + 1);
|
char *buf = malloc (size + 1);
|
||||||
|
@ -275,13 +276,12 @@ script_read_arg (FILE *f)
|
||||||
|
|
||||||
case '\t':
|
case '\t':
|
||||||
free (buf);
|
free (buf);
|
||||||
scm_wta (SCM_UNDEFINED,
|
SCM_MISC_ERROR ("malformed script: TAB in meta-arguments", SCM_EOL);
|
||||||
"malformed script: TAB in meta-arguments",
|
|
||||||
"argument parser");
|
|
||||||
return 0; /* not reached? */
|
return 0; /* not reached? */
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#undef FUNC_NAME
|
||||||
|
|
||||||
|
|
||||||
static int
|
static int
|
||||||
|
|
|
@ -1156,11 +1156,12 @@ SCM_DEFINE (scm_uniform_vector_ref, "uniform-vector-ref", 2, 0, 0,
|
||||||
|
|
||||||
SCM
|
SCM
|
||||||
scm_cvref (SCM v, scm_sizet pos, SCM last)
|
scm_cvref (SCM v, scm_sizet pos, SCM last)
|
||||||
|
#define FUNC_NAME "scm_cvref"
|
||||||
{
|
{
|
||||||
switch SCM_TYP7 (v)
|
switch SCM_TYP7 (v)
|
||||||
{
|
{
|
||||||
default:
|
default:
|
||||||
scm_wta (v, (char *) SCM_ARG1, "PROGRAMMING ERROR: scm_cvref");
|
SCM_WRONG_TYPE_ARG (SCM_ARG1, v);
|
||||||
case scm_tc7_bvect:
|
case scm_tc7_bvect:
|
||||||
if (SCM_BITVEC_REF(v,pos))
|
if (SCM_BITVEC_REF(v,pos))
|
||||||
return SCM_BOOL_T;
|
return SCM_BOOL_T;
|
||||||
|
@ -1222,6 +1223,8 @@ scm_cvref (SCM v, scm_sizet pos, SCM last)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#undef FUNC_NAME
|
||||||
|
|
||||||
|
|
||||||
SCM_REGISTER_PROC(s_uniform_array_set1_x, "uniform-array-set1!", 3, 0, 0, scm_array_set_x);
|
SCM_REGISTER_PROC(s_uniform_array_set1_x, "uniform-array-set1!", 3, 0, 0, scm_array_set_x);
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue