packages feed

bindings-apr-util-0.1: Bindings/APR/Buckets.hsc

#include <bindings.dsl.h>
#include <bindings.apr.ring.h>
#include <apr_buckets.h>

module Bindings.APR.Buckets where
#strict_import
import Bindings.APR
import Bindings.APR.Allocator.Types
import Bindings.APR.ErrNo
import Bindings.APR.File.Types
import Bindings.APR.MMap
import Bindings.APR.Network.IO
import Bindings.APR.Pools
import Bindings.APR.Want

#num APR_BUCKET_BUFF_SIZE

#integral_t apr_read_type_e
#num APR_BLOCK_READ
#num APR_NONBLOCK_READ

#opaque_t apr_bucket_alloc_t

#num APR_BUCKET_DATA
#num APR_BUCKET_METADATA
#starttype struct apr_bucket_type_t
#  field name       , Ptr CChar
#  field num_func   , CInt
#  field is_metadata, CInt
#  field destroy    , FunPtr (Ptr () -> IO ())
#  field read       , FunPtr (Ptr <apr_bucket> -> Ptr (Ptr CChar) -> Ptr <apr_size_t> -> <apr_read_type_e> -> IO <apr_status_t>)
#  field setaside   , FunPtr (Ptr <apr_bucket> -> Ptr <apr_pool_t> -> IO <apr_status_t>)
#  field split      , FunPtr (Ptr <apr_bucket> -> <apr_size_t> -> IO <apr_status_t>)
#  field copy       , FunPtr (Ptr <apr_bucket> -> Ptr (Ptr <apr_bucket>) -> IO <apr_status_t>)
#stoptype

#starttype struct apr_bucket
#  apr_ring_entry_field link, <apr_bucket>
#  field type  , Ptr <apr_bucket_type_t>
#  field length, <apr_size_t>
#  field start , <apr_off_t>
#  field data  , Ptr ()
#  field free  , FunPtr (Ptr () -> IO ())
#  field list  , Ptr <apr_bucket_alloc_t>
#stoptype

#apr_ring_head_t apr_bucket_list, <apr_bucket>
#starttype struct apr_bucket_brigade
#  field p           , Ptr <apr_pool_t>
#  field list        , <apr_bucket_list>
#  field bucket_alloc, Ptr <apr_bucket_alloc_t>
#stoptype

#callback apr_brigade_flush, Ptr <apr_bucket_brigade> -> Ptr () -> IO <apr_status_t>

#cinline APR_BRIGADE_CHECK_CONSISTENCY, Ptr <apr_bucket_brigade> -> IO ()
#cinline APR_BUCKET_CHECK_CONSISTENCY , Ptr <apr_bucket> -> IO ()

#cinline APR_BRIGADE_SENTINEL   , Ptr <apr_bucket_brigade> -> IO (Ptr <apr_bucket>)
#cinline APR_BRIGADE_EMPTY      , Ptr <apr_bucket_brigade> -> IO CInt
#cinline APR_BRIGADE_FIRST      , Ptr <apr_bucket_brigade> -> IO (Ptr <apr_bucket>)
#cinline APR_BRIGADE_LAST       , Ptr <apr_bucket_brigade> -> IO (Ptr <apr_bucket>)
#cinline APR_BRIGADE_INSERT_HEAD, Ptr <apr_bucket_brigade> -> Ptr <apr_bucket> -> IO ()
#cinline APR_BRIGADE_INSERT_TAIL, Ptr <apr_bucket_brigade> -> Ptr <apr_bucket> -> IO ()
#cinline APR_BRIGADE_CONCAT     , Ptr <apr_bucket_brigade> -> Ptr <apr_bucket_brigade> -> IO ()
#cinline APR_BRIGADE_PREPEND    , Ptr <apr_bucket_brigade> -> Ptr <apr_bucket_brigade> -> IO ()

#cinline APR_BUCKET_INSERT_BEFORE, Ptr <apr_bucket> -> Ptr <apr_bucket> -> IO ()
#cinline APR_BUCKET_INSERT_AFTER , Ptr <apr_bucket> -> Ptr <apr_bucket> -> IO ()
#cinline APR_BUCKET_NEXT         , Ptr <apr_bucket> -> IO (Ptr <apr_bucket>)
#cinline APR_BUCKET_PREV         , Ptr <apr_bucket> -> IO (Ptr <apr_bucket>)
#cinline APR_BUCKET_REMOVE       , Ptr <apr_bucket> -> IO ()
#cinline APR_BUCKET_INIT         , Ptr <apr_bucket> -> IO ()
#cinline APR_BUCKET_IS_METADATA  , Ptr <apr_bucket> -> IO CInt
#cinline APR_BUCKET_IS_FLUSH     , Ptr <apr_bucket> -> IO CInt
#cinline APR_BUCKET_IS_EOS       , Ptr <apr_bucket> -> IO CInt
#cinline APR_BUCKET_IS_FILE      , Ptr <apr_bucket> -> IO CInt
#cinline APR_BUCKET_IS_PIPE      , Ptr <apr_bucket> -> IO CInt
#cinline APR_BUCKET_IS_SOCKET    , Ptr <apr_bucket> -> IO CInt
#cinline APR_BUCKET_IS_HEAP      , Ptr <apr_bucket> -> IO CInt
#cinline APR_BUCKET_IS_TRANSIENT , Ptr <apr_bucket> -> IO CInt
#cinline APR_BUCKET_IS_IMMORTAL  , Ptr <apr_bucket> -> IO CInt
#if APR_HAS_MMAP
#  cinline APR_BUCKET_IS_MMAP    , Ptr <apr_bucket> -> IO CInt
#endif
#cinline APR_BUCKET_IS_POOL      , Ptr <apr_bucket> -> IO CInt

#starttype struct apr_bucket_refcount
#  field refcount, CInt
#stoptype

#starttype struct apr_bucket_heap
#  field refcount , <apr_bucket_refcount>
#  field base     , Ptr CChar
#  field alloc_len, <apr_size_t>
#  field free_func, FunPtr (Ptr () -> IO ())
#stoptype

#starttype struct apr_bucket_pool
#  field heap, <apr_bucket_heap>
#  field base, Ptr CChar
#  field pool, Ptr <apr_pool_t>
#  field list, Ptr <apr_bucket_alloc_t>
#stoptype

#if APR_HAS_MMAP
#  starttype struct apr_bucket_mmap
#    field refcount, <apr_bucket_refcount>
#    field mmap    , <apr_mmap_t>
#  stoptype
#endif

#starttype struct apr_bucket_file
#  field refcount, <apr_bucket_refcount>
#  field fd      , Ptr <apr_file_t>
#  field readpool, Ptr <apr_pool_t>
#  if APR_HAS_MMAP
#    field can_mmap, CInt
#  endif
#stoptype

#starttype union apr_bucket_structs
#  union_field b   , <apr_bucket>
#  union_field heap, <apr_bucket_heap>
#  union_field pool, <apr_bucket_pool>
#  if APR_HAS_MMAP
#    union_field mmap, <apr_bucket_mmap>
#  endif
#  union_field file, <apr_bucket_file>
#stoptype

#num APR_BUCKET_ALLOC_SIZE

#ccall apr_brigade_create     , Ptr <apr_pool_t> -> Ptr <apr_bucket_alloc_t> -> IO (Ptr <apr_bucket_brigade>)
#ccall apr_brigade_destroy    , Ptr <apr_bucket_brigade> -> IO <apr_status_t>
#ccall apr_brigade_cleanup    , Ptr () -> IO <apr_status_t>
#ccall apr_brigade_split_ex   , Ptr <apr_bucket_brigade> -> Ptr <apr_bucket> -> Ptr <apr_bucket_brigade> -> IO (Ptr <apr_bucket_brigade>)
#ccall apr_brigade_split      , Ptr <apr_bucket_brigade> -> Ptr <apr_bucket> -> IO (Ptr <apr_bucket_brigade>)
#ccall apr_brigade_partition  , Ptr <apr_bucket_brigade> -> <apr_off_t> -> Ptr (Ptr <apr_bucket>) -> IO <apr_status_t>
#ccall apr_brigade_length     , Ptr <apr_bucket_brigade> -> CInt -> Ptr <apr_off_t> -> IO <apr_status_t>
#ccall apr_brigade_flatten    , Ptr <apr_bucket_brigade> -> Ptr CChar -> Ptr <apr_size_t> -> IO <apr_status_t>
#ccall apr_brigade_pflatten   , Ptr <apr_bucket_brigade> -> Ptr (Ptr CChar) -> Ptr <apr_size_t> -> Ptr <apr_pool_t> -> IO <apr_status_t>
#ccall apr_brigade_split_line , Ptr <apr_bucket_brigade> -> Ptr <apr_bucket_brigade> -> <apr_read_type_e> -> <apr_off_t> -> IO <apr_status_t>
#ccall apr_brigade_to_iovec   , Ptr <apr_bucket_brigade> -> Ptr <iovec> -> Ptr CInt -> <apr_status_t>
-- FIXME: apr_brigade_to_vputstrs takes va_list
#ccall apr_brigade_write      , Ptr <apr_bucket_brigade> -> <apr_brigade_flush> -> Ptr () -> Ptr CChar -> <apr_size_t> -> IO <apr_status_t>
#ccall apr_brigade_writev     , Ptr <apr_bucket_brigade> -> <apr_brigade_flush> -> Ptr () -> Ptr <iovec> -> <apr_size_t> -> IO <apr_status_t>
#ccall apr_brigade_puts       , Ptr <apr_bucket_brigade> -> <apr_brigade_flush> -> Ptr () -> Ptr CChar -> IO <apr_status_t>
#ccall apr_brigade_putc       , Ptr <apr_bucket_brigade> -> <apr_brigade_flush> -> Ptr () -> CChar -> IO <apr_status_t>
-- FIXME: apr_brigade_putstrs takes varargs
-- FIXME: apr_brigade_printf takes varargs
-- FIXME: apr_brigade_vprintf takes va_list
#ccall apr_brigade_insert_file, Ptr <apr_bucket_brigade> -> Ptr <apr_file_t> -> <apr_off_t> -> <apr_off_t> -> Ptr <apr_pool_t> -> IO (Ptr <apr_bucket>)

#ccall apr_bucket_alloc_create   , Ptr <apr_pool_t> -> Ptr (<apr_bucket_alloc_t>)
#ccall apr_bucket_alloc_create_ex, Ptr <apr_allocator_t> -> Ptr (<apr_bucket_alloc_t>)
#ccall apr_bucket_alloc_destroy  , Ptr <apr_bucket_alloc_t> -> IO ()
#ccall apr_bucket_alloc          , <apr_size_t> -> Ptr <apr_bucket_alloc_t> -> IO (Ptr ())
#ccall apr_bucket_free           , Ptr () -> IO ()

#cinline apr_bucket_destroy , Ptr <apr_bucket> -> IO ()
#cinline apr_bucket_delete  , Ptr <apr_bucket> -> IO ()
#cinline apr_bucket_read    , Ptr <apr_bucket> -> Ptr (Ptr CChar) -> Ptr <apr_size_t> -> <apr_read_type_e> -> IO <apr_status_t>
#cinline apr_bucket_setaside, Ptr <apr_bucket> -> Ptr <apr_pool_t> -> IO <apr_status_t>
#cinline apr_bucket_split   , Ptr <apr_bucket> -> <apr_size_t> -> IO <apr_status_t>
#cinline apr_bucket_copy    , Ptr <apr_bucket> -> Ptr (Ptr <apr_bucket>) -> IO <apr_status_t>

#ccall apr_bucket_setaside_noop   , Ptr <apr_bucket> -> Ptr <apr_pool_t> -> IO <apr_status_t>
#ccall apr_bucket_setaside_notimpl, Ptr <apr_bucket> -> Ptr <apr_pool_t> -> IO <apr_status_t>
#ccall apr_bucket_split_notimpl   , Ptr <apr_bucket> -> <apr_size_t> -> IO <apr_status_t>
#ccall apr_bucket_copy_notimpl    , Ptr <apr_bucket> -> Ptr (Ptr <apr_bucket>) -> IO <apr_status_t>
#ccall apr_bucket_destroy_noop    , Ptr () -> IO ()

#globalvar apr_bucket_type_flush    , <apr_bucket_type_t>
#globalvar apr_bucket_type_eos      , <apr_bucket_type_t>
#globalvar apr_bucket_type_file     , <apr_bucket_type_t>
#globalvar apr_bucket_type_heap     , <apr_bucket_type_t>
#if APR_HAS_MMAP
#  globalvar apr_bucket_type_mmap   , <apr_bucket_type_t>
#endif
#globalvar apr_bucket_type_pool     , <apr_bucket_type_t>
#globalvar apr_bucket_type_pipe     , <apr_bucket_type_t>
#globalvar apr_bucket_type_immortal , <apr_bucket_type_t>
#globalvar apr_bucket_type_transient, <apr_bucket_type_t>
#globalvar apr_bucket_type_socket   , <apr_bucket_type_t>

#ccall apr_bucket_simple_split, Ptr <apr_bucket> -> <apr_size_t> -> IO <apr_status_t>
#ccall apr_bucket_simple_copy , Ptr <apr_bucket> -> Ptr (Ptr <apr_bucket>) -> IO <apr_status_t>

#ccall apr_bucket_shared_make   , Ptr <apr_bucket> -> Ptr () -> <apr_off_t> -> <apr_size_t> -> IO (Ptr <apr_bucket>)
#ccall apr_bucket_shared_destroy, Ptr () -> IO CInt
#ccall apr_bucket_shared_split  , Ptr <apr_bucket> -> <apr_size_t> -> IO <apr_status_t>
#ccall apr_bucket_shared_copy   , Ptr <apr_bucket> -> Ptr (Ptr <apr_bucket>) -> IO <apr_status_t>

#ccall apr_bucket_eos_create      , Ptr <apr_bucket_alloc_t> -> IO (Ptr <apr_bucket>)
#ccall apr_bucket_eos_make        , Ptr <apr_bucket> -> IO (Ptr <apr_bucket>)
#ccall apr_bucket_flush_create    , Ptr <apr_bucket_alloc_t> -> IO (Ptr <apr_bucket>)
#ccall apr_bucket_flush_make      , Ptr <apr_bucket> -> IO (Ptr <apr_bucket>)
#ccall apr_bucket_immortal_create , Ptr CChar -> <apr_size_t> -> Ptr <apr_bucket_alloc_t> -> IO (Ptr <apr_bucket>)
#ccall apr_bucket_immortal_make   , Ptr <apr_bucket> -> Ptr CChar -> <apr_size_t> -> IO (Ptr <apr_bucket>)
#ccall apr_bucket_transient_create, Ptr CChar -> <apr_size_t> -> Ptr <apr_bucket_alloc_t> -> IO (Ptr <apr_bucket>)
#ccall apr_bucket_transient_make  , Ptr <apr_bucket> -> Ptr CChar -> <apr_size_t> -> IO (Ptr <apr_bucket>)
#ccall apr_bucket_heap_create     , Ptr CChar -> <apr_size_t> -> FunPtr (Ptr () -> IO ()) -> Ptr <apr_bucket_alloc_t> -> IO (Ptr <apr_bucket>)
#ccall apr_bucket_heap_make       , Ptr <apr_bucket> -> Ptr CChar -> <apr_size_t> -> FunPtr (Ptr () -> IO ()) -> IO (Ptr <apr_bucket>)
#ccall apr_bucket_pool_create     , Ptr CChar -> <apr_size_t> -> Ptr <apr_pool_t> -> Ptr <apr_bucket_alloc_t> -> IO (Ptr <apr_bucket>)
#ccall apr_bucket_pool_make       , Ptr <apr_bucket> -> Ptr CChar -> <apr_size_t> -> Ptr <apr_pool_t> -> IO (Ptr <apr_bucket>)
#if APR_HAS_MMAP
#  ccall apr_bucket_mmap_create   , Ptr <apr_mmap_t> -> <apr_off_t> -> <apr_size_t> -> Ptr <apr_bucket_alloc_t> -> IO (Ptr <apr_bucket>)
#  ccall apr_bucket_mmap_make     , Ptr <apr_bucket> -> Ptr <apr_mmap_t> -> <apr_off_t> -> <apr_size_t> -> IO (Ptr <apr_bucket>)
#endif
#ccall apr_bucket_socket_create   , Ptr <apr_socket_t> -> Ptr <apr_bucket_alloc_t> -> IO (Ptr <apr_bucket>)
#ccall apr_bucket_socket_make     , Ptr <apr_bucket> -> Ptr <apr_socket_t> -> IO (Ptr <apr_bucket>)
#ccall apr_bucket_pipe_create     , Ptr <apr_file_t> -> Ptr <apr_bucket_alloc_t> -> IO (Ptr <apr_bucket>)
#ccall apr_bucket_pipe_make       , Ptr <apr_bucket> -> Ptr <apr_file_t> -> IO (Ptr <apr_bucket>)
#ccall apr_bucket_file_create     , Ptr <apr_file_t> -> <apr_off_t> -> <apr_size_t> -> Ptr <apr_pool_t> -> Ptr <apr_bucket_alloc_t> -> IO (Ptr <apr_bucket>)
#ccall apr_bucket_file_make       , Ptr <apr_bucket> -> Ptr <apr_file_t> -> <apr_off_t> -> <apr_size_t> -> Ptr <apr_pool_t> -> IO (Ptr <apr_bucket>)
#ccall apr_bucket_file_enable_mmap, Ptr <apr_bucket> -> CInt -> IO <apr_status_t>