--- /dev/null
+#include <bindings.dsl.h>
+#include <apr_hash.h>
+
+module Bindings.APR.Hash where
+#strict_import
+import Bindings.APR
+import Bindings.APR.Pools
+
+#num APR_HASH_KEY_STRING
+
+#opaque_t apr_hash_t
+#opaque_t apr_hash_index_t
+
+#callback apr_hashfunc_t, Ptr CChar -> Ptr <apr_ssize_t> -> IO CUInt
+
+#ccall apr_hashfunc_default, Ptr CChar -> Ptr <apr_ssize_t> -> IO CUInt
+#ccall apr_hash_make , Ptr <apr_pool_t> -> IO (Ptr <apr_hash_t>)
+#ccall apr_hash_make_custom, Ptr <apr_hash_t> -> <apr_hashfunc_t> -> IO (Ptr <apr_hash_t>)
+#ccall apr_hash_copy , Ptr <apr_pool_t> -> Ptr <apr_hash_t> -> IO (Ptr <apr_hash_t>)
+#ccall apr_hash_set , Ptr <apr_hash_t> -> Ptr () -> <apr_ssize_t> -> Ptr () -> IO ()
+#ccall apr_hash_get , Ptr <apr_hash_t> -> Ptr () -> <apr_ssize_t> -> IO (Ptr ())
+#ccall apr_hash_first , Ptr <apr_pool_t> -> Ptr <apr_hash_t> -> IO (Ptr <apr_hash_index_t>)
+#ccall apr_hash_next , Ptr <apr_hash_index_t> -> IO (Ptr <apr_hash_index_t>)
+#ccall apr_hash_this , Ptr <apr_hash_index_t> -> Ptr (Ptr ()) -> Ptr <apr_ssize_t> -> Ptr (Ptr ()) -> IO ()
+#ccall apr_hash_count , Ptr <apr_hash_t> -> IO CUInt
+#ccall apr_hash_clear , Ptr <apr_hash_t> -> IO ()
+#ccall apr_hash_overlay , Ptr <apr_pool_t> -> Ptr <apr_hash_t> -> Ptr <apr_hash_t> -> IO (Ptr <apr_hash_t>)
+#ccall apr_hash_merge , Ptr <apr_pool_t> -> Ptr <apr_hash_t> -> Ptr <apr_hash_t> -> FunPtr (Ptr <apr_pool_t> -> Ptr () -> <apr_ssize_t> -> Ptr () -> Ptr () -> Ptr () -> IO (Ptr ())) -> Ptr () -> IO (Ptr <apr_hash_t>)
+
+#ccall apr_hash_pool_get , Ptr <apr_hash_t> -> IO (Ptr <apr_pool_t>)