]> gitweb @ CieloNegro.org - bindings-apr.git/commitdiff
Better making function synonyms be macros than handmade synonyms.
authorPHO <pho@cielonegro.org>
Tue, 31 Aug 2010 12:38:17 +0000 (21:38 +0900)
committerPHO <pho@cielonegro.org>
Tue, 31 Aug 2010 12:38:17 +0000 (21:38 +0900)
Bindings/APR/Global/Mutex.hsc
Bindings/APR/Portable.hsc
bindings-apr.cabal
cbits/helper_apr_global_mutex.c [new file with mode: 0644]
cbits/helper_apr_portable.c [new file with mode: 0644]

index fc19af712c033cb81a95608191b420f93d76e713..8e2c32943822601949f063158a454a4d4a97a7bb 100644 (file)
@@ -7,54 +7,13 @@ import Bindings.APR.ErrNo
 import Bindings.APR.Pools
 import Bindings.APR.Proc.Mutex
 
-#if !APR_PROC_MUTEX_IS_GLOBAL
+#opaque_t apr_global_mutex_t
 
-#  opaque_t apr_global_mutex_t
+#cinline apr_global_mutex_create    , Ptr (Ptr <apr_global_mutex_t>) -> Ptr CChar -> <apr_lockmech_e> -> Ptr <apr_pool_t> -> IO <apr_status_t>
+#cinline apr_global_mutex_child_init, Ptr (Ptr <apr_global_mutex_t>) -> Ptr CChar -> Ptr <apr_pool_t> -> IO <apr_status_t>
+#cinline apr_global_mutex_lock      , Ptr <apr_global_mutex_t> -> IO <apr_status_t>
+#cinline apr_global_mutex_trylock   , Ptr <apr_global_mutex_t> -> IO <apr_status_t>
+#cinline apr_global_mutex_unlock    , Ptr <apr_global_mutex_t> -> IO <apr_status_t>
+#cinline apr_global_mutex_destroy   , Ptr <apr_global_mutex_t> -> IO <apr_status_t>
 
-#  ccall apr_global_mutex_create    , Ptr (Ptr <apr_global_mutex_t>) -> Ptr CChar -> <apr_lockmech_e> -> Ptr <apr_pool_t> -> IO <apr_status_t>
-#  ccall apr_global_mutex_child_init, Ptr (Ptr <apr_global_mutex_t>) -> Ptr CChar -> Ptr <apr_pool_t> -> IO <apr_status_t>
-#  ccall apr_global_mutex_lock      , Ptr <apr_global_mutex_t> -> IO <apr_status_t>
-#  ccall apr_global_mutex_trylock   , Ptr <apr_global_mutex_t> -> IO <apr_status_t>
-#  ccall apr_global_mutex_unlock    , Ptr <apr_global_mutex_t> -> IO <apr_status_t>
-#  ccall apr_global_mutex_destroy   , Ptr <apr_global_mutex_t> -> IO <apr_status_t>
-
-#  ccall apr_global_mutex_pool_get  , Ptr <apr_global_mutex_t> -> IO (Ptr <apr_pool_t>)
-
-#else
-
-#  synonym_t apr_global_mutex_t, <apr_proc_mutex_t>
-
-c'apr_global_mutex_create :: Ptr (Ptr C'apr_global_mutex_t) -> Ptr CChar -> C'apr_lockmech_e -> Ptr C'apr_pool_t -> IO C'apr_status_t
-c'apr_global_mutex_create = c'apr_proc_mutex_create
-
-c'apr_global_mutex_child_init :: Ptr (Ptr C'apr_global_mutex_t) -> Ptr CChar -> Ptr C'apr_pool_t -> IO C'apr_status_t
-c'apr_global_mutex_child_init = c'apr_proc_mutex_child_init
-
-c'apr_global_mutex_lock :: Ptr C'apr_global_mutex_t -> IO C'apr_status_t
-c'apr_global_mutex_lock = c'apr_proc_mutex_lock
-
-c'apr_global_mutex_trylock :: Ptr C'apr_global_mutex_t -> IO C'apr_status_t
-c'apr_global_mutex_trylock = c'apr_proc_mutex_trylock
-
-c'apr_global_mutex_unlock :: Ptr C'apr_global_mutex_t -> IO C'apr_status_t
-c'apr_global_mutex_unlock = c'apr_proc_mutex_unlock
-
-c'apr_global_mutex_destroy :: Ptr C'apr_global_mutex_t -> IO C'apr_status_t
-c'apr_global_mutex_destroy = c'apr_proc_mutex_destroy
-
-c'apr_global_mutex_cleanup :: Ptr () -> IO C'apr_status_t
-c'apr_global_mutex_cleanup = c'apr_proc_mutex_cleanup
-
-c'apr_global_mutex_lockfile :: Ptr C'apr_global_mutex_t -> IO (Ptr CChar)
-c'apr_global_mutex_lockfile = c'apr_proc_mutex_lockfile
-
-c'apr_global_mutex_name :: Ptr C'apr_global_mutex_t -> IO (Ptr CChar)
-c'apr_global_mutex_name = c'apr_proc_mutex_name
-
-c'apr_global_mutex_defname :: IO (Ptr CChar)
-c'apr_global_mutex_defname = c'apr_proc_mutex_defname
-
-c'apr_global_mutex_pool_get :: Ptr C'apr_global_mutex_t -> IO (Ptr C'apr_pool_t)
-c'apr_global_mutex_pool_get = c'apr_proc_mutex_pool_get
-
-#endif
+#cinline apr_global_mutex_pool_get  , Ptr <apr_global_mutex_t> -> IO (Ptr <apr_pool_t>)
index 498b17d51633c0a2787b9ae473957c44b5fa3f3e..66288f5fb2c03c5f66219928df8811ca1d5560b2 100644 (file)
@@ -39,22 +39,8 @@ import Bindings.APR.Time
 #  field protocol, CInt
 #stoptype
 
-#if APR_PROC_MUTEX_IS_GLOBAL
-type C'apr_os_global_mutex_t = C'apr_os_proc_mutex_t
-
-c'apr_os_global_mutex_get :: Ptr C'apr_os_global_mutex_t -> Ptr C'apr_global_mutex_t -> IO C'apr_status_t
-c'apr_os_global_mutex_get = c'apr_os_proc_mutex_get
-#else
-#  starttype struct apr_os_global_mutex_t
-#    field pool      , Ptr <apr_pool_t>
-#    field proc_mutex, Ptr <apr_proc_mutex_t>
-#    if APR_HAS_THREADS
-#      field thread_mutex, Ptr <apr_thread_mutex_t>
-#    endif
-#  stoptype
-
-#  ccall apr_os_global_mutex_get, Ptr <apr_os_global_mutex_t> -> Ptr <apr_global_mutex_t> -> IO <apr_status_t>
-#endif
+#opaque_t apr_os_global_mutex_t
+#cinline apr_os_global_mutex_get, Ptr <apr_os_global_mutex_t> -> Ptr <apr_global_mutex_t> -> IO <apr_status_t>
 
 #ccall apr_os_file_get      , Ptr <apr_os_file_t> -> Ptr <apr_file_t> -> IO <apr_status_t>
 #ccall apr_os_dir_get       , Ptr (Ptr <apr_os_dir_t>) -> Ptr <apr_dir_t> -> IO <apr_status_t>
index 2cf60a98a414440318751a43baf7a4cdf31c22da..4da632a8da777c0a2ffaa1d202aef0b0fe564421 100644 (file)
@@ -14,6 +14,7 @@ Tested-With: GHC == 6.12.3
 Cabal-Version: >= 1.6
 Build-Type: Simple
 Extra-Source-Files:
+    COPYING
 
 Source-Repository head
     Type: git
@@ -65,9 +66,11 @@ Library
     C-Sources:
         cbits/helper_apr_errno.c
         cbits/helper_apr_general.c
+        cbits/helper_apr_global_mutex.c
         cbits/helper_apr_pools.c
         cbits/helper_apr_lib.c
         cbits/helper_apr_mmap.c
+        cbits/helper_apr_portable.c
         cbits/helper_apr_signal.c
         cbits/helper_apr_time.c
         cbits/helper_apr_thread_proc.c
diff --git a/cbits/helper_apr_global_mutex.c b/cbits/helper_apr_global_mutex.c
new file mode 100644 (file)
index 0000000..833b330
--- /dev/null
@@ -0,0 +1,11 @@
+#include <bindings.cmacros.h>
+#include <apr_global_mutex.h>
+
+BC_INLINE4(apr_global_mutex_create    , apr_global_mutex_t**, const char*, apr_lockmech_e, apr_pool_t*, apr_status_t)
+BC_INLINE3(apr_global_mutex_child_init, apr_global_mutex_t**, const char*, apr_pool_t*, apr_status_t)
+BC_INLINE1(apr_global_mutex_lock      , apr_global_mutex_t*, apr_status_t)
+BC_INLINE1(apr_global_mutex_trylock   , apr_global_mutex_t*, apr_status_t)
+BC_INLINE1(apr_global_mutex_unlock    , apr_global_mutex_t*, apr_status_t)
+BC_INLINE1(apr_global_mutex_destroy   , apr_global_mutex_t*, apr_status_t)
+
+BC_INLINE1(apr_global_mutex_pool_get  , apr_global_mutex_t*, apr_pool_t*)
diff --git a/cbits/helper_apr_portable.c b/cbits/helper_apr_portable.c
new file mode 100644 (file)
index 0000000..09c282a
--- /dev/null
@@ -0,0 +1,4 @@
+#include <bindings.cmacros.h>
+#include <apr_portable.h>
+
+BC_INLINE2(apr_os_global_mutex_get, apr_os_global_mutex_t*, apr_global_mutex_t*, apr_status_t)