/[guile]/guile/guile-core/libguile/validate.h
ViewVC logotype

Diff of /guile/guile-core/libguile/validate.h

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.40 by xxhanwen, Sat Jul 20 14:08:34 2002 UTC revision 1.41 by mvo, Sun Oct 20 22:59:01 2002 UTC
# Line 3  Line 3 
3  #ifndef SCM_VALIDATE_H  #ifndef SCM_VALIDATE_H
4  #define SCM_VALIDATE_H  #define SCM_VALIDATE_H
5    
6  /* Copyright (C) 1999,2000,2001 Free Software Foundation, Inc.  /* Copyright (C) 1999,2000,2001, 2002 Free Software Foundation, Inc.
7   *   *
8   * This program is free software; you can redistribute it and/or modify   * This program is free software; you can redistribute it and/or modify
9   * it under the terms of the GNU General Public License as published by   * it under the terms of the GNU General Public License as published by
# Line 141  Line 141 
141      SCM_ASSERT_TYPE (SCM_ ## pred (var), var, pos, FUNC_NAME, #pred); \      SCM_ASSERT_TYPE (SCM_ ## pred (var), var, pos, FUNC_NAME, #pred); \
142    } while (0)    } while (0)
143    
144    #define SCM_MAKE_VALIDATE_MSG(pos, var, pred, msg) \
145      do { \
146        SCM_ASSERT_TYPE (SCM_ ## pred (var), var, pos, FUNC_NAME, msg); \
147      } while (0)
148    
149    
150    
151  #define SCM_VALIDATE_REST_ARGUMENT(x) \  #define SCM_VALIDATE_REST_ARGUMENT(x) \
# Line 152  Line 157 
157      } \      } \
158    } while (0)    } while (0)
159    
160  #define SCM_VALIDATE_NIM(pos, scm) SCM_MAKE_VALIDATE (pos, scm, NIMP)  #define SCM_VALIDATE_NIM(pos, scm) SCM_MAKE_VALIDATE_MSG (pos, scm, NIMP, "non-immediate")
161    
162  #define SCM_VALIDATE_BOOL(pos, flag) SCM_MAKE_VALIDATE(pos, flag, BOOLP)  #define SCM_VALIDATE_BOOL(pos, flag) SCM_MAKE_VALIDATE_MSG(pos, flag, BOOLP, "boolean")
163    
164  #define SCM_VALIDATE_BOOL_COPY(pos, flag, cvar) \  #define SCM_VALIDATE_BOOL_COPY(pos, flag, cvar) \
165    do { \    do { \
# Line 162  Line 167 
167      cvar = SCM_EQ_P (flag, SCM_BOOL_T) ? 1 : 0; \      cvar = SCM_EQ_P (flag, SCM_BOOL_T) ? 1 : 0; \
168    } while (0)    } while (0)
169    
170  #define SCM_VALIDATE_CHAR(pos, scm) SCM_MAKE_VALIDATE (pos, scm, CHARP)  #define SCM_VALIDATE_CHAR(pos, scm) SCM_MAKE_VALIDATE_MSG (pos, scm, CHARP, "character")
171    
172  #define SCM_VALIDATE_CHAR_COPY(pos, scm, cvar) \  #define SCM_VALIDATE_CHAR_COPY(pos, scm, cvar) \
173    do { \    do { \
# Line 170  Line 175 
175      cvar = SCM_CHAR (scm); \      cvar = SCM_CHAR (scm); \
176    } while (0)    } while (0)
177    
178  #define SCM_VALIDATE_STRING(pos, str) SCM_MAKE_VALIDATE (pos, str, STRINGP)  #define SCM_VALIDATE_STRING(pos, str) SCM_MAKE_VALIDATE_MSG (pos, str, STRINGP, "string")
179    
180  #define SCM_VALIDATE_STRING_COPY(pos, str, cvar) \  #define SCM_VALIDATE_STRING_COPY(pos, str, cvar) \
181    do { \    do { \
# Line 196  Line 201 
201                        && (size_t) c_end <= SCM_STRING_LENGTH (str));\                        && (size_t) c_end <= SCM_STRING_LENGTH (str));\
202    } while (0)    } while (0)
203    
204  #define SCM_VALIDATE_REAL(pos, z) SCM_MAKE_VALIDATE (pos, z, REALP)  #define SCM_VALIDATE_REAL(pos, z) SCM_MAKE_VALIDATE_MSG (pos, z, REALP, "real")
205    
206  #define SCM_VALIDATE_NUMBER(pos, z) SCM_MAKE_VALIDATE (pos, z, NUMBERP)  #define SCM_VALIDATE_NUMBER(pos, z) SCM_MAKE_VALIDATE_MSG (pos, z, NUMBERP, "number")
207    
208  #define SCM_VALIDATE_INUM(pos, k) SCM_MAKE_VALIDATE (pos, k, INUMP)  #define SCM_VALIDATE_INUM(pos, k) SCM_MAKE_VALIDATE_MSG (pos, k, INUMP, "exact integer")
209    
210  #define SCM_VALIDATE_INUM_COPY(pos, k, cvar) \  #define SCM_VALIDATE_INUM_COPY(pos, k, cvar) \
211    do { \    do { \
# Line 248  Line 253 
253      cvar = SCM_NUM2DOUBLE (pos, k); \      cvar = SCM_NUM2DOUBLE (pos, k); \
254    } while (0)    } while (0)
255    
256  #define SCM_VALIDATE_BIGINT(pos, k) SCM_MAKE_VALIDATE (pos, k, BIGP)  #define SCM_VALIDATE_BIGINT(pos, k) SCM_MAKE_VALIDATE_MSG (pos, k, BIGP, "bignum")
257    
258  #define SCM_VALIDATE_INUM_MIN(pos, k, min) \  #define SCM_VALIDATE_INUM_MIN(pos, k, min) \
259    do { \    do { \
# Line 321  Line 326 
326      cvar = SCM_INUM (k); \      cvar = SCM_INUM (k); \
327    } while (0)    } while (0)
328    
329  #define SCM_VALIDATE_NULL(pos, scm) SCM_MAKE_VALIDATE (pos, scm, NULLP)  #define SCM_VALIDATE_NULL(pos, scm) SCM_MAKE_VALIDATE_MSG (pos, scm, NULLP, "null")
330    
331  #define SCM_VALIDATE_NULL_OR_NIL(pos, scm) SCM_MAKE_VALIDATE (pos, scm, NULL_OR_NIL_P)  #define SCM_VALIDATE_NULL_OR_NIL(pos, scm) SCM_MAKE_VALIDATE_MSG (pos, scm, NULL_OR_NIL_P, "null")
332    
333  #define SCM_VALIDATE_CONS(pos, scm) SCM_MAKE_VALIDATE (pos, scm, CONSP)  #define SCM_VALIDATE_CONS(pos, scm) SCM_MAKE_VALIDATE_MSG (pos, scm, CONSP, "pair")
334    
335  #define SCM_VALIDATE_LIST(pos, lst) \  #define SCM_VALIDATE_LIST(pos, lst) \
336    do { \    do { \
# Line 367  Line 372 
372      SCM_ASSERT (scm_valid_oport_value_p (port), port, pos, FUNC_NAME); \      SCM_ASSERT (scm_valid_oport_value_p (port), port, pos, FUNC_NAME); \
373    } while (0)    } while (0)
374    
375  #define SCM_VALIDATE_PRINTSTATE(pos, a) SCM_MAKE_VALIDATE(pos, a, PRINT_STATE_P)  #define SCM_VALIDATE_PRINTSTATE(pos, a) SCM_MAKE_VALIDATE_MSG(pos, a, PRINT_STATE_P, "print-state")
376    
377  #define SCM_VALIDATE_SMOB(pos, obj, type) \  #define SCM_VALIDATE_SMOB(pos, obj, type) \
378    do { \    do { \
# Line 375  Line 380 
380                  obj, pos, FUNC_NAME); \                  obj, pos, FUNC_NAME); \
381    } while (0)    } while (0)
382    
383  #define SCM_VALIDATE_THREAD(pos, a) SCM_MAKE_VALIDATE (pos, a, THREADP)  #define SCM_VALIDATE_THREAD(pos, a) SCM_MAKE_VALIDATE_MSG (pos, a, THREADP, "thread")
384    
385  #define SCM_VALIDATE_THUNK(pos, thunk) \  #define SCM_VALIDATE_THUNK(pos, thunk) \
386    do { \    do { \
387      SCM_ASSERT (!SCM_FALSEP (scm_thunk_p (thunk)), thunk, pos, FUNC_NAME); \      SCM_ASSERT (!SCM_FALSEP (scm_thunk_p (thunk)), thunk, pos, FUNC_NAME); \
388    } while (0)    } while (0)
389    
390  #define SCM_VALIDATE_SYMBOL(pos, sym) SCM_MAKE_VALIDATE (pos, sym, SYMBOLP)  #define SCM_VALIDATE_SYMBOL(pos, sym) SCM_MAKE_VALIDATE_MSG (pos, sym, SYMBOLP, "symbol")
391    
392  #define SCM_VALIDATE_VARIABLE(pos, var) SCM_MAKE_VALIDATE (pos, var, VARIABLEP)  #define SCM_VALIDATE_VARIABLE(pos, var) SCM_MAKE_VALIDATE_MSG (pos, var, VARIABLEP, "variable")
393    
394  #define SCM_VALIDATE_MEMOIZED(pos, obj) SCM_MAKE_VALIDATE (pos, obj, MEMOIZEDP)  #define SCM_VALIDATE_MEMOIZED(pos, obj) SCM_MAKE_VALIDATE_MSG (pos, obj, MEMOIZEDP, "memoized code")
395    
396  #define SCM_VALIDATE_CLOSURE(pos, obj) SCM_MAKE_VALIDATE (pos, obj, CLOSUREP)  #define SCM_VALIDATE_CLOSURE(pos, obj) SCM_MAKE_VALIDATE_MSG (pos, obj, CLOSUREP, "closure")
397    
398  #define SCM_VALIDATE_PROC(pos, proc) \  #define SCM_VALIDATE_PROC(pos, proc) \
399    do { \    do { \
# Line 400  Line 405 
405      SCM_ASSERT (SCM_NULLP (env) || SCM_CONSP (env), env, pos, FUNC_NAME); \      SCM_ASSERT (SCM_NULLP (env) || SCM_CONSP (env), env, pos, FUNC_NAME); \
406    } while (0)    } while (0)
407    
408  #define SCM_VALIDATE_HOOK(pos, a) SCM_MAKE_VALIDATE (pos, a, HOOKP)  #define SCM_VALIDATE_HOOK(pos, a) SCM_MAKE_VALIDATE_MSG (pos, a, HOOKP, "hook")
409    
410  #define SCM_VALIDATE_RGXP(pos, a) SCM_MAKE_VALIDATE (pos, a, RGXP)  #define SCM_VALIDATE_RGXP(pos, a) SCM_MAKE_VALIDATE_MSG (pos, a, RGXP, "regexp")
411    
412  #define SCM_VALIDATE_DIR(pos, port) SCM_MAKE_VALIDATE (pos, port, DIRP)  #define SCM_VALIDATE_DIR(pos, port) SCM_MAKE_VALIDATE_MSG (pos, port, DIRP, "directory port")
413    
414  #define SCM_VALIDATE_PORT(pos, port) SCM_MAKE_VALIDATE (pos, port, PORTP)  #define SCM_VALIDATE_PORT(pos, port) SCM_MAKE_VALIDATE_MSG (pos, port, PORTP, "port")
415    
416  #define SCM_VALIDATE_INPUT_PORT(pos, port) \  #define SCM_VALIDATE_INPUT_PORT(pos, port) \
417    SCM_MAKE_VALIDATE (pos, port, INPUT_PORT_P)    SCM_MAKE_VALIDATE_MSG (pos, port, INPUT_PORT_P, "input port")
418    
419  #define SCM_VALIDATE_OUTPUT_PORT(pos, port) \  #define SCM_VALIDATE_OUTPUT_PORT(pos, port) \
420    SCM_MAKE_VALIDATE (pos, port, OUTPUT_PORT_P)    SCM_MAKE_VALIDATE_MSG (pos, port, OUTPUT_PORT_P, "output port")
421    
422  #define SCM_VALIDATE_FPORT(pos, port) SCM_MAKE_VALIDATE (pos, port, FPORTP)  #define SCM_VALIDATE_FPORT(pos, port) SCM_MAKE_VALIDATE_MSG (pos, port, FPORTP, "file port")
423    
424  #define SCM_VALIDATE_OPFPORT(pos, port) SCM_MAKE_VALIDATE (pos, port, OPFPORTP)  #define SCM_VALIDATE_OPFPORT(pos, port) SCM_MAKE_VALIDATE_MSG (pos, port, OPFPORTP, "open file port")
425    
426  #define SCM_VALIDATE_OPINPORT(pos, port) \  #define SCM_VALIDATE_OPINPORT(pos, port) \
427    SCM_MAKE_VALIDATE (pos, port, OPINPORTP)    SCM_MAKE_VALIDATE_MSG (pos, port, OPINPORTP, "open input port")
428    
429  #define SCM_VALIDATE_OPENPORT(pos, port) \  #define SCM_VALIDATE_OPENPORT(pos, port) \
430    do { \    do { \
# Line 427  Line 432 
432                  port, pos, FUNC_NAME); \                  port, pos, FUNC_NAME); \
433    } while (0)    } while (0)
434    
435  #define SCM_VALIDATE_OPPORT(pos, port) SCM_MAKE_VALIDATE (pos, port, OPPORTP)  #define SCM_VALIDATE_OPPORT(pos, port) SCM_MAKE_VALIDATE_MSG (pos, port, OPPORTP, "open port")
436    
437  #define SCM_VALIDATE_OPOUTPORT(pos, port) \  #define SCM_VALIDATE_OPOUTPORT(pos, port) \
438    SCM_MAKE_VALIDATE (pos, port, OPOUTPORTP)    SCM_MAKE_VALIDATE_MSG (pos, port, OPOUTPORTP, "open output port")
439    
440  #define SCM_VALIDATE_OPOUTSTRPORT(pos, port) \  #define SCM_VALIDATE_OPOUTSTRPORT(pos, port) \
441    SCM_MAKE_VALIDATE (pos, port, OPOUTSTRPORTP)    SCM_MAKE_VALIDATE_MSG (pos, port, OPOUTSTRPORTP, "open output string port")
442    
443  #define SCM_VALIDATE_FLUID(pos, fluid) SCM_MAKE_VALIDATE (pos, fluid, FLUIDP)  #define SCM_VALIDATE_FLUID(pos, fluid) SCM_MAKE_VALIDATE_MSG (pos, fluid, FLUIDP, "fluid")
444    
445  #define SCM_VALIDATE_KEYWORD(pos, v) SCM_MAKE_VALIDATE (pos, v, KEYWORDP)  #define SCM_VALIDATE_KEYWORD(pos, v) SCM_MAKE_VALIDATE_MSG (pos, v, KEYWORDP, "keyword")
446    
447  #define SCM_VALIDATE_STACK(pos, v) SCM_MAKE_VALIDATE (pos, v, STACKP)  #define SCM_VALIDATE_STACK(pos, v) SCM_MAKE_VALIDATE_MSG (pos, v, STACKP, "stack")
448    
449  #define SCM_VALIDATE_FRAME(pos, v) SCM_MAKE_VALIDATE (pos, v, FRAMEP)  #define SCM_VALIDATE_FRAME(pos, v) SCM_MAKE_VALIDATE_MSG (pos, v, FRAMEP, "frame")
450    
451  #define SCM_VALIDATE_RSTATE(pos, v) SCM_MAKE_VALIDATE (pos, v, RSTATEP)  #define SCM_VALIDATE_RSTATE(pos, v) SCM_MAKE_VALIDATE_MSG (pos, v, RSTATEP, "random-generator-state")
452    
453  #define SCM_VALIDATE_ARRAY(pos, v) \  #define SCM_VALIDATE_ARRAY(pos, v) \
454    do { \    do { \
# Line 452  Line 457 
457                  v, pos, FUNC_NAME); \                  v, pos, FUNC_NAME); \
458    } while (0)    } while (0)
459    
460  #define SCM_VALIDATE_VECTOR(pos, v) SCM_MAKE_VALIDATE (pos, v, VECTORP)  #define SCM_VALIDATE_VECTOR(pos, v) SCM_MAKE_VALIDATE_MSG (pos, v, VECTORP, "vector")
461    
462  #define SCM_VALIDATE_VECTOR_OR_DVECTOR(pos, v) \  #define SCM_VALIDATE_VECTOR_OR_DVECTOR(pos, v) \
463    do { \    do { \
# Line 461  Line 466 
466                  v, pos, FUNC_NAME); \                  v, pos, FUNC_NAME); \
467    } while (0)    } while (0)
468    
469  #define SCM_VALIDATE_STRUCT(pos, v) SCM_MAKE_VALIDATE (pos, v, STRUCTP)  #define SCM_VALIDATE_STRUCT(pos, v) SCM_MAKE_VALIDATE_MSG (pos, v, STRUCTP, "struct")
470    
471  #define SCM_VALIDATE_VTABLE(pos, v) \  #define SCM_VALIDATE_VTABLE(pos, v) \
472    do { \    do { \

Legend:
Removed from v.1.40  
changed lines
  Added in v.1.41

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26