diff options
author | Andy Wingo <wingo@pobox.com> | 2013-05-05 17:52:59 +0200 |
---|---|---|
committer | Andy Wingo <wingo@pobox.com> | 2013-06-09 19:50:33 +0200 |
commit | e2cbf527c48fba803ef0bada712c5514f45ec4e4 (patch) | |
tree | 4b11958f5062f1fbe46b977e1a1ef4ee27ea32cd /libguile/procprop.c | |
parent | cb86cbd71db17273f6dfdfdecae450515cbdfc12 (diff) | |
download | guile-e2cbf527c48fba803ef0bada712c5514f45ec4e4.tar.gz |
move procedure-name and procedure-source to procprop.c
* libguile/procprop.h:
* libguile/procprop.c (scm_procedure_name, scm_procedure_source): Move
these functions here, from debug.[ch].
Diffstat (limited to 'libguile/procprop.c')
-rw-r--r-- | libguile/procprop.c | 45 |
1 files changed, 44 insertions, 1 deletions
diff --git a/libguile/procprop.c b/libguile/procprop.c index d37495b2b..472a1cabd 100644 --- a/libguile/procprop.c +++ b/libguile/procprop.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1995,1996,1998,2000,2001,2003,2004, 2006, 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc. +/* Copyright (C) 1995,1996,1998,2000,2001,2003,2004, 2006, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public License @@ -212,8 +212,51 @@ SCM_DEFINE (scm_set_procedure_property_x, "set-procedure-property!", 3, 0, 0, } #undef FUNC_NAME + +SCM_SYMBOL (scm_sym_source, "source"); + + +SCM_DEFINE (scm_procedure_name, "procedure-name", 1, 0, 0, + (SCM proc), + "Return the name of the procedure @var{proc}") +#define FUNC_NAME s_scm_procedure_name +{ + SCM_VALIDATE_PROC (1, proc); + while (SCM_STRUCTP (proc) && SCM_STRUCT_APPLICABLE_P (proc)) + proc = SCM_STRUCT_PROCEDURE (proc); + return scm_procedure_property (proc, scm_sym_name); +} +#undef FUNC_NAME + + +SCM_DEFINE (scm_procedure_source, "procedure-source", 1, 0, 0, + (SCM proc), + "Return the source of the procedure @var{proc}.") +#define FUNC_NAME s_scm_procedure_source +{ + SCM src; + SCM_VALIDATE_PROC (1, proc); + + do + { + src = scm_procedure_property (proc, scm_sym_source); + if (scm_is_true (src)) + return src; + + if (SCM_STRUCTP (proc) && SCM_STRUCT_APPLICABLE_P (proc) + && SCM_HEAP_OBJECT_P ((proc = SCM_STRUCT_PROCEDURE (proc)))) + continue; + } + while (0); + + return SCM_BOOL_F; +} +#undef FUNC_NAME + + + void scm_init_procprop () |