]> gitweb @ CieloNegro.org - bindings-apr-util.git/blob - Bindings/APR/Buckets.hsc
Bindings.APR.Buckets
[bindings-apr-util.git] / Bindings / APR / Buckets.hsc
1 #include <bindings.dsl.h>
2 #include <bindings.apr.ring.h>
3 #include <apr_buckets.h>
4
5 module Bindings.APR.Buckets where
6 #strict_import
7 import Bindings.APR
8 import Bindings.APR.Allocator.Types
9 import Bindings.APR.ErrNo
10 import Bindings.APR.File.Types
11 import Bindings.APR.MMap
12 import Bindings.APR.Network.IO
13 import Bindings.APR.Pools
14 import Bindings.APR.Want
15
16 #num APR_BUCKET_BUFF_SIZE
17
18 #integral_t apr_read_type_e
19 #num APR_BLOCK_READ
20 #num APR_NONBLOCK_READ
21
22 #opaque_t apr_bucket_alloc_t
23
24 #num APR_BUCKET_DATA
25 #num APR_BUCKET_METADATA
26 #starttype struct apr_bucket_type_t
27 #  field name       , Ptr CChar
28 #  field num_func   , CInt
29 #  field is_metadata, CInt
30 #  field destroy    , FunPtr (Ptr () -> IO ())
31 #  field read       , FunPtr (Ptr <apr_bucket> -> Ptr (Ptr CChar) -> Ptr <apr_size_t> -> <apr_read_type_e> -> IO <apr_status_t>)
32 #  field setaside   , FunPtr (Ptr <apr_bucket> -> Ptr <apr_pool_t> -> IO <apr_status_t>)
33 #  field split      , FunPtr (Ptr <apr_bucket> -> <apr_size_t> -> IO <apr_status_t>)
34 #  field copy       , FunPtr (Ptr <apr_bucket> -> Ptr (Ptr <apr_bucket>) -> IO <apr_status_t>)
35 #stoptype
36
37 #starttype struct apr_bucket
38 #  apr_ring_entry_field link, <apr_bucket>
39 #  field type  , Ptr <apr_bucket_type_t>
40 #  field length, <apr_size_t>
41 #  field start , <apr_off_t>
42 #  field data  , Ptr ()
43 #  field free  , FunPtr (Ptr () -> IO ())
44 #  field list  , Ptr <apr_bucket_alloc_t>
45 #stoptype
46
47 #apr_ring_head_t apr_bucket_list, <apr_bucket>
48 #starttype struct apr_bucket_brigade
49 #  field p           , Ptr <apr_pool_t>
50 #  field list        , <apr_bucket_list>
51 #  field bucket_alloc, Ptr <apr_bucket_alloc_t>
52 #stoptype
53
54 #callback apr_brigade_flush, Ptr <apr_bucket_brigade> -> Ptr () -> IO <apr_status_t>
55
56 #cinline APR_BRIGADE_CHECK_CONSISTENCY, Ptr <apr_bucket_brigade> -> IO ()
57 #cinline APR_BUCKET_CHECK_CONSISTENCY , Ptr <apr_bucket> -> IO ()
58
59 #cinline APR_BRIGADE_SENTINEL   , Ptr <apr_bucket_brigade> -> IO (Ptr <apr_bucket>)
60 #cinline APR_BRIGADE_EMPTY      , Ptr <apr_bucket_brigade> -> IO CInt
61 #cinline APR_BRIGADE_FIRST      , Ptr <apr_bucket_brigade> -> IO (Ptr <apr_bucket>)
62 #cinline APR_BRIGADE_LAST       , Ptr <apr_bucket_brigade> -> IO (Ptr <apr_bucket>)
63 #cinline APR_BRIGADE_INSERT_HEAD, Ptr <apr_bucket_brigade> -> Ptr <apr_bucket> -> IO ()
64 #cinline APR_BRIGADE_INSERT_TAIL, Ptr <apr_bucket_brigade> -> Ptr <apr_bucket> -> IO ()
65 #cinline APR_BRIGADE_CONCAT     , Ptr <apr_bucket_brigade> -> Ptr <apr_bucket_brigade> -> IO ()
66 #cinline APR_BRIGADE_PREPEND    , Ptr <apr_bucket_brigade> -> Ptr <apr_bucket_brigade> -> IO ()
67
68 #cinline APR_BUCKET_INSERT_BEFORE, Ptr <apr_bucket> -> Ptr <apr_bucket> -> IO ()
69 #cinline APR_BUCKET_INSERT_AFTER , Ptr <apr_bucket> -> Ptr <apr_bucket> -> IO ()
70 #cinline APR_BUCKET_NEXT         , Ptr <apr_bucket> -> IO (Ptr <apr_bucket>)
71 #cinline APR_BUCKET_PREV         , Ptr <apr_bucket> -> IO (Ptr <apr_bucket>)
72 #cinline APR_BUCKET_REMOVE       , Ptr <apr_bucket> -> IO ()
73 #cinline APR_BUCKET_INIT         , Ptr <apr_bucket> -> IO ()
74 #cinline APR_BUCKET_IS_METADATA  , Ptr <apr_bucket> -> IO CInt
75 #cinline APR_BUCKET_IS_FLUSH     , Ptr <apr_bucket> -> IO CInt
76 #cinline APR_BUCKET_IS_EOS       , Ptr <apr_bucket> -> IO CInt
77 #cinline APR_BUCKET_IS_FILE      , Ptr <apr_bucket> -> IO CInt
78 #cinline APR_BUCKET_IS_PIPE      , Ptr <apr_bucket> -> IO CInt
79 #cinline APR_BUCKET_IS_SOCKET    , Ptr <apr_bucket> -> IO CInt
80 #cinline APR_BUCKET_IS_HEAP      , Ptr <apr_bucket> -> IO CInt
81 #cinline APR_BUCKET_IS_TRANSIENT , Ptr <apr_bucket> -> IO CInt
82 #cinline APR_BUCKET_IS_IMMORTAL  , Ptr <apr_bucket> -> IO CInt
83 #if APR_HAS_MMAP
84 #  cinline APR_BUCKET_IS_MMAP    , Ptr <apr_bucket> -> IO CInt
85 #endif
86 #cinline APR_BUCKET_IS_POOL      , Ptr <apr_bucket> -> IO CInt
87
88 #starttype struct apr_bucket_refcount
89 #  field refcount, CInt
90 #stoptype
91
92 #starttype struct apr_bucket_heap
93 #  field refcount , <apr_bucket_refcount>
94 #  field base     , Ptr CChar
95 #  field alloc_len, <apr_size_t>
96 #  field free_func, FunPtr (Ptr () -> IO ())
97 #stoptype
98
99 #starttype struct apr_bucket_pool
100 #  field heap, <apr_bucket_heap>
101 #  field base, Ptr CChar
102 #  field pool, Ptr <apr_pool_t>
103 #  field list, Ptr <apr_bucket_alloc_t>
104 #stoptype
105
106 #if APR_HAS_MMAP
107 #  starttype struct apr_bucket_mmap
108 #    field refcount, <apr_bucket_refcount>
109 #    field mmap    , <apr_mmap_t>
110 #  stoptype
111 #endif
112
113 #starttype struct apr_bucket_file
114 #  field refcount, <apr_bucket_refcount>
115 #  field fd      , Ptr <apr_file_t>
116 #  field readpool, Ptr <apr_pool_t>
117 #  if APR_HAS_MMAP
118 #    field can_mmap, CInt
119 #  endif
120 #stoptype
121
122 #starttype union apr_bucket_structs
123 #  union_field b   , <apr_bucket>
124 #  union_field heap, <apr_bucket_heap>
125 #  union_field pool, <apr_bucket_pool>
126 #  if APR_HAS_MMAP
127 #    union_field mmap, <apr_bucket_mmap>
128 #  endif
129 #  union_field file, <apr_bucket_file>
130 #stoptype
131
132 #num APR_BUCKET_ALLOC_SIZE
133
134 #ccall apr_brigade_create     , Ptr <apr_pool_t> -> Ptr <apr_bucket_alloc_t> -> IO (Ptr <apr_bucket_brigade>)
135 #ccall apr_brigade_destroy    , Ptr <apr_bucket_brigade> -> IO <apr_status_t>
136 #ccall apr_brigade_cleanup    , Ptr () -> IO <apr_status_t>
137 #ccall apr_brigade_split_ex   , Ptr <apr_bucket_brigade> -> Ptr <apr_bucket> -> Ptr <apr_bucket_brigade> -> IO (Ptr <apr_bucket_brigade>)
138 #ccall apr_brigade_split      , Ptr <apr_bucket_brigade> -> Ptr <apr_bucket> -> IO (Ptr <apr_bucket_brigade>)
139 #ccall apr_brigade_partition  , Ptr <apr_bucket_brigade> -> <apr_off_t> -> Ptr (Ptr <apr_bucket>) -> IO <apr_status_t>
140 #ccall apr_brigade_length     , Ptr <apr_bucket_brigade> -> CInt -> Ptr <apr_off_t> -> IO <apr_status_t>
141 #ccall apr_brigade_flatten    , Ptr <apr_bucket_brigade> -> Ptr CChar -> Ptr <apr_size_t> -> IO <apr_status_t>
142 #ccall apr_brigade_pflatten   , Ptr <apr_bucket_brigade> -> Ptr (Ptr CChar) -> Ptr <apr_size_t> -> Ptr <apr_pool_t> -> IO <apr_status_t>
143 #ccall apr_brigade_split_line , Ptr <apr_bucket_brigade> -> Ptr <apr_bucket_brigade> -> <apr_read_type_e> -> <apr_off_t> -> IO <apr_status_t>
144 #ccall apr_brigade_to_iovec   , Ptr <apr_bucket_brigade> -> Ptr <iovec> -> Ptr CInt -> <apr_status_t>
145 -- FIXME: apr_brigade_to_vputstrs takes va_list
146 #ccall apr_brigade_write      , Ptr <apr_bucket_brigade> -> <apr_brigade_flush> -> Ptr () -> Ptr CChar -> <apr_size_t> -> IO <apr_status_t>
147 #ccall apr_brigade_writev     , Ptr <apr_bucket_brigade> -> <apr_brigade_flush> -> Ptr () -> Ptr <iovec> -> <apr_size_t> -> IO <apr_status_t>
148 #ccall apr_brigade_puts       , Ptr <apr_bucket_brigade> -> <apr_brigade_flush> -> Ptr () -> Ptr CChar -> IO <apr_status_t>
149 #ccall apr_brigade_putc       , Ptr <apr_bucket_brigade> -> <apr_brigade_flush> -> Ptr () -> CChar -> IO <apr_status_t>
150 -- FIXME: apr_brigade_putstrs takes varargs
151 -- FIXME: apr_brigade_printf takes varargs
152 -- FIXME: apr_brigade_vprintf takes va_list
153 #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>)
154
155 #ccall apr_bucket_alloc_create   , Ptr <apr_pool_t> -> Ptr (<apr_bucket_alloc_t>)
156 #ccall apr_bucket_alloc_create_ex, Ptr <apr_allocator_t> -> Ptr (<apr_bucket_alloc_t>)
157 #ccall apr_bucket_alloc_destroy  , Ptr <apr_bucket_alloc_t> -> IO ()
158 #ccall apr_bucket_alloc          , <apr_size_t> -> Ptr <apr_bucket_alloc_t> -> IO (Ptr ())
159 #ccall apr_bucket_free           , Ptr () -> IO ()
160
161 #cinline apr_bucket_destroy , Ptr <apr_bucket> -> IO ()
162 #cinline apr_bucket_delete  , Ptr <apr_bucket> -> IO ()
163 #cinline apr_bucket_read    , Ptr <apr_bucket> -> Ptr (Ptr CChar) -> Ptr <apr_size_t> -> <apr_read_type_e> -> IO <apr_status_t>
164 #cinline apr_bucket_setaside, Ptr <apr_bucket> -> Ptr <apr_pool_t> -> IO <apr_status_t>
165 #cinline apr_bucket_split   , Ptr <apr_bucket> -> <apr_size_t> -> IO <apr_status_t>
166 #cinline apr_bucket_copy    , Ptr <apr_bucket> -> Ptr (Ptr <apr_bucket>) -> IO <apr_status_t>
167
168 #ccall apr_bucket_setaside_noop   , Ptr <apr_bucket> -> Ptr <apr_pool_t> -> IO <apr_status_t>
169 #ccall apr_bucket_setaside_notimpl, Ptr <apr_bucket> -> Ptr <apr_pool_t> -> IO <apr_status_t>
170 #ccall apr_bucket_split_notimpl   , Ptr <apr_bucket> -> <apr_size_t> -> IO <apr_status_t>
171 #ccall apr_bucket_copy_notimpl    , Ptr <apr_bucket> -> Ptr (Ptr <apr_bucket>) -> IO <apr_status_t>
172 #ccall apr_bucket_destroy_noop    , Ptr () -> IO ()
173
174 #globalvar apr_bucket_type_flush    , <apr_bucket_type_t>
175 #globalvar apr_bucket_type_eos      , <apr_bucket_type_t>
176 #globalvar apr_bucket_type_file     , <apr_bucket_type_t>
177 #globalvar apr_bucket_type_heap     , <apr_bucket_type_t>
178 #if APR_HAS_MMAP
179 #  globalvar apr_bucket_type_mmap   , <apr_bucket_type_t>
180 #endif
181 #globalvar apr_bucket_type_pool     , <apr_bucket_type_t>
182 #globalvar apr_bucket_type_pipe     , <apr_bucket_type_t>
183 #globalvar apr_bucket_type_immortal , <apr_bucket_type_t>
184 #globalvar apr_bucket_type_transient, <apr_bucket_type_t>
185 #globalvar apr_bucket_type_socket   , <apr_bucket_type_t>
186
187 #ccall apr_bucket_simple_split, Ptr <apr_bucket> -> <apr_size_t> -> IO <apr_status_t>
188 #ccall apr_bucket_simple_copy , Ptr <apr_bucket> -> Ptr (Ptr <apr_bucket>) -> IO <apr_status_t>
189
190 #ccall apr_bucket_shared_make   , Ptr <apr_bucket> -> Ptr () -> <apr_off_t> -> <apr_size_t> -> IO (Ptr <apr_bucket>)
191 #ccall apr_bucket_shared_destroy, Ptr () -> IO CInt
192 #ccall apr_bucket_shared_split  , Ptr <apr_bucket> -> <apr_size_t> -> IO <apr_status_t>
193 #ccall apr_bucket_shared_copy   , Ptr <apr_bucket> -> Ptr (Ptr <apr_bucket>) -> IO <apr_status_t>
194
195 #ccall apr_bucket_eos_create      , Ptr <apr_bucket_alloc_t> -> IO (Ptr <apr_bucket>)
196 #ccall apr_bucket_eos_make        , Ptr <apr_bucket> -> IO (Ptr <apr_bucket>)
197 #ccall apr_bucket_flush_create    , Ptr <apr_bucket_alloc_t> -> IO (Ptr <apr_bucket>)
198 #ccall apr_bucket_flush_make      , Ptr <apr_bucket> -> IO (Ptr <apr_bucket>)
199 #ccall apr_bucket_immortal_create , Ptr CChar -> <apr_size_t> -> Ptr <apr_bucket_alloc_t> -> IO (Ptr <apr_bucket>)
200 #ccall apr_bucket_immortal_make   , Ptr <apr_bucket> -> Ptr CChar -> <apr_size_t> -> IO (Ptr <apr_bucket>)
201 #ccall apr_bucket_transient_create, Ptr CChar -> <apr_size_t> -> Ptr <apr_bucket_alloc_t> -> IO (Ptr <apr_bucket>)
202 #ccall apr_bucket_transient_make  , Ptr <apr_bucket> -> Ptr CChar -> <apr_size_t> -> IO (Ptr <apr_bucket>)
203 #ccall apr_bucket_heap_create     , Ptr CChar -> <apr_size_t> -> FunPtr (Ptr () -> IO ()) -> Ptr <apr_bucket_alloc_t> -> IO (Ptr <apr_bucket>)
204 #ccall apr_bucket_heap_make       , Ptr <apr_bucket> -> Ptr CChar -> <apr_size_t> -> FunPtr (Ptr () -> IO ()) -> IO (Ptr <apr_bucket>)
205 #ccall apr_bucket_pool_create     , Ptr CChar -> <apr_size_t> -> Ptr <apr_pool_t> -> Ptr <apr_bucket_alloc_t> -> IO (Ptr <apr_bucket>)
206 #ccall apr_bucket_pool_make       , Ptr <apr_bucket> -> Ptr CChar -> <apr_size_t> -> Ptr <apr_pool_t> -> IO (Ptr <apr_bucket>)
207 #if APR_HAS_MMAP
208 #  ccall apr_bucket_mmap_create   , Ptr <apr_mmap_t> -> <apr_off_t> -> <apr_size_t> -> Ptr <apr_bucket_alloc_t> -> IO (Ptr <apr_bucket>)
209 #  ccall apr_bucket_mmap_make     , Ptr <apr_bucket> -> Ptr <apr_mmap_t> -> <apr_off_t> -> <apr_size_t> -> IO (Ptr <apr_bucket>)
210 #endif
211 #ccall apr_bucket_socket_create   , Ptr <apr_socket_t> -> Ptr <apr_bucket_alloc_t> -> IO (Ptr <apr_bucket>)
212 #ccall apr_bucket_socket_make     , Ptr <apr_bucket> -> Ptr <apr_socket_t> -> IO (Ptr <apr_bucket>)
213 #ccall apr_bucket_pipe_create     , Ptr <apr_file_t> -> Ptr <apr_bucket_alloc_t> -> IO (Ptr <apr_bucket>)
214 #ccall apr_bucket_pipe_make       , Ptr <apr_bucket> -> Ptr <apr_file_t> -> IO (Ptr <apr_bucket>)
215 #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>)
216 #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>)
217 #ccall apr_bucket_file_enable_mmap, Ptr <apr_bucket> -> CInt -> IO <apr_status_t>