Author: yamakenz
Date: Fri Jul 20 12:06:46 2007
New Revision: 4764

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_make_str_directly): New function decl
* uim/uim-scm.c
  - (uim_scm_make_str_directly): New function
  - (uim_scm_make_str_directly_internal): New static function
* uim/uim-scm-abbrev.h
  - (MAKE_STR_DIRECTLY): New macro
* doc/COMPATIBILITY
  - Update


Modified: trunk/doc/COMPATIBILITY
==============================================================================
--- trunk/doc/COMPATIBILITY     (original)
+++ trunk/doc/COMPATIBILITY     Fri Jul 20 12:06:46 2007
@@ -312,7 +312,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
+Revision: ac4333, ac4334, ac4339, ac4347, ac4351-ac4353, ac4355, ac4444, 
ac4446, ac4751, ac4761, ac4764
 Date: 2007-01-09 -
 Modifier: YamaKen
 Related: SigScheme introduction to uim
@@ -329,6 +329,7 @@
       (new) uim_scm_callf()
       (new) uim_scm_callf_with_guard()
       (new) uim_scm_null()
+      (new) uim_scm_make_str_directly()
       (new) MAKE_BOOL()
       (new) MAKE_INT()
       (new) MAKE_STR()

Modified: trunk/uim/uim-scm-abbrev.h
==============================================================================
--- trunk/uim/uim-scm-abbrev.h  (original)
+++ trunk/uim/uim-scm-abbrev.h  Fri Jul 20 12:06:46 2007
@@ -41,6 +41,7 @@
 #define MAKE_BOOL uim_scm_make_bool
 #define MAKE_INT  uim_scm_make_int
 #define MAKE_STR  uim_scm_make_str
+#define MAKE_STR_DIRECTLY make_str_directly
 #define MAKE_SYM  uim_scm_make_symbol
 #define MAKE_PTR  uim_scm_make_ptr
 #define MAKE_FPTR uim_scm_make_func_ptr

Modified: trunk/uim/uim-scm.c
==============================================================================
--- trunk/uim/uim-scm.c (original)
+++ trunk/uim/uim-scm.c Fri Jul 20 12:06:46 2007
@@ -97,6 +97,7 @@
 static void *uim_scm_make_int_internal(void *integer);
 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);
 static void *uim_scm_make_symbol_internal(const char *name);
 static void *uim_scm_make_ptr_internal(void *ptr);
 static void *uim_scm_make_func_ptr_internal(uim_func_ptr func_ptr);
@@ -270,6 +271,21 @@
 uim_scm_make_str_internal(const char *str)
 {
   return (void *)SCM_MAKE_STRING_COPYING(str, SCM_STRLEN_UNKNOWN);
+}
+
+uim_lisp
+uim_scm_make_str_directly(char *str)
+{
+  assert(uim_scm_gc_any_contextp());
+  assert(str);
+
+  return 
(uim_lisp)uim_scm_call_with_gc_ready_stack((uim_gc_gate_func_ptr)uim_scm_make_str_directly_internal,
 (void *)str);
+}
+
+static void *
+uim_scm_make_str_directly_internal(char *str)
+{
+  return (void *)SCM_MAKE_STRING(str, SCM_STRLEN_UNKNOWN);
 }
 
 char *

Modified: trunk/uim/uim-scm.h
==============================================================================
--- trunk/uim/uim-scm.h (original)
+++ trunk/uim/uim-scm.h Fri Jul 20 12:06:46 2007
@@ -146,6 +146,7 @@
 uim_scm_refer_c_str(uim_lisp str);
 uim_lisp
 uim_scm_make_str(const char *str);
+uim_lisp uim_scm_make_str_directly(char *str);
 
 char *
 uim_scm_c_symbol(uim_lisp str);

Reply via email to