Author: yamakenz
Date: Mon Aug 20 03:00:38 2007
New Revision: 4870
Modified:
trunk/doc/COMPATIBILITY
trunk/uim/uim-scm-abbrev.h
trunk/uim/uim-scm.c
trunk/uim/uim-scm.h
Log:
* uim/uim-scm.h
- (uim_scm_c_char, uim_scm_make_char, uim_scm_charp): New function decl
* uim/uim-scm.c
- (uim_scm_c_char, uim_scm_make_char, uim_scm_charp): New function
- (uim_scm_c_char_internal, uim_scm_make_char_internal): New static
function
* uim/uim-scm-abbrev.h
- (MAKE_CHAR, CHARP): New macro
* doc/COMPATIBILITY
- Update
Modified: trunk/doc/COMPATIBILITY
==============================================================================
--- trunk/doc/COMPATIBILITY (original)
+++ trunk/doc/COMPATIBILITY Mon Aug 20 03:00:38 2007
@@ -401,7 +401,7 @@
Affects: uim developers, IM developers
Updates: C API, libuim ABI
Version: 1.5.0
-Revision: ac4333, ac4334, ac4339, ac4347, ac4351-ac4353, ac4355, ac4444,
ac4446, ac4751, ac4761, ac4764, ac4788, ac4808, ac4812, ac4813, ac4815, ac4817,
ac4819, ac4821, ac4830
+Revision: ac4333, ac4334, ac4339, ac4347, ac4351-ac4353, ac4355, ac4444,
ac4446, ac4751, ac4761, ac4764, ac4788, ac4808, ac4812, ac4813, ac4815, ac4817,
ac4819, ac4821, ac4830, ac4870
Date: 2007-01-09 -
Modifier: YamaKen
Related: SigScheme introduction to uim
@@ -428,13 +428,18 @@
(new) uim_scm_array2list()
(new) uim_scm_null_term_array2list()
(new) uim_scm_list2null_term_array()
+ (new) uim_scm_c_char()
+ (new) uim_scm_make_char()
+ (new) uim_scm_charp()
(new) MAKE_BOOL()
(new) MAKE_INT()
+ (new) MAKE_CHAR()
(new) MAKE_STR()
(new) MAKE_SYM()
(new) MAKE_PTR()
(new) MAKE_FPTR()
(new) INTP()
+ (new) CHARP()
(new) STRP()
(new) SYMP()
(new) PTRP()
Modified: trunk/uim/uim-scm-abbrev.h
==============================================================================
--- trunk/uim/uim-scm-abbrev.h (original)
+++ trunk/uim/uim-scm-abbrev.h Mon Aug 20 03:00:38 2007
@@ -40,6 +40,7 @@
#define MAKE_BOOL uim_scm_make_bool
#define MAKE_INT uim_scm_make_int
+#define MAKE_CHAR uim_scm_make_char
#define MAKE_STR uim_scm_make_str
#define MAKE_STR_DIRECTLY uim_scm_make_str_directly
#define MAKE_SYM uim_scm_make_symbol
@@ -47,6 +48,7 @@
#define MAKE_FPTR uim_scm_make_func_ptr
#define INTP uim_scm_integerp
+#define CHARP uim_scm_charp
#define STRP uim_scm_stringp
#define SYMP uim_scm_symbolp
#define PTRP uim_scm_ptrp
Modified: trunk/uim/uim-scm.c
==============================================================================
--- trunk/uim/uim-scm.c (original)
+++ trunk/uim/uim-scm.c Mon Aug 20 03:00:38 2007
@@ -87,6 +87,8 @@
static void *uim_scm_c_int_internal(void *uim_lisp_integer);
static void *uim_scm_make_int_internal(void *integer);
+static void *uim_scm_c_char_internal(void *uim_lisp_ch);
+static void *uim_scm_make_char_internal(void *ch);
static const char *uim_scm_refer_c_str_internal(void *uim_lisp_str);
static void *uim_scm_make_str_internal(const char *str);
static void *uim_scm_make_str_directly_internal(char *str);
@@ -225,6 +227,45 @@
return (void *)SCM_MAKE_INT((intptr_t)integer);
}
+long
+uim_scm_c_char(uim_lisp ch)
+{
+ assert(uim_scm_gc_any_contextp());
+ assert(uim_scm_gc_protectedp(ch));
+
+ return
(long)(intptr_t)uim_scm_call_with_gc_ready_stack(uim_scm_c_char_internal, (void
*)ch);
+}
+
+static void *
+uim_scm_c_char_internal(void *uim_lisp_ch)
+{
+ scm_ichar_t ch;
+ uim_lisp ch_;
+
+ ch_ = (uim_lisp)uim_lisp_ch;
+
+ if (!SCM_CHARP((ScmObj)ch_))
+ uim_scm_error_obj("uim_scm_c_char: char required but got ", ch_);
+
+ ch = SCM_CHAR_VALUE((ScmObj)ch_);
+ return (void *)(intptr_t)ch;
+}
+
+uim_lisp
+uim_scm_make_char(long ch)
+{
+ assert(uim_scm_gc_any_contextp());
+
+ return (uim_lisp)uim_scm_call_with_gc_ready_stack(uim_scm_make_char_internal,
+ (void *)(intptr_t)ch);
+}
+
+static void *
+uim_scm_make_char_internal(void *ch)
+{
+ return (void *)SCM_MAKE_CHAR((scm_ichar_t)ch);
+}
+
char *
uim_scm_c_str(uim_lisp str)
{
@@ -740,6 +781,14 @@
assert(uim_scm_gc_any_contextp());
return (SCM_INTP((ScmObj)obj));
+}
+
+uim_bool
+uim_scm_charp(uim_lisp obj)
+{
+ assert(uim_scm_gc_any_contextp());
+
+ return (SCM_CHARP((ScmObj)obj));
}
uim_bool
Modified: trunk/uim/uim-scm.h
==============================================================================
--- trunk/uim/uim-scm.h (original)
+++ trunk/uim/uim-scm.h Mon Aug 20 03:00:38 2007
@@ -131,6 +131,9 @@
long uim_scm_c_int(uim_lisp integer);
uim_lisp uim_scm_make_int(long integer);
+long uim_scm_c_char(uim_lisp ch);
+uim_lisp uim_scm_make_char(long ch);
+
char *
uim_scm_c_str(uim_lisp str);
const char *
@@ -205,6 +208,7 @@
uim_scm_consp(uim_lisp obj);
uim_bool
uim_scm_integerp(uim_lisp obj);
+uim_bool uim_scm_charp(uim_lisp obj);
uim_bool
uim_scm_stringp(uim_lisp obj);
uim_bool uim_scm_symbolp(uim_lisp obj);