mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-05-20 19:50:24 +02:00
Use string and symbol accessors with obarrays and keyword-dash-symbols
* libguile/deprecated.c (intern_obarray_soft): new function (scm_intern_obarray_soft, scm_string_to_obarray_symbol): use intern_obarray_soft (scm_gentemp): don't unpack string chars, use intern_obarray_soft * libguile/discouraged.c (scm_make_keyword_from_dash_symbol): use symbol accessor
This commit is contained in:
parent
1549532ccb
commit
7f5946427e
2 changed files with 19 additions and 15 deletions
|
@ -749,17 +749,13 @@ scm_sym2ovcell (SCM sym, SCM obarray)
|
||||||
return (SYMBOL . SCM_UNDEFINED). */
|
return (SYMBOL . SCM_UNDEFINED). */
|
||||||
|
|
||||||
|
|
||||||
SCM
|
static SCM
|
||||||
scm_intern_obarray_soft (const char *name,size_t len,SCM obarray,unsigned int softness)
|
intern_obarray_soft (SCM symbol, SCM obarray, unsigned int softness)
|
||||||
{
|
{
|
||||||
SCM symbol = scm_from_locale_symboln (name, len);
|
|
||||||
size_t raw_hash = scm_i_symbol_hash (symbol);
|
size_t raw_hash = scm_i_symbol_hash (symbol);
|
||||||
size_t hash;
|
size_t hash;
|
||||||
SCM lsym;
|
SCM lsym;
|
||||||
|
|
||||||
scm_c_issue_deprecation_warning ("`scm_intern_obarray_soft' is deprecated. "
|
|
||||||
"Use hashtables instead.");
|
|
||||||
|
|
||||||
if (scm_is_false (obarray))
|
if (scm_is_false (obarray))
|
||||||
{
|
{
|
||||||
if (softness)
|
if (softness)
|
||||||
|
@ -795,6 +791,18 @@ scm_intern_obarray_soft (const char *name,size_t len,SCM obarray,unsigned int so
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
SCM
|
||||||
|
scm_intern_obarray_soft (const char *name, size_t len, SCM obarray,
|
||||||
|
unsigned int softness)
|
||||||
|
{
|
||||||
|
SCM symbol = scm_from_locale_symboln (name, len);
|
||||||
|
|
||||||
|
scm_c_issue_deprecation_warning ("`scm_intern_obarray_soft' is deprecated. "
|
||||||
|
"Use hashtables instead.");
|
||||||
|
|
||||||
|
return intern_obarray_soft (symbol, obarray, softness);
|
||||||
|
}
|
||||||
|
|
||||||
SCM
|
SCM
|
||||||
scm_intern_obarray (const char *name,size_t len,SCM obarray)
|
scm_intern_obarray (const char *name,size_t len,SCM obarray)
|
||||||
{
|
{
|
||||||
|
@ -850,10 +858,7 @@ SCM_DEFINE (scm_string_to_obarray_symbol, "string->obarray-symbol", 2, 1, 0,
|
||||||
else if (scm_is_eq (o, SCM_BOOL_T))
|
else if (scm_is_eq (o, SCM_BOOL_T))
|
||||||
o = SCM_BOOL_F;
|
o = SCM_BOOL_F;
|
||||||
|
|
||||||
vcell = scm_intern_obarray_soft (scm_i_string_chars (s),
|
vcell = intern_obarray_soft (scm_string_to_symbol (s), o, softness);
|
||||||
scm_i_string_length (s),
|
|
||||||
o,
|
|
||||||
softness);
|
|
||||||
if (scm_is_false (vcell))
|
if (scm_is_false (vcell))
|
||||||
return vcell;
|
return vcell;
|
||||||
answer = SCM_CAR (vcell);
|
answer = SCM_CAR (vcell);
|
||||||
|
@ -1084,9 +1089,8 @@ SCM_DEFINE (scm_gentemp, "gentemp", 0, 2, 0,
|
||||||
{
|
{
|
||||||
SCM_VALIDATE_STRING (1, prefix);
|
SCM_VALIDATE_STRING (1, prefix);
|
||||||
len = scm_i_string_length (prefix);
|
len = scm_i_string_length (prefix);
|
||||||
if (len > MAX_PREFIX_LENGTH)
|
name = scm_to_locale_stringn (prefix, (size_t *)(&len));
|
||||||
name = SCM_MUST_MALLOC (MAX_PREFIX_LENGTH + SCM_INTBUFLEN);
|
name = scm_realloc (name, len + SCM_INTBUFLEN);
|
||||||
strncpy (name, scm_i_string_chars (prefix), len);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (SCM_UNBNDP (obarray))
|
if (SCM_UNBNDP (obarray))
|
||||||
|
@ -1108,7 +1112,7 @@ SCM_DEFINE (scm_gentemp, "gentemp", 0, 2, 0,
|
||||||
obarray,
|
obarray,
|
||||||
0);
|
0);
|
||||||
if (name != buf)
|
if (name != buf)
|
||||||
scm_must_free (name);
|
free (name);
|
||||||
return SCM_CAR (vcell);
|
return SCM_CAR (vcell);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -265,7 +265,7 @@ SCM_DEFINE (scm_make_keyword_from_dash_symbol, "make-keyword-from-dash-symbol",
|
||||||
SCM dash_string, non_dash_symbol;
|
SCM dash_string, non_dash_symbol;
|
||||||
|
|
||||||
SCM_ASSERT (scm_is_symbol (symbol)
|
SCM_ASSERT (scm_is_symbol (symbol)
|
||||||
&& ('-' == scm_i_symbol_chars(symbol)[0]),
|
&& (scm_i_symbol_ref (symbol, 0) == '-'),
|
||||||
symbol, SCM_ARG1, FUNC_NAME);
|
symbol, SCM_ARG1, FUNC_NAME);
|
||||||
|
|
||||||
dash_string = scm_symbol_to_string (symbol);
|
dash_string = scm_symbol_to_string (symbol);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue