diff options
-rw-r--r-- | libguile/deprecated.c | 64 | ||||
-rw-r--r-- | libguile/deprecated.h | 18 | ||||
-rw-r--r-- | libguile/read.c | 68 | ||||
-rw-r--r-- | libguile/srcprop.c | 38 | ||||
-rw-r--r-- | libguile/srcprop.h | 26 |
5 files changed, 132 insertions, 82 deletions
diff --git a/libguile/deprecated.c b/libguile/deprecated.c index 4d6027c35..a57de30b3 100644 --- a/libguile/deprecated.c +++ b/libguile/deprecated.c @@ -2499,6 +2499,70 @@ SCM_DEFINE (scm_primitive_property_del_x, "primitive-property-del!", 2, 0, 0, +SCM +scm_whash_get_handle (SCM whash, SCM key) +{ + scm_c_issue_deprecation_warning + ("The `scm_whash' API is deprecated. Use the `scm_hashq' API instead."); + + return scm_hashq_get_handle (whash, key); +} + +int +SCM_WHASHFOUNDP (SCM h) +{ + scm_c_issue_deprecation_warning + ("The `scm_whash' API is deprecated. Use the `scm_hashq' API instead."); + + return scm_is_true (h); +} + +SCM +SCM_WHASHREF (SCM whash, SCM handle) +{ + scm_c_issue_deprecation_warning + ("The `scm_whash' API is deprecated. Use the `scm_hashq' API instead."); + + return SCM_CDR (handle); +} + +void +SCM_WHASHSET (SCM whash, SCM handle, SCM obj) +{ + scm_c_issue_deprecation_warning + ("The `scm_whash' API is deprecated. Use the `scm_hashq' API instead."); + + SCM_SETCDR (handle, obj); +} + +SCM +scm_whash_create_handle (SCM whash, SCM key) +{ + scm_c_issue_deprecation_warning + ("The `scm_whash' API is deprecated. Use the `scm_hashq' API instead."); + + return scm_hashq_create_handle_x (whash, key, SCM_UNSPECIFIED); +} + +SCM +scm_whash_lookup (SCM whash, SCM obj) +{ + scm_c_issue_deprecation_warning + ("The `scm_whash' API is deprecated. Use the `scm_hashq' API instead."); + + return scm_hashq_ref (whash, obj, SCM_BOOL_F); +} + +void +scm_whash_insert (SCM whash, SCM key, SCM obj) +{ + scm_c_issue_deprecation_warning + ("The `scm_whash' API is deprecated. Use the `scm_hashq' API instead."); + + scm_hashq_set_x (whash, key, obj); +} + + void scm_i_init_deprecated () diff --git a/libguile/deprecated.h b/libguile/deprecated.h index 7deee359a..e0b13e375 100644 --- a/libguile/deprecated.h +++ b/libguile/deprecated.h @@ -752,6 +752,24 @@ SCM_DEPRECATED SCM scm_primitive_property_del_x (SCM prop, SCM obj); +/* {The old whash table interface} + * Deprecated, as the hash table interface is sufficient, and accessing + * handles of weak hash tables is no longer supported. + */ + +#define scm_whash_handle SCM + +SCM_DEPRECATED SCM scm_whash_get_handle (SCM whash, SCM key); +SCM_DEPRECATED int SCM_WHASHFOUNDP (SCM h); +SCM_DEPRECATED SCM SCM_WHASHREF (SCM whash, SCM handle); +SCM_DEPRECATED void SCM_WHASHSET (SCM whash, SCM handle, SCM obj); +SCM_DEPRECATED SCM scm_whash_create_handle (SCM whash, SCM key); +SCM_DEPRECATED SCM scm_whash_lookup (SCM whash, SCM obj); +SCM_DEPRECATED void scm_whash_insert (SCM whash, SCM key, SCM obj); + + + + void scm_i_init_deprecated (void); #endif diff --git a/libguile/read.c b/libguile/read.c index 4b6828b8a..b36c27c81 100644 --- a/libguile/read.c +++ b/libguile/read.c @@ -442,14 +442,14 @@ scm_read_sexp (scm_t_wchar chr, SCM port) exit: if (SCM_RECORD_POSITIONS_P) - scm_whash_insert (scm_source_whash, - ans, - scm_make_srcprops (line, column, - SCM_FILENAME (port), - SCM_COPY_SOURCE_P - ? ans2 - : SCM_UNDEFINED, - SCM_EOL)); + scm_hashq_set_x (scm_source_whash, + ans, + scm_make_srcprops (line, column, + SCM_FILENAME (port), + SCM_COPY_SOURCE_P + ? ans2 + : SCM_UNDEFINED, + SCM_EOL)); return ans; } #undef FUNC_NAME @@ -805,15 +805,15 @@ scm_read_quote (int chr, SCM port) p = scm_cons2 (p, scm_read_expression (port), SCM_EOL); if (SCM_RECORD_POSITIONS_P) - scm_whash_insert (scm_source_whash, p, - scm_make_srcprops (line, column, - SCM_FILENAME (port), - SCM_COPY_SOURCE_P - ? (scm_cons2 (SCM_CAR (p), - SCM_CAR (SCM_CDR (p)), - SCM_EOL)) - : SCM_UNDEFINED, - SCM_EOL)); + scm_hashq_set_x (scm_source_whash, p, + scm_make_srcprops (line, column, + SCM_FILENAME (port), + SCM_COPY_SOURCE_P + ? (scm_cons2 (SCM_CAR (p), + SCM_CAR (SCM_CDR (p)), + SCM_EOL)) + : SCM_UNDEFINED, + SCM_EOL)); return p; @@ -864,15 +864,15 @@ scm_read_syntax (int chr, SCM port) p = scm_cons2 (p, scm_read_expression (port), SCM_EOL); if (SCM_RECORD_POSITIONS_P) - scm_whash_insert (scm_source_whash, p, - scm_make_srcprops (line, column, - SCM_FILENAME (port), - SCM_COPY_SOURCE_P - ? (scm_cons2 (SCM_CAR (p), - SCM_CAR (SCM_CDR (p)), - SCM_EOL)) - : SCM_UNDEFINED, - SCM_EOL)); + scm_hashq_set_x (scm_source_whash, p, + scm_make_srcprops (line, column, + SCM_FILENAME (port), + SCM_COPY_SOURCE_P + ? (scm_cons2 (SCM_CAR (p), + SCM_CAR (SCM_CDR (p)), + SCM_EOL)) + : SCM_UNDEFINED, + SCM_EOL)); return p; @@ -1561,7 +1561,7 @@ recsexpr (SCM obj, long line, int column, SCM filename) /* If this sexpr is visible in the read:sharp source, we want to keep that information, so only record non-constant cons cells which haven't previously been read by the reader. */ - if (scm_is_false (scm_whash_lookup (scm_source_whash, obj))) + if (scm_is_false (scm_hashq_ref (scm_source_whash, obj, SCM_BOOL_F))) { if (SCM_COPY_SOURCE_P) { @@ -1585,13 +1585,13 @@ recsexpr (SCM obj, long line, int column, SCM filename) recsexpr (SCM_CAR (tmp), line, column, filename); copy = SCM_UNDEFINED; } - scm_whash_insert (scm_source_whash, - obj, - scm_make_srcprops (line, - column, - filename, - copy, - SCM_EOL)); + scm_hashq_set_x (scm_source_whash, + obj, + scm_make_srcprops (line, + column, + filename, + copy, + SCM_EOL)); } return obj; } diff --git a/libguile/srcprop.c b/libguile/srcprop.c index 003abc56d..f9b000c47 100644 --- a/libguile/srcprop.c +++ b/libguile/srcprop.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1995,1996,1997,1998,1999,2000,2001,2002, 2006, 2008, 2009, 2010 Free Software Foundation +/* Copyright (C) 1995,1996,1997,1998,1999,2000,2001,2002, 2006, 2008, 2009, 2010, 2011 Free Software Foundation * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public License @@ -180,10 +180,8 @@ SCM_DEFINE (scm_set_source_properties_x, "set-source-properties!", 2, 0, 0, "list for @var{obj}.") #define FUNC_NAME s_scm_set_source_properties_x { - SCM handle; SCM_VALIDATE_NIM (1, obj); - handle = scm_hashq_create_handle_x (scm_source_whash, obj, alist); - SCM_SETCDR (handle, alist); + scm_hashq_set_x (scm_source_whash, obj, alist); return alist; } #undef FUNC_NAME @@ -222,49 +220,43 @@ SCM_DEFINE (scm_set_source_property_x, "set-source-property!", 3, 0, 0, "@var{key} to @var{datum}. Normally, the key will be a symbol.") #define FUNC_NAME s_scm_set_source_property_x { - scm_whash_handle h; SCM p; SCM_VALIDATE_NIM (1, obj); - h = scm_whash_get_handle (scm_source_whash, obj); - if (SCM_WHASHFOUNDP (h)) - p = SCM_WHASHREF (scm_source_whash, h); - else - { - h = scm_whash_create_handle (scm_source_whash, obj); - p = SCM_EOL; - } + p = scm_hashq_ref (scm_source_whash, obj, SCM_EOL); if (scm_is_eq (scm_sym_line, key)) { if (SRCPROPSP (p)) SETSRCPROPLINE (p, scm_to_int (datum)); else - SCM_WHASHSET (scm_source_whash, h, - scm_make_srcprops (scm_to_int (datum), 0, - SCM_UNDEFINED, SCM_UNDEFINED, p)); + scm_hashq_set_x (scm_source_whash, obj, + scm_make_srcprops (scm_to_int (datum), 0, + SCM_UNDEFINED, SCM_UNDEFINED, p)); } else if (scm_is_eq (scm_sym_column, key)) { if (SRCPROPSP (p)) SETSRCPROPCOL (p, scm_to_int (datum)); else - SCM_WHASHSET (scm_source_whash, h, - scm_make_srcprops (0, scm_to_int (datum), - SCM_UNDEFINED, SCM_UNDEFINED, p)); + scm_hashq_set_x (scm_source_whash, obj, + scm_make_srcprops (0, scm_to_int (datum), + SCM_UNDEFINED, SCM_UNDEFINED, p)); } else if (scm_is_eq (scm_sym_copy, key)) { if (SRCPROPSP (p)) SETSRCPROPCOPY (p, datum); else - SCM_WHASHSET (scm_source_whash, h, scm_make_srcprops (0, 0, SCM_UNDEFINED, datum, p)); + scm_hashq_set_x (scm_source_whash, obj, + scm_make_srcprops (0, 0, SCM_UNDEFINED, datum, p)); } else { if (SRCPROPSP (p)) SETSRCPROPALIST (p, scm_acons (key, datum, SRCPROPALIST (p))); else - SCM_WHASHSET (scm_source_whash, h, scm_acons (key, datum, p)); + scm_hashq_set_x (scm_source_whash, obj, + scm_acons (key, datum, p)); } return SCM_UNSPECIFIED; } @@ -281,9 +273,9 @@ SCM_DEFINE (scm_cons_source, "cons-source", 3, 0, 0, SCM p, z; z = scm_cons (x, y); /* Copy source properties possibly associated with xorig. */ - p = scm_whash_lookup (scm_source_whash, xorig); + p = scm_hashq_ref (scm_source_whash, xorig, SCM_BOOL_F); if (scm_is_true (p)) - scm_whash_insert (scm_source_whash, z, p); + scm_hashq_set_x (scm_source_whash, z, p); return z; } #undef FUNC_NAME diff --git a/libguile/srcprop.h b/libguile/srcprop.h index 99b848244..5c9ccb960 100644 --- a/libguile/srcprop.h +++ b/libguile/srcprop.h @@ -3,7 +3,7 @@ #ifndef SCM_SRCPROP_H #define SCM_SRCPROP_H -/* Copyright (C) 1995,1996,2000,2001, 2006, 2008, 2009, 2010 Free Software Foundation, Inc. +/* Copyright (C) 1995,1996,2000,2001, 2006, 2008, 2009, 2010, 2011 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 @@ -27,30 +27,6 @@ -/* {The old whash table interface} - * *fixme* This is a temporary solution until weak hash table access - * has been optimized for speed (which is quite necessary, if they are - * used for recording of source code positions...) - */ - -#define scm_whash_handle SCM - -#define scm_whash_get_handle(whash, key) \ - scm_hashq_get_handle ((whash), (key)) -#define SCM_WHASHFOUNDP(h) (scm_is_true (h)) -#define SCM_WHASHREF(whash, handle) SCM_CDR (handle) -#define SCM_WHASHSET(whash, handle, obj) SCM_SETCDR (handle, obj) -#define scm_whash_create_handle(whash, key) \ - scm_hashq_create_handle_x ((whash), (key), SCM_UNSPECIFIED) -#define scm_whash_lookup(whash, obj) \ - scm_hashq_ref ((whash), (obj), SCM_BOOL_F) -#define scm_whash_insert(whash, key, obj) \ -do { \ - register SCM w = (whash); \ - SCM_WHASHSET (w, scm_whash_create_handle (w, key), obj); \ -} while (0) - - /* {Source properties} */ #define SCM_PROCTRACEP(x) (scm_is_true (scm_procedure_property (x, scm_sym_trace))) |