--- /dev/null
+#include <bindings.dsl.h>
+#include <apr_memcache.h>
+
+module Bindings.APR.MemCache where
+#strict_import
+import Bindings.APR
+import Bindings.APR.ErrNo
+import Bindings.APR.Hash
+import Bindings.APR.Network.IO
+import Bindings.APR.Pools
+import Bindings.APR.ResList
+import Bindings.APR.Thread.Mutex
+import Bindings.APR.Time
+
+#integral_t apr_memcache_server_status_t
+#num APR_MC_SERVER_LIVE
+#num APR_MC_SERVER_DEAD
+
+#opaque_t apr_memcache_conn_t
+
+#starttype struct apr_memcache_server_t
+# field host , Ptr CChar
+# field port , <apr_port_t>
+# field status, <apr_memcache_server_status_t>
+# if APR_HAS_THREADS
+# field conns, Ptr <apr_reslist_t>
+# else
+# field conn, Ptr <apr_memcache_conn_t>
+# endif
+# field p , Ptr <apr_pool_t>
+# if APR_HAS_THREADS
+# field lock, Ptr <apr_thread_mutex_t>
+# endif
+# field btime , <apr_time_t>
+#stoptype
+
+#callback apr_memcache_hash_func , Ptr () -> Ptr CChar -> <apr_size_t> -> IO <apr_uint32_t>
+#callback apr_memcache_server_func, Ptr () -> Ptr <apr_memcache_t> -> <apr_uint32_t> -> IO (Ptr <apr_memcache_server_t>)
+
+#starttype struct apr_memcache_t
+# field flags , <apr_uint32_t>
+# field nalloc , <apr_uint16_t>
+# field ntotal , <apr_uint16_t>
+# field live_servers, Ptr (Ptr <apr_memcache_server_t>)
+# field p , Ptr <apr_pool_t>
+# field hash_func , <apr_memcache_hash_func>
+# field server_baton, Ptr ()
+# field server_func , <apr_memcache_server_func>
+#stoptype
+
+#starttype apr_memcache_value_t
+# field status, <apr_status_t>
+# field key , Ptr CChar
+# field len , <apr_size_t>
+# field data , Ptr ()
+# field flags , <apr_uint16_t>
+#stoptype
+
+#ccall apr_memcache_hash , Ptr <apr_memcache_t> -> Ptr CChar -> <apr_size_t> -> IO <apr_uint32_t>
+#ccall apr_memcache_hash_crc32 , Ptr () -> Ptr CChar -> <apr_size_t> -> IO <apr_uint32_t>
+#ccall apr_memcache_hash_default, Ptr () -> Ptr CChar -> <apr_size_t> -> IO <apr_uint32_t>
+
+#ccall apr_memcache_find_server_hash , Ptr <apr_memcache_t> -> <apr_uint32_t> -> IO (Ptr <apr_memcache_server_t>)
+#ccall apr_memcache_find_server_hash_default, Ptr () -> Ptr <apr_memcache_t> -> <apr_uint32_t> -> IO (Ptr <apr_memcache_server_t>)
+
+#ccall apr_memcache_add_server , Ptr <apr_memcache_t> -> Ptr <apr_memcache_server_t> -> IO <apr_status_t>
+#ccall apr_memcache_find_server , Ptr <apr_memcache_t> -> Ptr CChar -> <apr_port_t> -> IO (Ptr <apr_memcache_server_t>)
+#ccall apr_memcache_enable_server , Ptr <apr_memcache_t> -> Ptr <apr_memcache_server_t> -> IO <apr_status_t>
+#ccall apr_memcache_disable_server , Ptr <apr_memcache_t> -> Ptr <apr_memcache_server_t> -> IO <apr_status_t>
+#ccall apr_memcache_server_create , Ptr <apr_pool_t> -> Ptr CChar -> <apr_port_t> -> <apr_uint32_t> -> <apr_uint32_t> -> <apr_uint32_t> -> <apr_uint32_t> -> Ptr (Ptr <apr_memcache_server_t>) -> IO <apr_status_t>
+#ccall apr_memcache_create , Ptr <apr_pool_t> -> <apr_uint16_t> -> <apr_uint32_t> -> Ptr (Ptr <apr_memcache_t>) -> IO <apr_status_t>
+#ccall apr_memcache_getp , Ptr <apr_memcache_t> -> Ptr <apr_pool_t> -> Ptr CChar -> Ptr (Ptr CChar) -> Ptr <apr_size_t> -> Ptr <apr_uint16_t> -> IO <apr_status_t>
+#ccall apr_memcache_add_multget_key, Ptr <apr_pool_t> -> Ptr CChar -> Ptr (Ptr <apr_hash_t>) -> IO ()
+#ccall apr_memcache_multgetp , Ptr <apr_memcache_t> -> Ptr <apr_pool_t> -> Ptr <apr_pool_t> -> Ptr <apr_hash_t> -> IO <apr_status_t>
+#ccall apr_memcache_set , Ptr <apr_memcache_t> -> Ptr CChar -> Ptr CChar -> <apr_size_t> -> <apr_uint32_t> -> <apr_uint16_t> -> IO <apr_status_t>
+#ccall apr_memcache_add , Ptr <apr_memcache_t> -> Ptr CChar -> Ptr CChar -> <apr_size_t> -> <apr_uint32_t> -> <apr_uint16_t> -> IO <apr_status_t>
+#ccall apr_memcache_replace , Ptr <apr_memcache_t> -> Ptr CChar -> Ptr CChar -> <apr_size_t> -> <apr_uint32_t> -> <apr_uint16_t> -> IO <apr_status_t>
+#ccall apr_memcache_delete , Ptr <apr_memcache_t> -> Ptr CChar -> <apr_uint32_t> -> IO <apr_status_t>
+#ccall apr_memcache_incr , Ptr <apr_memcache_t> -> Ptr CChar -> <apr_int32_t> -> Ptr <apr_uint32_t> -> IO <apr_status_t>
+#ccall apr_memcache_decr , Ptr <apr_memcache_t> -> Ptr CChar -> <apr_int32_t> -> Ptr <apr_uint32_t> -> IO <apr_status_t>
+#ccall apr_memcache_version , Ptr <apr_memcache_server_t> -> Ptr <apr_pool_t> -> Ptr (Ptr CChar) -> IO <apr_status_t>
+
+#starttype apr_memcache_stats_t
+# field version , Ptr CChar
+# field pid , <apr_uint32_t>
+# field uptime , <apr_uint32_t>
+# field time , <apr_time_t>
+# field pointer_size , <apr_uint32_t>
+# field rusage_user , <apr_time_t>
+# field rusage_system, <apr_time_t>
+# field curr_items , <apr_uint32_t>
+# field total_items , <apr_uint32_t>
+# field bytes , <apr_uint64_t>
+# field curr_connections , <apr_uint32_t>
+# field total_connections, <apr_uint32_t>
+# field connection_structures, <apr_uint32_t>
+# field cmd_get , <apr_uint32_t>
+# field cmd_set , <apr_uint32_t>
+# field get_hits , <apr_uint32_t>
+# field get_misses , <apr_uint32_t>
+# field evictions , <apr_uint64_t>
+# field bytes_read , <apr_uint64_t>
+# field bytes_written , <apr_uint64_t>
+# field limit_maxbytes, <apr_uint32_t>
+# field threads , <apr_uint32_t>
+#stoptype
+
+#ccall apr_memcache_stats, Ptr <apr_memcache_server_t> -> Ptr <apr_pool_t> -> Ptr (Ptr <apr_memcache_stats_t>) -> IO <apr_status_t>