diff options
author | Andy Wingo <wingo@pobox.com> | 2011-10-24 18:29:45 +0200 |
---|---|---|
committer | Andy Wingo <wingo@pobox.com> | 2011-10-24 19:01:12 +0200 |
commit | 8b33752be7950b66bf0007e282eae3d13502f445 (patch) | |
tree | 2997cf207d1750b9644620379409328a9de71090 /libguile/procprop.c | |
parent | cf4c26625b901e3550c80bbf53c13189582f57a6 (diff) | |
download | guile-8b33752be7950b66bf0007e282eae3d13502f445.tar.gz |
slight scm_procedure_p, scm_i_procedure_arity refactor
* libguile/procs.c (scm_procedure_p):
* libguile/procprop.c (scm_i_procedure_arity): Refactor.
Diffstat (limited to 'libguile/procprop.c')
-rw-r--r-- | libguile/procprop.c | 21 |
1 files changed, 9 insertions, 12 deletions
diff --git a/libguile/procprop.c b/libguile/procprop.c index 8d5b1623d..2ad941d6a 100644 --- a/libguile/procprop.c +++ b/libguile/procprop.c @@ -48,23 +48,20 @@ scm_i_procedure_arity (SCM proc, int *req, int *opt, int *rest) { while (!SCM_PROGRAM_P (proc)) { - if (SCM_IMP (proc)) - return 0; - switch (SCM_TYP7 (proc)) + if (SCM_STRUCTP (proc)) { - case scm_tc7_smob: - if (!SCM_SMOB_APPLICABLE_P (proc)) - return 0; - proc = scm_i_smob_apply_trampoline (proc); - break; - case scm_tcs_struct: if (!SCM_STRUCT_APPLICABLE_P (proc)) return 0; proc = SCM_STRUCT_PROCEDURE (proc); - break; - default: - return 0; } + else if (SCM_HAS_TYP7 (proc, scm_tc7_smob)) + { + if (!SCM_SMOB_APPLICABLE_P (proc)) + return 0; + proc = scm_i_smob_apply_trampoline (proc); + } + else + return 0; } return scm_i_program_arity (proc, req, opt, rest); } |