1
Fork 0
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:
Mark H Weaver 2011-03-09 01:14:43 -05:00
parent 139851f28b
commit 4db853d747
3 changed files with 36 additions and 10 deletions

View file

@ -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

View file

@ -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 */

View file

@ -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);