Author: yamakenz
Date: Mon Aug 27 19:23:27 2007
New Revision: 4907

Modified:
   trunk/doc/COMPATIBILITY
   trunk/uim/uim-scm-abbrev.h
   trunk/uim/uim-scm-sigscheme.c
   trunk/uim/uim-scm.h
   trunk/uim/uim.c

Log:
* uim/uim-scm.h
  - (uim_scm_listp): New function decl
  - (uim_scm_ensure): Removed
  - (UIM_SCM_ENSURE, UIM_SCM_ENSURE_OBJ, UIM_SCM_ENSURE_TYPE): New macro
* uim/uim-scm-sigscheme.c
  - (uim_scm_listp): New function
  - (uim_scm_ensure): Removed
  - (uim_scm_vector2array): Follow the removal of uim_scm_ensure()
  - (uim_scm_callf_internal): Add format string 'l' for 'long'
* uim/uim-scm-abbrev.h
  - (ERROR, ERROR_OBJ, ENSURE, ENSURE_OBJ, ENSURE_TYPE, C_BOOL,
    C_INT, C_CHAR, C_STR, REFER_C_STR, C_SYM, C_PTR, C_FPTR, LISTP,
    VECTOR_REF, VECTOR_SET): New macro
* uim/uim.c
  - (uim_get_candidate_internal): Follow the removal of uim_scm_ensure()
* doc/COMPATIBILITY
  - Update "uim-scm API reorganization in uim 1.5.0"


Modified: trunk/doc/COMPATIBILITY
==============================================================================
--- trunk/doc/COMPATIBILITY     (original)
+++ trunk/doc/COMPATIBILITY     Mon Aug 27 19:23:27 2007
@@ -430,7 +430,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, ac4870, ac4871, ac4873, ac4875, ac4877, ac4878, ac4881, 
ac4882, ac4884, ac4885
+Revision: ac4333, ac4334, ac4339, ac4347, ac4351-ac4353, ac4355, ac4444, 
ac4446, ac4751, ac4761, ac4764, ac4788, ac4808, ac4812, ac4813, ac4815, ac4817, 
ac4819, ac4821, ac4830, ac4870, ac4871, ac4873, ac4875, ac4877, ac4878, ac4881, 
ac4882, ac4884, ac4885, ac4907
 Date: 2007-01-09 -
 Modifier: YamaKen
 Related: uim-scm API truth predicates reorganization in uim 1.5.0
@@ -439,7 +439,6 @@
 URL:
 Changes:
       (new) uim_scm_is_initialized()
-      (new) uim_scm_ensure()
       (new) uim_scm_symbolp()
       (new) uim_scm_gc_protectedp()
       (new) uim_scm_gc_protected_contextp()
@@ -471,12 +470,26 @@
       (new) uim_scm_set_car()
       (new) uim_scm_set_cdr()
       (new) uim_scm_intp()
+      (new) uim_scm_listp()
       (new) uim_scm_init_proc0()
       (new) uim_scm_init_proc1()
       (new) uim_scm_init_proc2()
       (new) uim_scm_init_proc3()
       (new) uim_scm_init_proc4()
       (new) uim_scm_init_proc5()
+      (new) ERROR()
+      (new) ERROR_OBJ()
+      (new) ENSURE()
+      (new) ENSURE_OBJ()
+      (new) ENSURE_TYPE()
+      (new) C_BOOL()
+      (new) C_INT()
+      (new) C_CHAR()
+      (new) C_STR()
+      (new) REFER_C_STR()
+      (new) C_SYM()
+      (new) C_PTR()
+      (new) C_FPTR()
       (new) MAKE_BOOL()
       (new) MAKE_INT()
       (new) MAKE_CHAR()
@@ -493,6 +506,7 @@
       (new) FPTRP()
       (new) NULLP()
       (new) CONSP()
+      (new) LISTP()
       (new) EQ()
       (new) CAR()
       (new) CDR()
@@ -505,6 +519,8 @@
       (new) LIST4()
       (new) LIST5()
       (new) QUOTE()
+      (new) VECTOR_REF()
+      (new) VECTOR_SET()
   (changed) uim_scm_length()
   (deprecated) uim_scm_null_list()
   (deprecated) uim_scm_integerp()

Modified: trunk/uim/uim-scm-abbrev.h
==============================================================================
--- trunk/uim/uim-scm-abbrev.h  (original)
+++ trunk/uim/uim-scm-abbrev.h  Mon Aug 27 19:23:27 2007
@@ -38,6 +38,21 @@
 extern "C" {
 #endif
 
+#define ERROR       uim_scm_error
+#define ERROR_OBJ   uim_scm_error_obj
+#define ENSURE      UIM_SCM_ENSURE
+#define ENSURE_OBJ  UIM_SCM_ENSURE_OBJ
+#define ENSURE_TYPE UIM_SCM_ENSURE_TYPE
+
+#define C_BOOL uim_scm_c_bool
+#define C_INT  uim_scm_c_int
+#define C_CHAR uim_scm_c_char
+#define C_STR  uim_scm_c_str
+#define REFER_C_STR uim_scm_refer_c_str
+#define C_SYM  uim_scm_c_symbol
+#define C_PTR  uim_scm_c_ptr
+#define C_FPTR uim_scm_c_func_ptr
+
 #define MAKE_BOOL uim_scm_make_bool
 #define MAKE_INT  uim_scm_make_int
 #define MAKE_CHAR uim_scm_make_char
@@ -56,6 +71,7 @@
 #define FPTRP     uim_scm_func_ptrp
 #define NULLP     uim_scm_nullp
 #define CONSP     uim_scm_consp
+#define LISTP     uim_scm_listp    /* does not detect circular list */
 #define TRUEP     uim_scm_truep    /* (if obj #t #f) */
 #define FALSEP    uim_scm_falsep
 #define EQ        uim_scm_eq
@@ -71,6 +87,9 @@
 #define LIST4     uim_scm_list4
 #define LIST5     uim_scm_list5
 #define QUOTE     uim_scm_quote
+
+#define VECTOR_REF uim_scm_vector_ref
+#define VECTOR_SET uim_scm_vector_set
 
 #ifdef __cplusplus
 }

Modified: trunk/uim/uim-scm-sigscheme.c
==============================================================================
--- trunk/uim/uim-scm-sigscheme.c       (original)
+++ trunk/uim/uim-scm-sigscheme.c       Mon Aug 27 19:23:27 2007
@@ -173,14 +173,6 @@
   SCM_NOTREACHED;
 }
 
-void
-uim_scm_ensure(uim_bool cond)
-{
-  assert(uim_scm_gc_protected_contextp());
-
-  SCM_ENSURE(cond);
-}
-
 /* can be passed to uim_scm_list2null_term_array() */
 long
 uim_scm_c_bool(uim_lisp val)
@@ -791,7 +783,7 @@
   assert(len);
   assert(conv || !conv);
 
-  uim_scm_ensure(uim_scm_vectorp(vec));
+  UIM_SCM_ENSURE_TYPE(vector, vec);
 
   args.vec = vec;
   args.len = len;
@@ -853,6 +845,15 @@
 }
 
 uim_bool
+uim_scm_listp(uim_lisp obj)
+{
+  assert(uim_scm_gc_any_contextp());
+
+  /* does not detect circular list */
+  return (SCM_NULLP((ScmObj)obj) || SCM_CONSP((ScmObj)obj));
+}
+
+uim_bool
 uim_scm_intp(uim_lisp obj)
 {
   assert(uim_scm_gc_any_contextp());
@@ -1026,6 +1027,10 @@
 
     case 'i':
       arg = SCM_MAKE_INT(va_arg(args->args, int));
+      break;
+
+    case 'l':
+      arg = SCM_MAKE_INT(va_arg(args->args, long));
       break;
 
     case 'j':

Modified: trunk/uim/uim-scm.h
==============================================================================
--- trunk/uim/uim-scm.h (original)
+++ trunk/uim/uim-scm.h Mon Aug 27 19:23:27 2007
@@ -111,7 +111,12 @@
 /* errors: can be caught by SRFI-34 'guard' */
 void uim_scm_error(const char *msg);
 void uim_scm_error_obj(const char *msg, uim_lisp errobj);
-void uim_scm_ensure(uim_bool cond);
+#define UIM_SCM_ENSURE(cond, msg)                                      \
+  ((cond) || (uim_scm_error(msg), UIM_TRUE))
+#define UIM_SCM_ENSURE_OBJ(cond, msg, obj)                             \
+  ((cond) || (uim_scm_error_obj((msg), (obj)), UIM_TRUE))
+#define UIM_SCM_ENSURE_TYPE(type, obj)                                 \
+  UIM_SCM_ENSURE_OBJ(uim_scm_##type##p(obj), #type " required but got", (obj))
 
 /* evaluations */
 uim_lisp uim_scm_symbol_value(const char *symbol_str);
@@ -218,6 +223,7 @@
 uim_scm_nullp(uim_lisp obj);
 uim_bool
 uim_scm_consp(uim_lisp obj);
+uim_bool uim_scm_listp(uim_lisp obj);  /* does not detect circular list */
 uim_bool
 uim_scm_intp(uim_lisp obj);
 uim_bool uim_scm_charp(uim_lisp obj);

Modified: trunk/uim/uim.c
==============================================================================
--- trunk/uim/uim.c     (original)
+++ trunk/uim/uim.c     Mon Aug 27 19:23:27 2007
@@ -390,7 +390,7 @@
   uc = args->uc;
   triple = uim_scm_callf("get-candidate", "pii",
                         uc, args->index, args->enum_hint);
-  uim_scm_ensure(uim_scm_length(triple) == 3);
+  ENSURE((uim_scm_length(triple) == 3), "invalid candidate triple");
 
   cand = uim_malloc(sizeof(*cand));
   memset(cand, 0, sizeof(*cand));

Reply via email to