]> gitweb @ CieloNegro.org - bindings-apr.git/commitdiff
more bindings
authorPHO <pho@cielonegro.org>
Sun, 8 Aug 2010 10:32:10 +0000 (19:32 +0900)
committerPHO <pho@cielonegro.org>
Sun, 8 Aug 2010 10:32:10 +0000 (19:32 +0900)
Bindings/APR/Allocator.hsc
Bindings/APR/Allocator/Types.hsc [new file with mode: 0644]
Bindings/APR/Pools.hsc [new file with mode: 0644]
bindings-apr.cabal
cbits/helper_apr_pools.c [new file with mode: 0644]

index 454ff1612f12eb22035d282074fcdda4b776af50..0ee0f9713fc82232f3b9b5ce80bd002c33567cfd 100644 (file)
@@ -4,18 +4,9 @@
 module Bindings.APR.Allocator where
 #strict_import
 import Bindings.APR
+import Bindings.APR.Allocator.Types
 import Bindings.APR.Errno
-
-#opaque_t apr_allocator_t
-
-#starttype struct apr_memnode_t
-#field next       , Ptr <apr_memnode_t>
-#field ref        , Ptr (Ptr <apr_memnode_t>)
-#field index      , <apr_uint32_t>
-#field free_index , <apr_uint32_t>
-#field first_avail, Ptr CChar
-#field endp       , Ptr CChar
-#stoptype
+import Bindings.APR.Pools
 
 #num APR_MEMNODE_T_SIZE
 #num APR_ALLOCATOR_MAX_FREE_UNLIMITED
@@ -25,4 +16,9 @@ import Bindings.APR.Errno
 #ccall apr_allocator_alloc  , Ptr <apr_allocator_t> -> <apr_size_t> -> IO (Ptr <apr_memnode_t>)
 #ccall apr_allocator_free   , Ptr <apr_allocator_t> -> Ptr <apr_memnode_t> -> IO ()
 
--- FIXME: incomplete
+#ccall apr_allocator_owner_set, Ptr <apr_allocator_t> -> Ptr <apr_pool_t> -> IO ()
+#ccall apr_allocator_owner_get, Ptr <apr_allocator_t> -> IO (Ptr <apr_pool_t>)
+
+#ccall apr_allocator_max_free_set, Ptr <apr_allocator_t> -> <apr_size_t> -> IO ()
+
+-- FIXME: incomplete
\ No newline at end of file
diff --git a/Bindings/APR/Allocator/Types.hsc b/Bindings/APR/Allocator/Types.hsc
new file mode 100644 (file)
index 0000000..088d6f6
--- /dev/null
@@ -0,0 +1,17 @@
+#include <bindings.dsl.h>
+#include <apr_allocator.h>
+
+module Bindings.APR.Allocator.Types where
+#strict_import
+import Bindings.APR
+
+#opaque_t apr_allocator_t
+
+#starttype struct apr_memnode_t
+#field next       , Ptr <apr_memnode_t>
+#field ref        , Ptr (Ptr <apr_memnode_t>)
+#field index      , <apr_uint32_t>
+#field free_index , <apr_uint32_t>
+#field first_avail, Ptr CChar
+#field endp       , Ptr CChar
+#stoptype
diff --git a/Bindings/APR/Pools.hsc b/Bindings/APR/Pools.hsc
new file mode 100644 (file)
index 0000000..46c4790
--- /dev/null
@@ -0,0 +1,95 @@
+#include <bindings.dsl.h>
+#include <apr_pools.h>
+
+module Bindings.APR.Pools where
+#strict_import
+import Bindings.APR
+import Bindings.APR.Allocator.Types
+import Bindings.APR.Errno
+
+#opaque_t apr_pool_t
+
+#num APR_POOL_DEBUG
+
+#callback apr_abortfunc_t, CInt -> IO CInt
+
+#ccall apr_pool_initialize, IO <apr_status_t>
+#ccall apr_pool_terminate , IO ()
+
+#if APR_POOL_DEBUG
+
+#  cinline apr_pool_create_ex, Ptr (Ptr <apr_pool_t>) -> Ptr <apr_pool_t> -> <apr_abortfunc_t> -> Ptr <apr_allocator_t> -> IO <apr_status_t>
+#  cinline apr_pool_create_core_ex, Ptr (Ptr <apr_pool_t>) -> <apr_abortfunc_t> -> Ptr <apr_allocator_t> -> IO <apr_status_t>
+#  cinline apr_pool_create_unmanaged_ex, Ptr (Ptr <apr_pool_t>) -> <apr_abortfunc_t> -> Ptr <apr_allocator_t> -> IO <apr_status_t>
+
+#  ccall apr_pool_create_ex_debug, Ptr (Ptr <apr_pool_t>) -> Ptr <apr_pool_t> -> <apr_abortfunc_t> -> Ptr <apr_allocator_t> -> Ptr CChar -> IO <apr_status_t>
+#  ccall apr_pool_create_core_ex_debug, Ptr (Ptr <apr_pool_t>) -> <apr_abortfunc_t> -> Ptr <apr_allocator_t> -> Ptr CChar -> IO <apr_status_t>
+#  ccall apr_pool_create_unmanaged_ex_debug, Ptr (Ptr <apr_pool_t>) -> <apr_abortfunc_t> -> Ptr <apr_allocator_t> -> Ptr CChar -> IO <apr_status_t>
+
+#else
+
+#  ccall apr_pool_create_ex, Ptr (Ptr <apr_pool_t>) -> Ptr <apr_pool_t> -> <apr_abortfunc_t> -> Ptr <apr_allocator_t> -> IO <apr_status_t>
+#  ccall apr_pool_create_core_ex, Ptr (Ptr <apr_pool_t>) -> <apr_abortfunc_t> -> Ptr <apr_allocator_t> -> IO <apr_status_t>
+#  ccall apr_pool_create_unmanaged_ex, Ptr (Ptr <apr_pool_t>) -> <apr_abortfunc_t> -> Ptr <apr_allocator_t> -> IO <apr_status_t>
+
+#endif
+
+#cinline apr_pool_create, Ptr (Ptr <apr_pool_t>) -> Ptr <apr_pool_t> -> IO <apr_status_t>
+#cinline apr_pool_create_core, Ptr (Ptr <apr_pool_t>) -> IO <apr_status_t>
+#cinline apr_pool_create_unmanaged, Ptr (Ptr <apr_pool_t>) -> IO <apr_status_t>
+
+#ccall apr_pool_allocator_get, Ptr <apr_pool_t> -> IO (Ptr <apr_allocator_t>)
+
+#if APR_POOL_DEBUG
+#  cinline apr_pool_clear, Ptr <apr_pool_t> -> IO ()
+#  ccall   apr_pool_clear_debug, Ptr <apr_pool_t> -> Ptr CChar -> IO ()
+#else
+#  ccall   apr_pool_clear, Ptr <apr_pool_t> -> IO ()
+#endif
+
+#if APR_POOL_DEBUG
+#  cinline apr_pool_destroy, Ptr <apr_pool_t> -> IO ()
+#  ccall   apr_pool_destroy_debug, Ptr <apr_pool_t> -> Ptr CChar -> IO ()
+#else
+#  ccall   apr_pool_destroy, Ptr <apr_pool_t> -> IO ()
+#endif
+
+#if APR_POOL_DEBUG
+#  cinline apr_palloc, Ptr <apr_pool_t> -> <apr_size_t> -> IO (Ptr ())
+#  ccall   apr_palloc_debug, Ptr <apr_pool_t> -> <apr_size_t> -> Ptr CChar -> IO (Ptr ())
+#else
+#  ccall   apr_palloc, Ptr <apr_pool_t> -> <apr_size_t> -> IO (Ptr ())
+#endif
+
+#cinline apr_pcalloc, Ptr <apr_pool_t> -> <apr_size_t> -> IO (Ptr ())
+#if APR_POOL_DEBUG
+#  ccall apr_pcalloc_debug, Ptr <apr_pool_t> -> <apr_size_t> -> Ptr CChar -> IO (Ptr ())
+#endif
+
+#ccall apr_pool_abort_set  , <apr_abortfunc_t> -> Ptr <apr_pool_t> -> IO ()
+#ccall apr_pool_abort_get  , Ptr <apr_pool_t> -> IO <apr_abortfunc_t>
+#ccall apr_pool_parent_get , Ptr <apr_pool_t> -> IO (Ptr <apr_pool_t>)
+#ccall apr_pool_is_ancestor, Ptr <apr_pool_t> -> Ptr <apr_pool_t> -> IO CInt
+#ccall apr_pool_tag        , Ptr <apr_pool_t> -> Ptr CChar -> IO ()
+
+#ccall apr_pool_userdata_set , Ptr () -> Ptr CChar -> FunPtr (Ptr () -> IO <apr_status_t>) -> Ptr <apr_pool_t> -> IO <apr_status_t>
+#ccall apr_pool_userdata_setn, Ptr () -> Ptr CChar -> FunPtr (Ptr () -> IO <apr_status_t>) -> Ptr <apr_pool_t> -> IO <apr_status_t>
+#ccall apr_pool_userdata_get , Ptr (Ptr ()) -> Ptr CChar -> Ptr <apr_pool_t> -> IO <apr_status_t>
+
+#ccall apr_pool_cleanup_register    , Ptr <apr_pool_t> -> Ptr () -> FunPtr (Ptr () -> IO <apr_status_t>) -> FunPtr (Ptr () -> IO <apr_status_t>) -> IO ()
+#ccall apr_pool_pre_cleanup_register, Ptr <apr_pool_t> -> Ptr () -> FunPtr (Ptr () -> IO <apr_status_t>) -> IO ()
+#ccall apr_pool_cleanup_kill        , Ptr <apr_pool_t> -> Ptr () -> FunPtr (Ptr () -> IO <apr_status_t>) -> IO ()
+#ccall apr_pool_child_cleanup_set   , Ptr <apr_pool_t> -> Ptr () -> FunPtr (Ptr () -> IO <apr_status_t>) -> FunPtr (Ptr () -> IO <apr_status_t>) -> IO ()
+#ccall apr_pool_cleanup_run         , Ptr <apr_pool_t> -> Ptr () -> FunPtr (Ptr () -> IO <apr_status_t>) -> IO <apr_status_t>
+#ccall apr_pool_cleanup_null        , Ptr () -> IO <apr_status_t>
+#ccall apr_pool_cleanup_for_exec    , Ptr () -> IO ()
+
+#if APR_POOL_DEBUG
+#  ccall apr_pool_join     , Ptr <apr_pool_t> -> Ptr <apr_pool_t> -> IO ()
+#  ccall apr_pool_find     , Ptr () -> IO (Ptr <apr_pool_t>)
+#  ccall apr_pool_num_bytes, Ptr <apr_pool_t> -> CInt -> IO <apr_size_t>
+#  ccall apr_pool_lock     , Ptr <apr_pool_t> -> CInt -> IO ()
+#else
+#  cinline apr_pool_join, Ptr <apr_pool_t> -> Ptr <apr_pool_t> -> IO ()
+#  cinline apr_pool_lock, Ptr <apr_pool_t> -> CInt -> IO ()
+#endif
index 1c8947ca23aadd2461f26ea84804ab08138af38e..af4b80edd95b0939f193d6cb5a33271be1c502e0 100644 (file)
@@ -30,10 +30,13 @@ Library
     Exposed-Modules:
         Bindings.APR
         Bindings.APR.Allocator
+        Bindings.APR.Allocator.Types
         Bindings.APR.Errno
+        Bindings.APR.Pools
 
     C-Sources:
         cbits/helper_apr_errno.c
+        cbits/helper_apr_pools.c
 
     Extensions:
         ForeignFunctionInterface
diff --git a/cbits/helper_apr_pools.c b/cbits/helper_apr_pools.c
new file mode 100644 (file)
index 0000000..3544f6d
--- /dev/null
@@ -0,0 +1,23 @@
+#include <bindings.cmacros.h>
+#include <apr_pools.h>
+
+#if APR_POOL_DEBUG
+BC_INLINE4(apr_pool_create_ex, apr_pool_t**, apr_pool_t*, apr_abortfunc_t, apr_allocator_t*, apr_status_t)
+BC_INLINE3(apr_pool_create_core_ex, apr_pool_t**, apr_abortfunc_t, apr_allocator_t*, apr_status_t)
+BC_INLINE3(apr_pool_create_unmanaged_ex, apr_pool_t**, apr_abortfunc_t, apr_allocator_t*, apr_status_t)
+#endif
+
+BC_INLINE2(apr_pool_create, apr_pool_t**, apr_pool_t*, apr_status_t)
+BC_INLINE1(apr_pool_create_core, apr_pool_t**, apr_status_t)
+BC_INLINE1(apr_pool_create_unmanaged, apr_pool_t**, apr_status_t)
+
+#if APR_POOL_DEBUG
+BC_INLINE1VOID(apr_pool_clear  , apr_pool_t*)
+BC_INLINE1VOID(apr_pool_destroy, apr_pool_t*)
+BC_INLINE3(apr_palloc, apr_pool_t*, apr_size_t, const char*, void*)
+#endif
+
+BC_INLINE2(apr_pcalloc, apr_pool_t*, apr_size_t, void*)
+
+BC_INLINE2VOID(apr_pool_join, apr_pool_t*, apr_pool_t*)
+BC_INLINE2VOID(apr_pool_lock, apr_pool_t*, int)