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