mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-06-10 14:00:21 +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}))}.
|
||||
@end deftypefn
|
||||
|
||||
@deftypefn {C Function} SCM scm_from_locale_keyword (const char *str)
|
||||
@deftypefnx {C Function} SCM scm_from_locale_keywordn (const char *str, size_t len)
|
||||
@deftypefn {C Function} SCM scm_from_locale_keyword (const char *name)
|
||||
@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
|
||||
(@var{str}))} and @code{scm_symbol_to_keyword (scm_from_locale_symboln
|
||||
(@var{str}, @var{len}))}, respectively.
|
||||
(@var{name}))} and @code{scm_symbol_to_keyword (scm_from_locale_symboln
|
||||
(@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
|
||||
|
||||
@node Other Types
|
||||
|
|
|
@ -101,15 +101,27 @@ scm_is_keyword (SCM val)
|
|||
}
|
||||
|
||||
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_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 */
|
||||
|
|
|
@ -36,8 +36,10 @@ SCM_API SCM scm_symbol_to_keyword (SCM symbol);
|
|||
SCM_API SCM scm_keyword_to_symbol (SCM keyword);
|
||||
|
||||
SCM_API int scm_is_keyword (SCM val);
|
||||
SCM_API SCM scm_from_locale_keyword (const char *str);
|
||||
SCM_API SCM scm_from_locale_keywordn (const char *str, size_t len);
|
||||
SCM_API SCM scm_from_locale_keyword (const char *name);
|
||||
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);
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue