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

Reply via email to