mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-06-12 23:00:22 +02:00
Add scm_from_latin1_keyword and scm_from_utf8_keyword
* libguile/keywords.c (scm_from_latin1_keyword, scm_from_utf8_keyword): New functions appropriate for use when keyword name is a constant. (scm_from_locale_keyword, scm_from_locale_keywordn): Change formal parameter from `str' to `name'. * libguile/keywords.h: Add prototypes for new functions. Change formal parameter of scm_from_locale_keyword* from `str' to `name'. * doc/ref/api-data.texi: Document new functions. Remind users that scm_from_locale_keyword should not be used when the name is a C string constant. Change formal parameter from `str' to `name'.
This commit is contained in:
parent
139851f28b
commit
4db853d747
3 changed files with 36 additions and 10 deletions
|
@ -5730,11 +5730,23 @@ Return the keyword with the same name as @var{symbol}.
|
||||||
Equivalent to @code{scm_is_true (scm_keyword_p (@var{obj}))}.
|
Equivalent to @code{scm_is_true (scm_keyword_p (@var{obj}))}.
|
||||||
@end deftypefn
|
@end deftypefn
|
||||||
|
|
||||||
@deftypefn {C Function} SCM scm_from_locale_keyword (const char *str)
|
@deftypefn {C Function} SCM scm_from_locale_keyword (const char *name)
|
||||||
@deftypefnx {C Function} SCM scm_from_locale_keywordn (const char *str, size_t len)
|
@deftypefnx {C Function} SCM scm_from_locale_keywordn (const char *name, size_t len)
|
||||||
Equivalent to @code{scm_symbol_to_keyword (scm_from_locale_symbol
|
Equivalent to @code{scm_symbol_to_keyword (scm_from_locale_symbol
|
||||||
(@var{str}))} and @code{scm_symbol_to_keyword (scm_from_locale_symboln
|
(@var{name}))} and @code{scm_symbol_to_keyword (scm_from_locale_symboln
|
||||||
(@var{str}, @var{len}))}, respectively.
|
(@var{name}, @var{len}))}, respectively.
|
||||||
|
|
||||||
|
Note that these functions should @emph{not} be used when @var{name} is a
|
||||||
|
C string constant, because there is no guarantee that the current locale
|
||||||
|
will match that of the source code. In such cases, use
|
||||||
|
@code{scm_from_latin1_keyword} or @code{scm_from_utf8_keyword}.
|
||||||
|
@end deftypefn
|
||||||
|
|
||||||
|
@deftypefn {C Function} SCM scm_from_latin1_keyword (const char *name)
|
||||||
|
@deftypefnx {C Function} SCM scm_from_utf8_keyword (const char *name)
|
||||||
|
Equivalent to @code{scm_symbol_to_keyword (scm_from_latin1_symbol
|
||||||
|
(@var{name}))} and @code{scm_symbol_to_keyword (scm_from_utf8_symbol
|
||||||
|
(@var{name}))}, respectively.
|
||||||
@end deftypefn
|
@end deftypefn
|
||||||
|
|
||||||
@node Other Types
|
@node Other Types
|
||||||
|
|
|
@ -101,15 +101,27 @@ scm_is_keyword (SCM val)
|
||||||
}
|
}
|
||||||
|
|
||||||
SCM
|
SCM
|
||||||
scm_from_locale_keyword (const char *str)
|
scm_from_locale_keyword (const char *name)
|
||||||
{
|
{
|
||||||
return scm_symbol_to_keyword (scm_from_locale_symbol (str));
|
return scm_symbol_to_keyword (scm_from_locale_symbol (name));
|
||||||
}
|
}
|
||||||
|
|
||||||
SCM
|
SCM
|
||||||
scm_from_locale_keywordn (const char *str, size_t len)
|
scm_from_locale_keywordn (const char *name, size_t len)
|
||||||
{
|
{
|
||||||
return scm_symbol_to_keyword (scm_from_locale_symboln (str, len));
|
return scm_symbol_to_keyword (scm_from_locale_symboln (name, len));
|
||||||
|
}
|
||||||
|
|
||||||
|
SCM
|
||||||
|
scm_from_latin1_keyword (const char *name)
|
||||||
|
{
|
||||||
|
return scm_symbol_to_keyword (scm_from_latin1_symbol (name));
|
||||||
|
}
|
||||||
|
|
||||||
|
SCM
|
||||||
|
scm_from_utf8_keyword (const char *name)
|
||||||
|
{
|
||||||
|
return scm_symbol_to_keyword (scm_from_utf8_symbol (name));
|
||||||
}
|
}
|
||||||
|
|
||||||
/* njrev: critical sections reviewed so far up to here */
|
/* njrev: critical sections reviewed so far up to here */
|
||||||
|
|
|
@ -36,8 +36,10 @@ SCM_API SCM scm_symbol_to_keyword (SCM symbol);
|
||||||
SCM_API SCM scm_keyword_to_symbol (SCM keyword);
|
SCM_API SCM scm_keyword_to_symbol (SCM keyword);
|
||||||
|
|
||||||
SCM_API int scm_is_keyword (SCM val);
|
SCM_API int scm_is_keyword (SCM val);
|
||||||
SCM_API SCM scm_from_locale_keyword (const char *str);
|
SCM_API SCM scm_from_locale_keyword (const char *name);
|
||||||
SCM_API SCM scm_from_locale_keywordn (const char *str, size_t len);
|
SCM_API SCM scm_from_locale_keywordn (const char *name, size_t len);
|
||||||
|
SCM_API SCM scm_from_latin1_keyword (const char *name);
|
||||||
|
SCM_API SCM scm_from_utf8_keyword (const char *name);
|
||||||
|
|
||||||
SCM_INTERNAL void scm_init_keywords (void);
|
SCM_INTERNAL void scm_init_keywords (void);
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue