Author: yamakenz
Date: Fri Aug 10 13:02:15 2007
New Revision: 4812

Modified:
   trunk/uim/uim-key.c
   trunk/uim/uim-scm.c
   trunk/uim/uim-scm.h

Log:
* uim/uim-scm.h
  - (uim_scm_error, uim_scm_error_obj): New function decl
* uim/uim-scm.c
  - (struct uim_scm_error_args): Rename to uim_scm_error_obj_args
  - (struct uim_scm_error_obj_args): Renamed from uim_scm_error_args
  - (uim_scm_error, uim_scm_error_internal): New function
  - (uim_scm_error_obj):
    * Renamed from uim_scm_error()
    * Make public
  - (uim_scm_error_obj_internal): Renamed from uim_scm_error_internal()
  - (uim_scm_c_int_internal, uim_scm_refer_c_str_internal,
    uim_scm_c_ptr, uim_scm_c_func_ptr): Follow the renaming
* uim/uim-key.c
  - (define_key):
    * Follow the renaming
    * Error if invalid form


Modified: trunk/uim/uim-key.c
==============================================================================
--- trunk/uim/uim-key.c (original)
+++ trunk/uim/uim-key.c Fri Aug 10 13:02:15 2007
@@ -410,13 +410,8 @@
 {
   uim_lisp form, predicate_sym, sources;
 
-  if (uim_scm_length(args) != 2) {
-#if 0
-    uim_scm_error("define-key: invalid form", args);
-#else
-    return uim_scm_f();
-#endif
-  }
+  if (uim_scm_length(args) != 2)
+    uim_scm_error_obj("define-key: invalid form", args);
 
   predicate_sym = CAR(args);
   sources = CAR(CDR(args));

Modified: trunk/uim/uim-scm.c
==============================================================================
--- trunk/uim/uim-scm.c (original)
+++ trunk/uim/uim-scm.c Fri Aug 10 13:02:15 2007
@@ -65,12 +65,12 @@
 static uim_lisp protected;
 static uim_bool initialized, sscm_is_exit_with_fatal_error;
 
-static void uim_scm_error(const char *msg, uim_lisp errobj);
-struct uim_scm_error_args {
+static void *uim_scm_error_internal(const char *msg);
+struct uim_scm_error_obj_args {
   const char *msg;
   uim_lisp errobj;
 };
-static void *uim_scm_error_internal(struct uim_scm_error_args *args);
+static void *uim_scm_error_obj_internal(struct uim_scm_error_obj_args *args);
 
 struct call_args {
   uim_lisp proc;
@@ -108,10 +108,27 @@
 };
 static void *uim_scm_cons_internal(struct cons_args *args);
 
-static void
-uim_scm_error(const char *msg, uim_lisp errobj)
+
+void
+uim_scm_error(const char *msg)
+{
+  assert(uim_scm_gc_any_contextp());
+  assert(msg);
+
+  
uim_scm_call_with_gc_ready_stack((uim_gc_gate_func_ptr)uim_scm_error_internal, 
msg);
+}
+
+static void *
+uim_scm_error_internal(const char *msg)
+{
+  scm_plain_error(msg);
+  SCM_NOTREACHED;
+}
+
+void
+uim_scm_error_obj(const char *msg, uim_lisp errobj)
 {
-  struct uim_scm_error_args args;
+  struct uim_scm_error_obj_args args;
 
   assert(uim_scm_gc_any_contextp());
   assert(msg);
@@ -119,11 +136,11 @@
 
   args.msg = msg;
   args.errobj = errobj;
-  
uim_scm_call_with_gc_ready_stack((uim_gc_gate_func_ptr)uim_scm_error_internal, 
&args);
+  
uim_scm_call_with_gc_ready_stack((uim_gc_gate_func_ptr)uim_scm_error_obj_internal,
 &args);
 }
 
 static void *
-uim_scm_error_internal(struct uim_scm_error_args *args)
+uim_scm_error_obj_internal(struct uim_scm_error_obj_args *args)
 {
   /* FIXME: don't terminate the process */
   scm_error_obj(NULL, args->msg, (ScmObj)args->errobj);
@@ -172,7 +189,7 @@
   integer = (uim_lisp)uim_lisp_integer;
 
   if (!SCM_INTP((ScmObj)integer))
-    uim_scm_error("uim_scm_c_int: number required but got ", integer);
+    uim_scm_error_obj("uim_scm_c_int: number required but got ", integer);
 
   c_int = SCM_INT_VALUE((ScmObj)integer);
   return (void *)(intptr_t)c_int;
@@ -228,8 +245,8 @@
   } else if (SCM_SYMBOLP((ScmObj)str)) {
     c_str = SCM_SYMBOL_NAME((ScmObj)str);
   } else {
-    uim_scm_error("uim_scm_refer_c_str: string or symbol required but got ",
-                  str);
+    uim_scm_error_obj("uim_scm_refer_c_str: string or symbol required but got 
",
+                     str);
     SCM_NOTREACHED;
   }
 
@@ -297,7 +314,7 @@
   assert(uim_scm_gc_protectedp(ptr));
 
   if (!SCM_C_POINTERP((ScmObj)ptr))
-    uim_scm_error("uim_scm_c_ptr: C pointer required but got ", ptr);
+    uim_scm_error_obj("uim_scm_c_ptr: C pointer required but got ", ptr);
 
   return SCM_C_POINTER_VALUE((ScmObj)ptr);
 }
@@ -324,8 +341,7 @@
   assert(uim_scm_gc_protectedp(func_ptr));
 
   if (!SCM_C_FUNCPOINTERP((ScmObj)func_ptr))
-    uim_scm_error("uim_scm_c_func_ptr: C function pointer required but got ",
-                  func_ptr);
+    uim_scm_error_obj("uim_scm_c_func_ptr: C function pointer required but got 
", func_ptr);
 
   return SCM_C_FUNCPOINTER_VALUE((ScmObj)func_ptr);
 }

Modified: trunk/uim/uim-scm.h
==============================================================================
--- trunk/uim/uim-scm.h (original)
+++ trunk/uim/uim-scm.h Fri Aug 10 13:02:15 2007
@@ -79,12 +79,14 @@
 #endif
 
 
+/* subsystem interfaces */
 uim_bool uim_scm_is_initialized(void);
 uim_bool
 uim_scm_is_alive(void);
 void
 uim_scm_set_lib_path(const char *path);
 
+/* GC protections */
 void
 uim_scm_gc_protect(uim_lisp *location);
 void uim_scm_gc_unprotect(uim_lisp *location);
@@ -97,6 +99,11 @@
   (uim_scm_is_initialized()                                            \
    && (!uim_scm_gc_protected_contextp() || uim_scm_gc_protected_contextp()))
 
+/* 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);
+
 /* evaluations */
 uim_lisp uim_scm_symbol_value(const char *symbol_str);
 uim_bool uim_scm_symbol_value_bool(const char *symbol_str);
@@ -119,8 +126,6 @@
 uim_lisp uim_scm_callf_with_guard(uim_lisp failed,
                                   const char *proc, const char *args_fmt, ...);
 
-void uim_scm_ensure(uim_bool cond);
-
 /* type conversions */
 uim_bool
 uim_scm_c_bool(uim_lisp val);
@@ -153,6 +158,7 @@
 uim_lisp
 uim_scm_make_func_ptr(uim_func_ptr func_ptr);
 
+/* procedure initializers */
 void
 uim_scm_init_subr_0(const char *name, uim_lisp (*fcn)(void));
 void 

Reply via email to