You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@apr.apache.org by je...@apache.org on 2005/02/08 00:11:52 UTC
svn commit: r151768 [5/47] - in apr/site/trunk/docs/docs/apr: ./ iconv/ util/
Modified: apr/site/trunk/docs/docs/apr-util/apr__buckets_8h-source.html
URL: http://svn.apache.org/viewcvs/apr/site/trunk/docs/docs/apr-util/apr__buckets_8h-source.html?view=diff&r1=151767&r2=151768
==============================================================================
--- apr/site/trunk/docs/docs/apr-util/apr__buckets_8h-source.html (original)
+++ apr/site/trunk/docs/docs/apr-util/apr__buckets_8h-source.html Mon Feb 7 15:10:17 2005
@@ -3,528 +3,537 @@
<title>Apache Portable Runtime Utility Library: include/apr_buckets.h Source File</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
-<!-- Generated by Doxygen 1.3.8 -->
+<!-- Generated by Doxygen 1.3.7 -->
<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="annotated.html">Data Structures</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="functions.html">Data Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>include/apr_buckets.h</h1><a href="apr__buckets_8h.html">Go to the documentation of this file.</a><pre class="fragment"><div>00001 <span class="comment">/* Copyright 2000-2004 The Apache Software Foundation</span>
-00002 <span class="comment"> *</span>
-00003 <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span>
-00004 <span class="comment"> * you may not use this file except in compliance with the License.</span>
-00005 <span class="comment"> * You may obtain a copy of the License at</span>
-00006 <span class="comment"> *</span>
-00007 <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span>
-00008 <span class="comment"> *</span>
-00009 <span class="comment"> * Unless required by applicable law or agreed to in writing, software</span>
-00010 <span class="comment"> * distributed under the License is distributed on an "AS IS" BASIS,</span>
-00011 <span class="comment"> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span>
-00012 <span class="comment"> * See the License for the specific language governing permissions and</span>
-00013 <span class="comment"> * limitations under the License.</span>
-00014 <span class="comment"> */</span>
-00020 <span class="preprocessor">#ifndef APR_BUCKETS_H</span>
-00021 <span class="preprocessor"></span><span class="preprocessor">#define APR_BUCKETS_H</span>
-00022 <span class="preprocessor"></span>
-00023 <span class="preprocessor">#if defined(APR_BUCKET_DEBUG) && !defined(APR_RING_DEBUG)</span>
-00024 <span class="preprocessor"></span><span class="preprocessor">#define APR_RING_DEBUG</span>
-00025 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-00026 <span class="preprocessor"></span>
-00027 <span class="preprocessor">#include "apu.h"</span>
-00028 <span class="preprocessor">#include "apr_network_io.h"</span>
-00029 <span class="preprocessor">#include "apr_file_io.h"</span>
-00030 <span class="preprocessor">#include "apr_general.h"</span>
-00031 <span class="preprocessor">#include "apr_mmap.h"</span>
-00032 <span class="preprocessor">#include "apr_errno.h"</span>
-00033 <span class="preprocessor">#include "apr_ring.h"</span>
-00034 <span class="preprocessor">#include "apr.h"</span>
-00035 <span class="preprocessor">#if APR_HAVE_SYS_UIO_H</span>
-00036 <span class="preprocessor"></span><span class="preprocessor">#include <sys/uio.h></span> <span class="comment">/* for struct iovec */</span>
-00037 <span class="preprocessor">#endif</span>
-00038 <span class="preprocessor"></span><span class="preprocessor">#if APR_HAVE_STDARG_H</span>
-00039 <span class="preprocessor"></span><span class="preprocessor">#include <stdarg.h></span>
-00040 <span class="preprocessor">#endif</span>
-00041 <span class="preprocessor"></span>
-00042 <span class="preprocessor">#ifdef __cplusplus</span>
-00043 <span class="preprocessor"></span><span class="keyword">extern</span> <span class="stringliteral">"C"</span> {
-00044 <span class="preprocessor">#endif</span>
-00045 <span class="preprocessor"></span>
-<a name="l00053"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#ga76">00053</a> <span class="preprocessor">#define APR_BUCKET_BUFF_SIZE 8000</span>
-00054 <span class="preprocessor"></span>
-<a name="l00056"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#ga111">00056</a> <span class="keyword">typedef</span> <span class="keyword">enum</span> {
-00057 <a class="code" href="group___a_p_r___util___bucket___brigades.html#gga111a56">APR_BLOCK_READ</a>,
-00058 <a class="code" href="group___a_p_r___util___bucket___brigades.html#gga111a57">APR_NONBLOCK_READ</a>
-00059 } <a class="code" href="group___a_p_r___util___bucket___brigades.html#ga111">apr_read_type_e</a>;
-00060
-00113 <span class="comment">/*</span>
-00114 <span class="comment"> * Forward declaration of the main types.</span>
-00115 <span class="comment"> */</span>
-00116
-<a name="l00118"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#ga0">00118</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structapr__bucket__brigade.html">apr_bucket_brigade</a> <a class="code" href="group___a_p_r___util___bucket___brigades.html#ga0">apr_bucket_brigade</a>;
-<a name="l00120"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#ga1">00120</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structapr__bucket.html">apr_bucket</a> <a class="code" href="group___a_p_r___util___bucket___brigades.html#ga1">apr_bucket</a>;
-<a name="l00122"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#ga2">00122</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="group___a_p_r___util___bucket___brigades.html#ga2">apr_bucket_alloc_t</a> <a class="code" href="group___a_p_r___util___bucket___brigades.html#ga2">apr_bucket_alloc_t</a>;
-00123
-<a name="l00125"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#ga3">00125</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structapr__bucket__type__t.html">apr_bucket_type_t</a> <a class="code" href="group___a_p_r___util___bucket___brigades.html#ga3">apr_bucket_type_t</a>;
-00126
-<a name="l00130"></a><a class="code" href="structapr__bucket__type__t.html">00130</a> <span class="keyword">struct </span><a class="code" href="group___a_p_r___util___bucket___brigades.html#ga3">apr_bucket_type_t</a> {
-<a name="l00134"></a><a class="code" href="structapr__bucket__type__t.html#o0">00134</a> <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structapr__bucket__type__t.html#o0">name</a>;
-<a name="l00139"></a><a class="code" href="structapr__bucket__type__t.html#o1">00139</a> <span class="keywordtype">int</span> <a class="code" href="structapr__bucket__type__t.html#o1">num_func</a>;
-00150 <span class="keyword">enum</span> {
-00152 <a class="code" href="structapr__bucket__type__t.html#w2w0">APR_BUCKET_DATA</a> = 0,
-00154 <a class="code" href="structapr__bucket__type__t.html#w2w1">APR_BUCKET_METADATA</a> = 1
-00155 } is_metadata;
-00163 void (*destroy)(<span class="keywordtype">void</span> *data);
-00164
-00175 apr_status_t (*read)(<a class="code" href="group___a_p_r___util___bucket___brigades.html#ga1">apr_bucket</a> *b, <span class="keyword">const</span> <span class="keywordtype">char</span> **str, apr_size_t *len,
-00176 <a class="code" href="group___a_p_r___util___bucket___brigades.html#ga111">apr_read_type_e</a> block);
-00177
-00191 apr_status_t (*setaside)(<a class="code" href="group___a_p_r___util___bucket___brigades.html#ga1">apr_bucket</a> *e, apr_pool_t *pool);
-00192
-00202 apr_status_t (*split)(<a class="code" href="group___a_p_r___util___bucket___brigades.html#ga1">apr_bucket</a> *e, apr_size_t point);
-00203
-00210 apr_status_t (*copy)(<a class="code" href="group___a_p_r___util___bucket___brigades.html#ga1">apr_bucket</a> *e, <a class="code" href="group___a_p_r___util___bucket___brigades.html#ga1">apr_bucket</a> **c);
-00211
-00212 };
-00213
-<a name="l00223"></a><a class="code" href="structapr__bucket.html">00223</a> <span class="keyword">struct </span><a class="code" href="group___a_p_r___util___bucket___brigades.html#ga1">apr_bucket</a> {
-00225 <a class="code" href="structapr__bucket.html#a0">APR_RING_ENTRY</a>(<a class="code" href="group___a_p_r___util___bucket___brigades.html#ga1">apr_bucket</a>) link;
-<a name="l00227"></a><a class="code" href="structapr__bucket.html#o0">00227</a> <span class="keyword">const</span> <a class="code" href="group___a_p_r___util___bucket___brigades.html#ga3">apr_bucket_type_t</a> *<a class="code" href="structapr__bucket.html#o0">type</a>;
-<a name="l00233"></a><a class="code" href="structapr__bucket.html#o1">00233</a> apr_size_t <a class="code" href="structapr__bucket.html#o1">length</a>;
-<a name="l00241"></a><a class="code" href="structapr__bucket.html#o2">00241</a> apr_off_t <a class="code" href="structapr__bucket.html#o2">start</a>;
-<a name="l00243"></a><a class="code" href="structapr__bucket.html#o3">00243</a> <span class="keywordtype">void</span> *<a class="code" href="structapr__bucket.html#o3">data</a>;
-00251 void (*free)(<span class="keywordtype">void</span> *e);
-<a name="l00253"></a><a class="code" href="structapr__bucket.html#o5">00253</a> <a class="code" href="group___a_p_r___util___bucket___brigades.html#ga2">apr_bucket_alloc_t</a> *<a class="code" href="structapr__bucket.html#o5">list</a>;
-00254 };
-00255
-<a name="l00257"></a><a class="code" href="structapr__bucket__brigade.html">00257</a> <span class="keyword">struct </span><a class="code" href="group___a_p_r___util___bucket___brigades.html#ga0">apr_bucket_brigade</a> {
-<a name="l00263"></a><a class="code" href="structapr__bucket__brigade.html#o0">00263</a> apr_pool_t *<a class="code" href="structapr__bucket__brigade.html#o0">p</a>;
-00265 <span class="comment">/*</span>
-00266 <span class="comment"> * The apr_bucket_list structure doesn't actually need a name tag</span>
-00267 <span class="comment"> * because it has no existence independent of struct apr_bucket_brigade;</span>
-00268 <span class="comment"> * the ring macros are designed so that you can leave the name tag</span>
-00269 <span class="comment"> * argument empty in this situation but apparently the Windows compiler</span>
-00270 <span class="comment"> * doesn't like that.</span>
-00271 <span class="comment"> */</span>
-00272 <a class="code" href="structapr__bucket__brigade.html#a0">APR_RING_HEAD</a>(apr_bucket_list, apr_bucket) list;
-<a name="l00274"></a><a class="code" href="structapr__bucket__brigade.html#o1">00274</a> apr_bucket_alloc_t *bucket_alloc;
-00275 };
-00276
+<h1>include/apr_buckets.h</h1><a href="apr__buckets_8h.html">Go to the documentation of this file.</a><pre class="fragment"><div>00001 <span class="comment">/* Copyright 2000-2005 The Apache Software Foundation or its licensors, as</span>
+00002 <span class="comment"> * applicable.</span>
+00003 <span class="comment"> *</span>
+00004 <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span>
+00005 <span class="comment"> * you may not use this file except in compliance with the License.</span>
+00006 <span class="comment"> * You may obtain a copy of the License at</span>
+00007 <span class="comment"> *</span>
+00008 <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span>
+00009 <span class="comment"> *</span>
+00010 <span class="comment"> * Unless required by applicable law or agreed to in writing, software</span>
+00011 <span class="comment"> * distributed under the License is distributed on an "AS IS" BASIS,</span>
+00012 <span class="comment"> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span>
+00013 <span class="comment"> * See the License for the specific language governing permissions and</span>
+00014 <span class="comment"> * limitations under the License.</span>
+00015 <span class="comment"> */</span>
+00021 <span class="preprocessor">#ifndef APR_BUCKETS_H</span>
+00022 <span class="preprocessor"></span><span class="preprocessor">#define APR_BUCKETS_H</span>
+00023 <span class="preprocessor"></span>
+00024 <span class="preprocessor">#if defined(APR_BUCKET_DEBUG) && !defined(APR_RING_DEBUG)</span>
+00025 <span class="preprocessor"></span><span class="preprocessor">#define APR_RING_DEBUG</span>
+00026 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+00027 <span class="preprocessor"></span>
+00028 <span class="preprocessor">#include "apu.h"</span>
+00029 <span class="preprocessor">#include "apr_network_io.h"</span>
+00030 <span class="preprocessor">#include "apr_file_io.h"</span>
+00031 <span class="preprocessor">#include "apr_general.h"</span>
+00032 <span class="preprocessor">#include "apr_mmap.h"</span>
+00033 <span class="preprocessor">#include "apr_errno.h"</span>
+00034 <span class="preprocessor">#include "apr_ring.h"</span>
+00035 <span class="preprocessor">#include "apr.h"</span>
+00036 <span class="preprocessor">#if APR_HAVE_SYS_UIO_H</span>
+00037 <span class="preprocessor"></span><span class="preprocessor">#include <sys/uio.h></span> <span class="comment">/* for struct iovec */</span>
+00038 <span class="preprocessor">#endif</span>
+00039 <span class="preprocessor"></span><span class="preprocessor">#if APR_HAVE_STDARG_H</span>
+00040 <span class="preprocessor"></span><span class="preprocessor">#include <stdarg.h></span>
+00041 <span class="preprocessor">#endif</span>
+00042 <span class="preprocessor"></span>
+00043 <span class="preprocessor">#ifdef __cplusplus</span>
+00044 <span class="preprocessor"></span><span class="keyword">extern</span> <span class="stringliteral">"C"</span> {
+00045 <span class="preprocessor">#endif</span>
+00046 <span class="preprocessor"></span>
+<a name="l00054"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#ga77">00054</a> <span class="preprocessor">#define APR_BUCKET_BUFF_SIZE 8000</span>
+00055 <span class="preprocessor"></span>
+<a name="l00057"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#ga112">00057</a> <span class="keyword">typedef</span> <span class="keyword">enum</span> {
+00058 <a class="code" href="group___a_p_r___util___bucket___brigades.html#gga112a56">APR_BLOCK_READ</a>,
+00059 <a class="code" href="group___a_p_r___util___bucket___brigades.html#gga112a57">APR_NONBLOCK_READ</a>
+00060 } <a class="code" href="group___a_p_r___util___bucket___brigades.html#ga112">apr_read_type_e</a>;
+00061
+00114 <span class="comment">/*</span>
+00115 <span class="comment"> * Forward declaration of the main types.</span>
+00116 <span class="comment"> */</span>
+00117
+<a name="l00119"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#ga0">00119</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structapr__bucket__brigade.html">apr_bucket_brigade</a> <a class="code" href="group___a_p_r___util___bucket___brigades.html#ga0">apr_bucket_brigade</a>;
+<a name="l00121"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#ga1">00121</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structapr__bucket.html">apr_bucket</a> <a class="code" href="group___a_p_r___util___bucket___brigades.html#ga1">apr_bucket</a>;
+<a name="l00123"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#ga2">00123</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="group___a_p_r___util___bucket___brigades.html#ga2">apr_bucket_alloc_t</a> <a class="code" href="group___a_p_r___util___bucket___brigades.html#ga2">apr_bucket_alloc_t</a>;
+00124
+<a name="l00126"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#ga3">00126</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structapr__bucket__type__t.html">apr_bucket_type_t</a> <a class="code" href="group___a_p_r___util___bucket___brigades.html#ga3">apr_bucket_type_t</a>;
+00127
+<a name="l00131"></a><a class="code" href="structapr__bucket__type__t.html">00131</a> <span class="keyword">struct </span><a class="code" href="group___a_p_r___util___bucket___brigades.html#ga3">apr_bucket_type_t</a> {
+<a name="l00135"></a><a class="code" href="structapr__bucket__type__t.html#o0">00135</a> <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structapr__bucket__type__t.html#o0">name</a>;
+<a name="l00140"></a><a class="code" href="structapr__bucket__type__t.html#o1">00140</a> <span class="keywordtype">int</span> <a class="code" href="structapr__bucket__type__t.html#o1">num_func</a>;
+00151 <span class="keyword">enum</span> {
+00153 <a class="code" href="structapr__bucket__type__t.html#w2w0">APR_BUCKET_DATA</a> = 0,
+00155 <a class="code" href="structapr__bucket__type__t.html#w2w1">APR_BUCKET_METADATA</a> = 1
+00156 } is_metadata;
+00164 void (*destroy)(<span class="keywordtype">void</span> *data);
+00165
+00176 apr_status_t (*read)(<a class="code" href="group___a_p_r___util___bucket___brigades.html#ga1">apr_bucket</a> *b, <span class="keyword">const</span> <span class="keywordtype">char</span> **str, apr_size_t *len,
+00177 <a class="code" href="group___a_p_r___util___bucket___brigades.html#ga112">apr_read_type_e</a> block);
+00178
+00192 apr_status_t (*setaside)(<a class="code" href="group___a_p_r___util___bucket___brigades.html#ga1">apr_bucket</a> *e, apr_pool_t *pool);
+00193
+00203 apr_status_t (*split)(<a class="code" href="group___a_p_r___util___bucket___brigades.html#ga1">apr_bucket</a> *e, apr_size_t point);
+00204
+00211 apr_status_t (*copy)(<a class="code" href="group___a_p_r___util___bucket___brigades.html#ga1">apr_bucket</a> *e, <a class="code" href="group___a_p_r___util___bucket___brigades.html#ga1">apr_bucket</a> **c);
+00212
+00213 };
+00214
+<a name="l00224"></a><a class="code" href="structapr__bucket.html">00224</a> <span class="keyword">struct </span><a class="code" href="group___a_p_r___util___bucket___brigades.html#ga1">apr_bucket</a> {
+00226 <a class="code" href="structapr__bucket.html#a0">APR_RING_ENTRY</a>(<a class="code" href="group___a_p_r___util___bucket___brigades.html#ga1">apr_bucket</a>) link;
+<a name="l00228"></a><a class="code" href="structapr__bucket.html#o0">00228</a> <span class="keyword">const</span> <a class="code" href="group___a_p_r___util___bucket___brigades.html#ga3">apr_bucket_type_t</a> *<a class="code" href="structapr__bucket.html#o0">type</a>;
+<a name="l00234"></a><a class="code" href="structapr__bucket.html#o1">00234</a> apr_size_t <a class="code" href="structapr__bucket.html#o1">length</a>;
+<a name="l00242"></a><a class="code" href="structapr__bucket.html#o2">00242</a> apr_off_t <a class="code" href="structapr__bucket.html#o2">start</a>;
+<a name="l00244"></a><a class="code" href="structapr__bucket.html#o3">00244</a> <span class="keywordtype">void</span> *<a class="code" href="structapr__bucket.html#o3">data</a>;
+00252 void (*free)(<span class="keywordtype">void</span> *e);
+<a name="l00254"></a><a class="code" href="structapr__bucket.html#o5">00254</a> <a class="code" href="group___a_p_r___util___bucket___brigades.html#ga2">apr_bucket_alloc_t</a> *<a class="code" href="structapr__bucket.html#o5">list</a>;
+00255 };
+00256
+<a name="l00258"></a><a class="code" href="structapr__bucket__brigade.html">00258</a> <span class="keyword">struct </span><a class="code" href="group___a_p_r___util___bucket___brigades.html#ga0">apr_bucket_brigade</a> {
+<a name="l00264"></a><a class="code" href="structapr__bucket__brigade.html#o0">00264</a> apr_pool_t *<a class="code" href="structapr__bucket__brigade.html#o0">p</a>;
+00266 <span class="comment">/*</span>
+00267 <span class="comment"> * The apr_bucket_list structure doesn't actually need a name tag</span>
+00268 <span class="comment"> * because it has no existence independent of struct apr_bucket_brigade;</span>
+00269 <span class="comment"> * the ring macros are designed so that you can leave the name tag</span>
+00270 <span class="comment"> * argument empty in this situation but apparently the Windows compiler</span>
+00271 <span class="comment"> * doesn't like that.</span>
+00272 <span class="comment"> */</span>
+00273 <a class="code" href="structapr__bucket__brigade.html#a0">APR_RING_HEAD</a>(apr_bucket_list, apr_bucket) list;
+<a name="l00275"></a><a class="code" href="structapr__bucket__brigade.html#o1">00275</a> apr_bucket_alloc_t *bucket_alloc;
+00276 };
00277
-<a name="l00281"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#ga4">00281</a> typedef apr_status_t (*<a class="code" href="group___a_p_r___util___bucket___brigades.html#ga4">apr_brigade_flush</a>)(apr_bucket_brigade *bb, <span class="keywordtype">void</span> *ctx);
-00282
-00283 <span class="comment">/*</span>
-00284 <span class="comment"> * define APR_BUCKET_DEBUG if you want your brigades to be checked for</span>
-00285 <span class="comment"> * validity at every possible instant. this will slow your code down</span>
-00286 <span class="comment"> * substantially but is a very useful debugging tool.</span>
-00287 <span class="comment"> */</span>
-00288 #ifdef APR_BUCKET_DEBUG
-00289
-00290 #define APR_BRIGADE_CHECK_CONSISTENCY(b) \
-00291 APR_RING_CHECK_CONSISTENCY(&(b)->list, apr_bucket, link)
-00292
-00293 #define APR_BUCKET_CHECK_CONSISTENCY(e) \
-00294 APR_RING_CHECK_ELEM_CONSISTENCY((e), apr_bucket, link)
-00295
-00296 #else
-<a name="l00303"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#ga77">00303</a> #define APR_BRIGADE_CHECK_CONSISTENCY(b)
-<a name="l00310"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#ga78">00310</a> #define APR_BUCKET_CHECK_CONSISTENCY(e)
-00311 #endif
-00312
+00278
+<a name="l00282"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#ga4">00282</a> typedef apr_status_t (*<a class="code" href="group___a_p_r___util___bucket___brigades.html#ga4">apr_brigade_flush</a>)(apr_bucket_brigade *bb, <span class="keywordtype">void</span> *ctx);
+00283
+00284 <span class="comment">/*</span>
+00285 <span class="comment"> * define APR_BUCKET_DEBUG if you want your brigades to be checked for</span>
+00286 <span class="comment"> * validity at every possible instant. this will slow your code down</span>
+00287 <span class="comment"> * substantially but is a very useful debugging tool.</span>
+00288 <span class="comment"> */</span>
+00289 #ifdef APR_BUCKET_DEBUG
+00290
+00291 #define APR_BRIGADE_CHECK_CONSISTENCY(b) \
+00292 APR_RING_CHECK_CONSISTENCY(&(b)->list, apr_bucket, link)
+00293
+00294 #define APR_BUCKET_CHECK_CONSISTENCY(e) \
+00295 APR_RING_CHECK_ELEM_CONSISTENCY((e), apr_bucket, link)
+00296
+00297 #else
+<a name="l00304"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#ga78">00304</a> #define APR_BRIGADE_CHECK_CONSISTENCY(b)
+<a name="l00311"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#ga79">00311</a> #define APR_BUCKET_CHECK_CONSISTENCY(e)
+00312 #endif
00313
-<a name="l00330"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#ga79">00330</a> #define APR_BRIGADE_SENTINEL(b) APR_RING_SENTINEL(&(b)->list, apr_bucket, link)
-00331
-<a name="l00337"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#ga80">00337</a> #define APR_BRIGADE_EMPTY(b) APR_RING_EMPTY(&(b)->list, apr_bucket, link)
-00338
-<a name="l00344"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#ga81">00344</a> #define APR_BRIGADE_FIRST(b) APR_RING_FIRST(&(b)->list)
-<a name="l00350"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#ga82">00350</a> #define APR_BRIGADE_LAST(b) APR_RING_LAST(&(b)->list)
-00351
-<a name="l00357"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#ga83">00357</a> #define APR_BRIGADE_INSERT_HEAD(b, e) do { \
-00358 <a class="code" href="group___a_p_r___util___bucket___brigades.html#ga1">apr_bucket</a> *ap__b = (e); \
-00359 APR_RING_INSERT_HEAD(&(b)->list, ap__b, <a class="code" href="group___a_p_r___util___bucket___brigades.html#ga1">apr_bucket</a>, link); \
-00360 <a class="code" href="group___a_p_r___util___bucket___brigades.html#ga77">APR_BRIGADE_CHECK_CONSISTENCY</a>((b)); \
-00361 } <span class="keywordflow">while</span> (0)
-00362
-<a name="l00368"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#ga84">00368</a> <span class="preprocessor">#define APR_BRIGADE_INSERT_TAIL(b, e) do { \</span>
-00369 <span class="preprocessor"> apr_bucket *ap__b = (e); \</span>
-00370 <span class="preprocessor"> APR_RING_INSERT_TAIL(&(b)->list, ap__b, apr_bucket, link); \</span>
-00371 <span class="preprocessor"> APR_BRIGADE_CHECK_CONSISTENCY((b)); \</span>
-00372 <span class="preprocessor"> } while (0)</span>
-00373 <span class="preprocessor"></span>
-<a name="l00379"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#ga85">00379</a> <span class="preprocessor">#define APR_BRIGADE_CONCAT(a, b) do { \</span>
-00380 <span class="preprocessor"> APR_RING_CONCAT(&(a)->list, &(b)->list, apr_bucket, link); \</span>
-00381 <span class="preprocessor"> APR_BRIGADE_CHECK_CONSISTENCY((a)); \</span>
-00382 <span class="preprocessor"> } while (0)</span>
-00383 <span class="preprocessor"></span>
-<a name="l00389"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#ga86">00389</a> <span class="preprocessor">#define APR_BRIGADE_PREPEND(a, b) do { \</span>
-00390 <span class="preprocessor"> APR_RING_PREPEND(&(a)->list, &(b)->list, apr_bucket, link); \</span>
-00391 <span class="preprocessor"> APR_BRIGADE_CHECK_CONSISTENCY((a)); \</span>
-00392 <span class="preprocessor"> } while (0)</span>
-00393 <span class="preprocessor"></span>
-<a name="l00399"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#ga87">00399</a> <span class="preprocessor">#define APR_BUCKET_INSERT_BEFORE(a, b) do { \</span>
-00400 <span class="preprocessor"> apr_bucket *ap__a = (a), *ap__b = (b); \</span>
-00401 <span class="preprocessor"> APR_RING_INSERT_BEFORE(ap__a, ap__b, link); \</span>
-00402 <span class="preprocessor"> APR_BUCKET_CHECK_CONSISTENCY(ap__a); \</span>
-00403 <span class="preprocessor"> } while (0)</span>
-00404 <span class="preprocessor"></span>
-<a name="l00410"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#ga88">00410</a> <span class="preprocessor">#define APR_BUCKET_INSERT_AFTER(a, b) do { \</span>
-00411 <span class="preprocessor"> apr_bucket *ap__a = (a), *ap__b = (b); \</span>
-00412 <span class="preprocessor"> APR_RING_INSERT_AFTER(ap__a, ap__b, link); \</span>
-00413 <span class="preprocessor"> APR_BUCKET_CHECK_CONSISTENCY(ap__a); \</span>
-00414 <span class="preprocessor"> } while (0)</span>
-00415 <span class="preprocessor"></span>
-<a name="l00421"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#ga89">00421</a> <span class="preprocessor">#define APR_BUCKET_NEXT(e) APR_RING_NEXT((e), link)</span>
-00422 <span class="preprocessor"></span>
-<a name="l00427"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#ga90">00427</a> <span class="preprocessor">#define APR_BUCKET_PREV(e) APR_RING_PREV((e), link)</span>
-00428 <span class="preprocessor"></span>
-<a name="l00433"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#ga91">00433</a> <span class="preprocessor">#define APR_BUCKET_REMOVE(e) APR_RING_REMOVE((e), link)</span>
-00434 <span class="preprocessor"></span>
-<a name="l00439"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#ga92">00439</a> <span class="preprocessor">#define APR_BUCKET_INIT(e) APR_RING_ELEM_INIT((e), link)</span>
-00440 <span class="preprocessor"></span>
-<a name="l00447"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#ga93">00447</a> <span class="preprocessor">#define APR_BUCKET_IS_METADATA(e) ((e)->type->is_metadata)</span>
-00448 <span class="preprocessor"></span>
-<a name="l00454"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#ga94">00454</a> <span class="preprocessor">#define APR_BUCKET_IS_FLUSH(e) ((e)->type == &apr_bucket_type_flush)</span>
-00455 <span class="preprocessor"></span>
-<a name="l00460"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#ga95">00460</a> <span class="preprocessor">#define APR_BUCKET_IS_EOS(e) ((e)->type == &apr_bucket_type_eos)</span>
-00461 <span class="preprocessor"></span>
-<a name="l00466"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#ga96">00466</a> <span class="preprocessor">#define APR_BUCKET_IS_FILE(e) ((e)->type == &apr_bucket_type_file)</span>
-00467 <span class="preprocessor"></span>
-<a name="l00472"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#ga97">00472</a> <span class="preprocessor">#define APR_BUCKET_IS_PIPE(e) ((e)->type == &apr_bucket_type_pipe)</span>
-00473 <span class="preprocessor"></span>
-<a name="l00478"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#ga98">00478</a> <span class="preprocessor">#define APR_BUCKET_IS_SOCKET(e) ((e)->type == &apr_bucket_type_socket)</span>
-00479 <span class="preprocessor"></span>
-<a name="l00484"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#ga99">00484</a> <span class="preprocessor">#define APR_BUCKET_IS_HEAP(e) ((e)->type == &apr_bucket_type_heap)</span>
-00485 <span class="preprocessor"></span>
-<a name="l00490"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#ga100">00490</a> <span class="preprocessor">#define APR_BUCKET_IS_TRANSIENT(e) ((e)->type == &apr_bucket_type_transient)</span>
-00491 <span class="preprocessor"></span>
-<a name="l00496"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#ga101">00496</a> <span class="preprocessor">#define APR_BUCKET_IS_IMMORTAL(e) ((e)->type == &apr_bucket_type_immortal)</span>
-00497 <span class="preprocessor"></span><span class="preprocessor">#if APR_HAS_MMAP</span>
-00498 <span class="preprocessor"></span>
-<a name="l00503"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#ga102">00503</a> <span class="preprocessor">#define APR_BUCKET_IS_MMAP(e) ((e)->type == &apr_bucket_type_mmap)</span>
-00504 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-00505 <span class="preprocessor"></span>
-<a name="l00510"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#ga103">00510</a> <span class="preprocessor">#define APR_BUCKET_IS_POOL(e) ((e)->type == &apr_bucket_type_pool)</span>
-00511 <span class="preprocessor"></span>
-00512 <span class="comment">/*</span>
-00513 <span class="comment"> * General-purpose reference counting for the various bucket types.</span>
-00514 <span class="comment"> *</span>
-00515 <span class="comment"> * Any bucket type that keeps track of the resources it uses (i.e.</span>
-00516 <span class="comment"> * most of them except for IMMORTAL, TRANSIENT, and EOS) needs to</span>
-00517 <span class="comment"> * attach a reference count to the resource so that it can be freed</span>
-00518 <span class="comment"> * when the last bucket that uses it goes away. Resource-sharing may</span>
-00519 <span class="comment"> * occur because of bucket splits or buckets that refer to globally</span>
-00520 <span class="comment"> * cached data. */</span>
-00521
-<a name="l00523"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#ga5">00523</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structapr__bucket__refcount.html">apr_bucket_refcount</a> <a class="code" href="group___a_p_r___util___bucket___brigades.html#ga5">apr_bucket_refcount</a>;
-<a name="l00530"></a><a class="code" href="structapr__bucket__refcount.html">00530</a> <span class="keyword">struct </span><a class="code" href="group___a_p_r___util___bucket___brigades.html#ga5">apr_bucket_refcount</a> {
-<a name="l00532"></a><a class="code" href="structapr__bucket__refcount.html#o0">00532</a> <span class="keywordtype">int</span> refcount;
-00533 };
-00534
-00535 <span class="comment">/* ***** Reference-counted bucket types ***** */</span>
-00536
-<a name="l00538"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#ga6">00538</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structapr__bucket__heap.html">apr_bucket_heap</a> <a class="code" href="group___a_p_r___util___bucket___brigades.html#ga6">apr_bucket_heap</a>;
-<a name="l00542"></a><a class="code" href="structapr__bucket__heap.html">00542</a> <span class="keyword">struct </span><a class="code" href="group___a_p_r___util___bucket___brigades.html#ga6">apr_bucket_heap</a> {
-<a name="l00544"></a><a class="code" href="structapr__bucket__heap.html#o0">00544</a> <a class="code" href="group___a_p_r___util___bucket___brigades.html#ga5">apr_bucket_refcount</a> refcount;
-<a name="l00548"></a><a class="code" href="structapr__bucket__heap.html#o1">00548</a> <span class="keywordtype">char</span> *base;
-<a name="l00550"></a><a class="code" href="structapr__bucket__heap.html#o2">00550</a> apr_size_t alloc_len;
-00552 void (*free_func)(<span class="keywordtype">void</span> *data);
-00553 };
-00554
-<a name="l00556"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#ga7">00556</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structapr__bucket__pool.html">apr_bucket_pool</a> <a class="code" href="group___a_p_r___util___bucket___brigades.html#ga7">apr_bucket_pool</a>;
-<a name="l00560"></a><a class="code" href="structapr__bucket__pool.html">00560</a> <span class="keyword">struct </span><a class="code" href="group___a_p_r___util___bucket___brigades.html#ga7">apr_bucket_pool</a> {
-<a name="l00572"></a><a class="code" href="structapr__bucket__pool.html#o0">00572</a> <a class="code" href="group___a_p_r___util___bucket___brigades.html#ga6">apr_bucket_heap</a> heap;
-<a name="l00578"></a><a class="code" href="structapr__bucket__pool.html#o1">00578</a> <span class="keyword">const</span> <span class="keywordtype">char</span> *base;
-<a name="l00585"></a><a class="code" href="structapr__bucket__pool.html#o2">00585</a> apr_pool_t *pool;
-<a name="l00589"></a><a class="code" href="structapr__bucket__pool.html#o3">00589</a> <a class="code" href="group___a_p_r___util___bucket___brigades.html#ga2">apr_bucket_alloc_t</a> *list;
-00590 };
-00591
-00592 <span class="preprocessor">#if APR_HAS_MMAP</span>
-00593 <span class="preprocessor"></span>
-<a name="l00594"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#ga8">00594</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structapr__bucket__mmap.html">apr_bucket_mmap</a> <a class="code" href="group___a_p_r___util___bucket___brigades.html#ga8">apr_bucket_mmap</a>;
-<a name="l00598"></a><a class="code" href="structapr__bucket__mmap.html">00598</a> <span class="keyword">struct </span><a class="code" href="group___a_p_r___util___bucket___brigades.html#ga8">apr_bucket_mmap</a> {
-<a name="l00600"></a><a class="code" href="structapr__bucket__mmap.html#o0">00600</a> <a class="code" href="group___a_p_r___util___bucket___brigades.html#ga5">apr_bucket_refcount</a> refcount;
-<a name="l00602"></a><a class="code" href="structapr__bucket__mmap.html#o1">00602</a> apr_mmap_t *mmap;
-00603 };
-00604 <span class="preprocessor">#endif</span>
-00605 <span class="preprocessor"></span>
-<a name="l00607"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#ga9">00607</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structapr__bucket__file.html">apr_bucket_file</a> <a class="code" href="group___a_p_r___util___bucket___brigades.html#ga9">apr_bucket_file</a>;
-<a name="l00611"></a><a class="code" href="structapr__bucket__file.html">00611</a> <span class="keyword">struct </span><a class="code" href="group___a_p_r___util___bucket___brigades.html#ga9">apr_bucket_file</a> {
-<a name="l00613"></a><a class="code" href="structapr__bucket__file.html#o0">00613</a> <a class="code" href="group___a_p_r___util___bucket___brigades.html#ga5">apr_bucket_refcount</a> refcount;
-<a name="l00615"></a><a class="code" href="structapr__bucket__file.html#o1">00615</a> apr_file_t *fd;
-<a name="l00618"></a><a class="code" href="structapr__bucket__file.html#o2">00618</a> apr_pool_t *readpool;
-00619 <span class="preprocessor">#if APR_HAS_MMAP</span>
-00620 <span class="preprocessor"></span>
-<a name="l00622"></a><a class="code" href="structapr__bucket__file.html#o3">00622</a> <span class="keywordtype">int</span> can_mmap;
-00623 <span class="preprocessor">#endif </span><span class="comment">/* APR_HAS_MMAP */</span>
-00624 };
-00625
-<a name="l00627"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#ga10">00627</a> <span class="keyword">typedef</span> <span class="keyword">union </span><a class="code" href="unionapr__bucket__structs.html">apr_bucket_structs</a> <a class="code" href="group___a_p_r___util___bucket___brigades.html#ga10">apr_bucket_structs</a>;
-<a name="l00632"></a><a class="code" href="unionapr__bucket__structs.html">00632</a> <span class="keyword">union </span><a class="code" href="group___a_p_r___util___bucket___brigades.html#ga10">apr_bucket_structs</a> {
-<a name="l00633"></a><a class="code" href="unionapr__bucket__structs.html#o0">00633</a> <a class="code" href="group___a_p_r___util___bucket___brigades.html#ga1">apr_bucket</a> b;
-<a name="l00634"></a><a class="code" href="unionapr__bucket__structs.html#o1">00634</a> <a class="code" href="group___a_p_r___util___bucket___brigades.html#ga6">apr_bucket_heap</a> heap;
-<a name="l00635"></a><a class="code" href="unionapr__bucket__structs.html#o2">00635</a> <a class="code" href="group___a_p_r___util___bucket___brigades.html#ga7">apr_bucket_pool</a> pool;
-00636 <span class="preprocessor">#if APR_HAS_MMAP</span>
-<a name="l00637"></a><a class="code" href="unionapr__bucket__structs.html#o3">00637</a> <span class="preprocessor"></span> <a class="code" href="group___a_p_r___util___bucket___brigades.html#ga8">apr_bucket_mmap</a> mmap;
-00638 <span class="preprocessor">#endif</span>
-<a name="l00639"></a><a class="code" href="unionapr__bucket__structs.html#o4">00639</a> <span class="preprocessor"></span> <a class="code" href="group___a_p_r___util___bucket___brigades.html#ga9">apr_bucket_file</a> file;
-00640 };
-00641
-<a name="l00647"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#ga104">00647</a> <span class="preprocessor">#define APR_BUCKET_ALLOC_SIZE APR_ALIGN_DEFAULT(2*sizeof(apr_bucket_structs))</span>
-00648 <span class="preprocessor"></span>
-00649 <span class="comment">/* ***** Bucket Brigade Functions ***** */</span>
-00657 APU_DECLARE(apr_bucket_brigade *) apr_brigade_create(apr_pool_t *p,
-00658 apr_bucket_alloc_t *list);
-00659
-00665 APU_DECLARE(apr_status_t) apr_brigade_destroy(apr_bucket_brigade *b);
-00666
-00678 APU_DECLARE(apr_status_t) apr_brigade_cleanup(<span class="keywordtype">void</span> *data);
-00679
-00689 APU_DECLARE(apr_bucket_brigade *) apr_brigade_split(apr_bucket_brigade *b,
-00690 apr_bucket *e);
-00691
-00700 APU_DECLARE(apr_status_t) apr_brigade_partition(apr_bucket_brigade *b,
-00701 apr_off_t point,
-00702 apr_bucket **after_point);
-00703
-00711 APU_DECLARE(apr_status_t) apr_brigade_length(apr_bucket_brigade *bb,
-00712 <span class="keywordtype">int</span> read_all,
-00713 apr_off_t *length);
-00714
-00722 APU_DECLARE(apr_status_t) apr_brigade_flatten(apr_bucket_brigade *bb,
-00723 <span class="keywordtype">char</span> *c,
-00724 apr_size_t *len);
-00725
-00733 APU_DECLARE(apr_status_t) apr_brigade_pflatten(apr_bucket_brigade *bb,
-00734 <span class="keywordtype">char</span> **c,
-00735 apr_size_t *len,
-00736 apr_pool_t *pool);
-00737
-00746 APU_DECLARE(apr_status_t) apr_brigade_split_line(apr_bucket_brigade *bbOut,
-00747 apr_bucket_brigade *bbIn,
-00748 apr_read_type_e block,
-00749 apr_off_t maxbytes);
-00750
-00760 APU_DECLARE(apr_status_t) apr_brigade_to_iovec(apr_bucket_brigade *b,
-00761 struct iovec *vec, <span class="keywordtype">int</span> *nvec);
-00762
-00771 APU_DECLARE(apr_status_t) apr_brigade_vputstrs(apr_bucket_brigade *b,
-00772 <a class="code" href="group___a_p_r___util___bucket___brigades.html#ga4">apr_brigade_flush</a> flush,
-00773 <span class="keywordtype">void</span> *ctx,
-00774 va_list va);
-00775
-00785 APU_DECLARE(apr_status_t) apr_brigade_write(apr_bucket_brigade *b,
-00786 <a class="code" href="group___a_p_r___util___bucket___brigades.html#ga4">apr_brigade_flush</a> flush, <span class="keywordtype">void</span> *ctx,
-00787 const <span class="keywordtype">char</span> *str, apr_size_t nbyte);
-00788
-00798 APU_DECLARE(apr_status_t) apr_brigade_writev(apr_bucket_brigade *b,
-00799 <a class="code" href="group___a_p_r___util___bucket___brigades.html#ga4">apr_brigade_flush</a> flush,
-00800 <span class="keywordtype">void</span> *ctx,
-00801 const struct iovec *vec,
-00802 apr_size_t nvec);
-00803
-00812 APU_DECLARE(apr_status_t) apr_brigade_puts(apr_bucket_brigade *bb,
-00813 <a class="code" href="group___a_p_r___util___bucket___brigades.html#ga4">apr_brigade_flush</a> flush, <span class="keywordtype">void</span> *ctx,
-00814 const <span class="keywordtype">char</span> *str);
-00815
-00824 APU_DECLARE(apr_status_t) apr_brigade_putc(apr_bucket_brigade *b,
-00825 <a class="code" href="group___a_p_r___util___bucket___brigades.html#ga4">apr_brigade_flush</a> flush, <span class="keywordtype">void</span> *ctx,
-00826 const <span class="keywordtype">char</span> c);
-00827
-00836 APU_DECLARE_NONSTD(apr_status_t) apr_brigade_putstrs(apr_bucket_brigade *b,
-00837 <a class="code" href="group___a_p_r___util___bucket___brigades.html#ga4">apr_brigade_flush</a> flush,
-00838 <span class="keywordtype">void</span> *ctx, ...);
-00839
-00850 APU_DECLARE_NONSTD(apr_status_t) apr_brigade_printf(apr_bucket_brigade *b,
-00851 <a class="code" href="group___a_p_r___util___bucket___brigades.html#ga4">apr_brigade_flush</a> flush,
-00852 <span class="keywordtype">void</span> *ctx,
-00853 const <span class="keywordtype">char</span> *fmt, ...)
-00854 __attribute__((format(printf,4,5)));
-00855
-00866 APU_DECLARE(apr_status_t) apr_brigade_vprintf(apr_bucket_brigade *b,
-00867 <a class="code" href="group___a_p_r___util___bucket___brigades.html#ga4">apr_brigade_flush</a> flush,
-00868 <span class="keywordtype">void</span> *ctx,
-00869 const <span class="keywordtype">char</span> *fmt, va_list va);
-00870
-00871 <span class="comment">/* ***** Bucket freelist functions ***** */</span>
-00885 APU_DECLARE_NONSTD(apr_bucket_alloc_t *) apr_bucket_alloc_create(apr_pool_t *p);
-00886
-00895 APU_DECLARE_NONSTD(apr_bucket_alloc_t *) apr_bucket_alloc_create_ex(apr_allocator_t *allocator);
-00896
-00901 APU_DECLARE_NONSTD(<span class="keywordtype">void</span>) apr_bucket_alloc_destroy(apr_bucket_alloc_t *list);
-00902
-00908 APU_DECLARE_NONSTD(<span class="keywordtype">void</span> *) apr_bucket_alloc(apr_size_t size, apr_bucket_alloc_t *list);
-00909
-00914 APU_DECLARE_NONSTD(<span class="keywordtype">void</span>) apr_bucket_free(<span class="keywordtype">void</span> *block);
-00915
-00916
-00917 <span class="comment">/* ***** Bucket Functions ***** */</span>
-<a name="l00924"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#ga105">00924</a> #define apr_bucket_destroy(e) do { \
-00925 (e)->type->destroy((e)->data); \
-00926 (e)->free(e); \
-00927 } <span class="keywordflow">while</span> (0)
-00928
-<a name="l00940"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#ga106">00940</a> <span class="preprocessor">#define apr_bucket_delete(e) do { \</span>
-00941 <span class="preprocessor"> APR_BUCKET_REMOVE(e); \</span>
-00942 <span class="preprocessor"> apr_bucket_destroy(e); \</span>
-00943 <span class="preprocessor"> } while (0)</span>
-00944 <span class="preprocessor"></span>
-<a name="l00952"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#ga107">00952</a> <span class="preprocessor">#define apr_bucket_read(e,str,len,block) (e)->type->read(e, str, len, block)</span>
-00953 <span class="preprocessor"></span>
-<a name="l00960"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#ga108">00960</a> <span class="preprocessor">#define apr_bucket_setaside(e,p) (e)->type->setaside(e,p)</span>
-00961 <span class="preprocessor"></span>
-<a name="l00967"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#ga109">00967</a> <span class="preprocessor">#define apr_bucket_split(e,point) (e)->type->split(e, point)</span>
-00968 <span class="preprocessor"></span>
-<a name="l00974"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#ga110">00974</a> <span class="preprocessor">#define apr_bucket_copy(e,c) (e)->type->copy(e, c)</span>
-00975 <span class="preprocessor"></span>
-00976 <span class="comment">/* Bucket type handling */</span>
-00977
-00987 APU_DECLARE_NONSTD(apr_status_t) apr_bucket_setaside_noop(apr_bucket *data,
-00988 apr_pool_t *pool);
-00989
-00997 APU_DECLARE_NONSTD(apr_status_t) apr_bucket_setaside_notimpl(apr_bucket *data,
-00998 apr_pool_t *pool);
-00999
-01007 APU_DECLARE_NONSTD(apr_status_t) apr_bucket_split_notimpl(apr_bucket *data,
-01008 apr_size_t point);
-01009
-01017 APU_DECLARE_NONSTD(apr_status_t) apr_bucket_copy_notimpl(apr_bucket *e,
-01018 apr_bucket **c);
-01019
-01029 APU_DECLARE_NONSTD(<span class="keywordtype">void</span>) apr_bucket_destroy_noop(<span class="keywordtype">void</span> *data);
+00314
+<a name="l00331"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#ga80">00331</a> #define APR_BRIGADE_SENTINEL(b) APR_RING_SENTINEL(&(b)->list, apr_bucket, link)
+00332
+<a name="l00338"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#ga81">00338</a> #define APR_BRIGADE_EMPTY(b) APR_RING_EMPTY(&(b)->list, apr_bucket, link)
+00339
+<a name="l00345"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#ga82">00345</a> #define APR_BRIGADE_FIRST(b) APR_RING_FIRST(&(b)->list)
+<a name="l00351"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#ga83">00351</a> #define APR_BRIGADE_LAST(b) APR_RING_LAST(&(b)->list)
+00352
+<a name="l00358"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#ga84">00358</a> #define APR_BRIGADE_INSERT_HEAD(b, e) do { \
+00359 <a class="code" href="group___a_p_r___util___bucket___brigades.html#ga1">apr_bucket</a> *ap__b = (e); \
+00360 APR_RING_INSERT_HEAD(&(b)->list, ap__b, <a class="code" href="group___a_p_r___util___bucket___brigades.html#ga1">apr_bucket</a>, link); \
+00361 <a class="code" href="group___a_p_r___util___bucket___brigades.html#ga78">APR_BRIGADE_CHECK_CONSISTENCY</a>((b)); \
+00362 } <span class="keywordflow">while</span> (0)
+00363
+<a name="l00369"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#ga85">00369</a> <span class="preprocessor">#define APR_BRIGADE_INSERT_TAIL(b, e) do { \</span>
+00370 <span class="preprocessor"> apr_bucket *ap__b = (e); \</span>
+00371 <span class="preprocessor"> APR_RING_INSERT_TAIL(&(b)->list, ap__b, apr_bucket, link); \</span>
+00372 <span class="preprocessor"> APR_BRIGADE_CHECK_CONSISTENCY((b)); \</span>
+00373 <span class="preprocessor"> } while (0)</span>
+00374 <span class="preprocessor"></span>
+<a name="l00380"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#ga86">00380</a> <span class="preprocessor">#define APR_BRIGADE_CONCAT(a, b) do { \</span>
+00381 <span class="preprocessor"> APR_RING_CONCAT(&(a)->list, &(b)->list, apr_bucket, link); \</span>
+00382 <span class="preprocessor"> APR_BRIGADE_CHECK_CONSISTENCY((a)); \</span>
+00383 <span class="preprocessor"> } while (0)</span>
+00384 <span class="preprocessor"></span>
+<a name="l00390"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#ga87">00390</a> <span class="preprocessor">#define APR_BRIGADE_PREPEND(a, b) do { \</span>
+00391 <span class="preprocessor"> APR_RING_PREPEND(&(a)->list, &(b)->list, apr_bucket, link); \</span>
+00392 <span class="preprocessor"> APR_BRIGADE_CHECK_CONSISTENCY((a)); \</span>
+00393 <span class="preprocessor"> } while (0)</span>
+00394 <span class="preprocessor"></span>
+<a name="l00400"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#ga88">00400</a> <span class="preprocessor">#define APR_BUCKET_INSERT_BEFORE(a, b) do { \</span>
+00401 <span class="preprocessor"> apr_bucket *ap__a = (a), *ap__b = (b); \</span>
+00402 <span class="preprocessor"> APR_RING_INSERT_BEFORE(ap__a, ap__b, link); \</span>
+00403 <span class="preprocessor"> APR_BUCKET_CHECK_CONSISTENCY(ap__a); \</span>
+00404 <span class="preprocessor"> } while (0)</span>
+00405 <span class="preprocessor"></span>
+<a name="l00411"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#ga89">00411</a> <span class="preprocessor">#define APR_BUCKET_INSERT_AFTER(a, b) do { \</span>
+00412 <span class="preprocessor"> apr_bucket *ap__a = (a), *ap__b = (b); \</span>
+00413 <span class="preprocessor"> APR_RING_INSERT_AFTER(ap__a, ap__b, link); \</span>
+00414 <span class="preprocessor"> APR_BUCKET_CHECK_CONSISTENCY(ap__a); \</span>
+00415 <span class="preprocessor"> } while (0)</span>
+00416 <span class="preprocessor"></span>
+<a name="l00422"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#ga90">00422</a> <span class="preprocessor">#define APR_BUCKET_NEXT(e) APR_RING_NEXT((e), link)</span>
+00423 <span class="preprocessor"></span>
+<a name="l00428"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#ga91">00428</a> <span class="preprocessor">#define APR_BUCKET_PREV(e) APR_RING_PREV((e), link)</span>
+00429 <span class="preprocessor"></span>
+<a name="l00434"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#ga92">00434</a> <span class="preprocessor">#define APR_BUCKET_REMOVE(e) APR_RING_REMOVE((e), link)</span>
+00435 <span class="preprocessor"></span>
+<a name="l00440"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#ga93">00440</a> <span class="preprocessor">#define APR_BUCKET_INIT(e) APR_RING_ELEM_INIT((e), link)</span>
+00441 <span class="preprocessor"></span>
+<a name="l00448"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#ga94">00448</a> <span class="preprocessor">#define APR_BUCKET_IS_METADATA(e) ((e)->type->is_metadata)</span>
+00449 <span class="preprocessor"></span>
+<a name="l00455"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#ga95">00455</a> <span class="preprocessor">#define APR_BUCKET_IS_FLUSH(e) ((e)->type == &apr_bucket_type_flush)</span>
+00456 <span class="preprocessor"></span>
+<a name="l00461"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#ga96">00461</a> <span class="preprocessor">#define APR_BUCKET_IS_EOS(e) ((e)->type == &apr_bucket_type_eos)</span>
+00462 <span class="preprocessor"></span>
+<a name="l00467"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#ga97">00467</a> <span class="preprocessor">#define APR_BUCKET_IS_FILE(e) ((e)->type == &apr_bucket_type_file)</span>
+00468 <span class="preprocessor"></span>
+<a name="l00473"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#ga98">00473</a> <span class="preprocessor">#define APR_BUCKET_IS_PIPE(e) ((e)->type == &apr_bucket_type_pipe)</span>
+00474 <span class="preprocessor"></span>
+<a name="l00479"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#ga99">00479</a> <span class="preprocessor">#define APR_BUCKET_IS_SOCKET(e) ((e)->type == &apr_bucket_type_socket)</span>
+00480 <span class="preprocessor"></span>
+<a name="l00485"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#ga100">00485</a> <span class="preprocessor">#define APR_BUCKET_IS_HEAP(e) ((e)->type == &apr_bucket_type_heap)</span>
+00486 <span class="preprocessor"></span>
+<a name="l00491"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#ga101">00491</a> <span class="preprocessor">#define APR_BUCKET_IS_TRANSIENT(e) ((e)->type == &apr_bucket_type_transient)</span>
+00492 <span class="preprocessor"></span>
+<a name="l00497"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#ga102">00497</a> <span class="preprocessor">#define APR_BUCKET_IS_IMMORTAL(e) ((e)->type == &apr_bucket_type_immortal)</span>
+00498 <span class="preprocessor"></span><span class="preprocessor">#if APR_HAS_MMAP</span>
+00499 <span class="preprocessor"></span>
+<a name="l00504"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#ga103">00504</a> <span class="preprocessor">#define APR_BUCKET_IS_MMAP(e) ((e)->type == &apr_bucket_type_mmap)</span>
+00505 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+00506 <span class="preprocessor"></span>
+<a name="l00511"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#ga104">00511</a> <span class="preprocessor">#define APR_BUCKET_IS_POOL(e) ((e)->type == &apr_bucket_type_pool)</span>
+00512 <span class="preprocessor"></span>
+00513 <span class="comment">/*</span>
+00514 <span class="comment"> * General-purpose reference counting for the various bucket types.</span>
+00515 <span class="comment"> *</span>
+00516 <span class="comment"> * Any bucket type that keeps track of the resources it uses (i.e.</span>
+00517 <span class="comment"> * most of them except for IMMORTAL, TRANSIENT, and EOS) needs to</span>
+00518 <span class="comment"> * attach a reference count to the resource so that it can be freed</span>
+00519 <span class="comment"> * when the last bucket that uses it goes away. Resource-sharing may</span>
+00520 <span class="comment"> * occur because of bucket splits or buckets that refer to globally</span>
+00521 <span class="comment"> * cached data. */</span>
+00522
+<a name="l00524"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#ga5">00524</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structapr__bucket__refcount.html">apr_bucket_refcount</a> <a class="code" href="group___a_p_r___util___bucket___brigades.html#ga5">apr_bucket_refcount</a>;
+<a name="l00531"></a><a class="code" href="structapr__bucket__refcount.html">00531</a> <span class="keyword">struct </span><a class="code" href="group___a_p_r___util___bucket___brigades.html#ga5">apr_bucket_refcount</a> {
+<a name="l00533"></a><a class="code" href="structapr__bucket__refcount.html#o0">00533</a> <span class="keywordtype">int</span> refcount;
+00534 };
+00535
+00536 <span class="comment">/* ***** Reference-counted bucket types ***** */</span>
+00537
+<a name="l00539"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#ga6">00539</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structapr__bucket__heap.html">apr_bucket_heap</a> <a class="code" href="group___a_p_r___util___bucket___brigades.html#ga6">apr_bucket_heap</a>;
+<a name="l00543"></a><a class="code" href="structapr__bucket__heap.html">00543</a> <span class="keyword">struct </span><a class="code" href="group___a_p_r___util___bucket___brigades.html#ga6">apr_bucket_heap</a> {
+<a name="l00545"></a><a class="code" href="structapr__bucket__heap.html#o0">00545</a> <a class="code" href="group___a_p_r___util___bucket___brigades.html#ga5">apr_bucket_refcount</a> refcount;
+<a name="l00549"></a><a class="code" href="structapr__bucket__heap.html#o1">00549</a> <span class="keywordtype">char</span> *base;
+<a name="l00551"></a><a class="code" href="structapr__bucket__heap.html#o2">00551</a> apr_size_t alloc_len;
+00553 void (*free_func)(<span class="keywordtype">void</span> *data);
+00554 };
+00555
+<a name="l00557"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#ga7">00557</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structapr__bucket__pool.html">apr_bucket_pool</a> <a class="code" href="group___a_p_r___util___bucket___brigades.html#ga7">apr_bucket_pool</a>;
+<a name="l00561"></a><a class="code" href="structapr__bucket__pool.html">00561</a> <span class="keyword">struct </span><a class="code" href="group___a_p_r___util___bucket___brigades.html#ga7">apr_bucket_pool</a> {
+<a name="l00573"></a><a class="code" href="structapr__bucket__pool.html#o0">00573</a> <a class="code" href="group___a_p_r___util___bucket___brigades.html#ga6">apr_bucket_heap</a> heap;
+<a name="l00579"></a><a class="code" href="structapr__bucket__pool.html#o1">00579</a> <span class="keyword">const</span> <span class="keywordtype">char</span> *base;
+<a name="l00586"></a><a class="code" href="structapr__bucket__pool.html#o2">00586</a> apr_pool_t *pool;
+<a name="l00590"></a><a class="code" href="structapr__bucket__pool.html#o3">00590</a> <a class="code" href="group___a_p_r___util___bucket___brigades.html#ga2">apr_bucket_alloc_t</a> *list;
+00591 };
+00592
+00593 <span class="preprocessor">#if APR_HAS_MMAP</span>
+00594 <span class="preprocessor"></span>
+<a name="l00595"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#ga8">00595</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structapr__bucket__mmap.html">apr_bucket_mmap</a> <a class="code" href="group___a_p_r___util___bucket___brigades.html#ga8">apr_bucket_mmap</a>;
+<a name="l00599"></a><a class="code" href="structapr__bucket__mmap.html">00599</a> <span class="keyword">struct </span><a class="code" href="group___a_p_r___util___bucket___brigades.html#ga8">apr_bucket_mmap</a> {
+<a name="l00601"></a><a class="code" href="structapr__bucket__mmap.html#o0">00601</a> <a class="code" href="group___a_p_r___util___bucket___brigades.html#ga5">apr_bucket_refcount</a> refcount;
+<a name="l00603"></a><a class="code" href="structapr__bucket__mmap.html#o1">00603</a> apr_mmap_t *mmap;
+00604 };
+00605 <span class="preprocessor">#endif</span>
+00606 <span class="preprocessor"></span>
+<a name="l00608"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#ga9">00608</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structapr__bucket__file.html">apr_bucket_file</a> <a class="code" href="group___a_p_r___util___bucket___brigades.html#ga9">apr_bucket_file</a>;
+<a name="l00612"></a><a class="code" href="structapr__bucket__file.html">00612</a> <span class="keyword">struct </span><a class="code" href="group___a_p_r___util___bucket___brigades.html#ga9">apr_bucket_file</a> {
+<a name="l00614"></a><a class="code" href="structapr__bucket__file.html#o0">00614</a> <a class="code" href="group___a_p_r___util___bucket___brigades.html#ga5">apr_bucket_refcount</a> refcount;
+<a name="l00616"></a><a class="code" href="structapr__bucket__file.html#o1">00616</a> apr_file_t *fd;
+<a name="l00619"></a><a class="code" href="structapr__bucket__file.html#o2">00619</a> apr_pool_t *readpool;
+00620 <span class="preprocessor">#if APR_HAS_MMAP</span>
+00621 <span class="preprocessor"></span>
+<a name="l00623"></a><a class="code" href="structapr__bucket__file.html#o3">00623</a> <span class="keywordtype">int</span> can_mmap;
+00624 <span class="preprocessor">#endif </span><span class="comment">/* APR_HAS_MMAP */</span>
+00625 };
+00626
+<a name="l00628"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#ga10">00628</a> <span class="keyword">typedef</span> <span class="keyword">union </span><a class="code" href="unionapr__bucket__structs.html">apr_bucket_structs</a> <a class="code" href="group___a_p_r___util___bucket___brigades.html#ga10">apr_bucket_structs</a>;
+<a name="l00633"></a><a class="code" href="unionapr__bucket__structs.html">00633</a> <span class="keyword">union </span><a class="code" href="group___a_p_r___util___bucket___brigades.html#ga10">apr_bucket_structs</a> {
+<a name="l00634"></a><a class="code" href="unionapr__bucket__structs.html#o0">00634</a> <a class="code" href="group___a_p_r___util___bucket___brigades.html#ga1">apr_bucket</a> b;
+<a name="l00635"></a><a class="code" href="unionapr__bucket__structs.html#o1">00635</a> <a class="code" href="group___a_p_r___util___bucket___brigades.html#ga6">apr_bucket_heap</a> heap;
+<a name="l00636"></a><a class="code" href="unionapr__bucket__structs.html#o2">00636</a> <a class="code" href="group___a_p_r___util___bucket___brigades.html#ga7">apr_bucket_pool</a> pool;
+00637 <span class="preprocessor">#if APR_HAS_MMAP</span>
+<a name="l00638"></a><a class="code" href="unionapr__bucket__structs.html#o3">00638</a> <span class="preprocessor"></span> <a class="code" href="group___a_p_r___util___bucket___brigades.html#ga8">apr_bucket_mmap</a> mmap;
+00639 <span class="preprocessor">#endif</span>
+<a name="l00640"></a><a class="code" href="unionapr__bucket__structs.html#o4">00640</a> <span class="preprocessor"></span> <a class="code" href="group___a_p_r___util___bucket___brigades.html#ga9">apr_bucket_file</a> file;
+00641 };
+00642
+<a name="l00648"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#ga105">00648</a> <span class="preprocessor">#define APR_BUCKET_ALLOC_SIZE APR_ALIGN_DEFAULT(2*sizeof(apr_bucket_structs))</span>
+00649 <span class="preprocessor"></span>
+00650 <span class="comment">/* ***** Bucket Brigade Functions ***** */</span>
+00658 APU_DECLARE(apr_bucket_brigade *) apr_brigade_create(apr_pool_t *p,
+00659 apr_bucket_alloc_t *list);
+00660
+00666 APU_DECLARE(apr_status_t) apr_brigade_destroy(apr_bucket_brigade *b);
+00667
+00679 APU_DECLARE(apr_status_t) apr_brigade_cleanup(<span class="keywordtype">void</span> *data);
+00680
+00690 APU_DECLARE(apr_bucket_brigade *) apr_brigade_split(apr_bucket_brigade *b,
+00691 apr_bucket *e);
+00692
+00701 APU_DECLARE(apr_status_t) apr_brigade_partition(apr_bucket_brigade *b,
+00702 apr_off_t point,
+00703 apr_bucket **after_point);
+00704
+00712 APU_DECLARE(apr_status_t) apr_brigade_length(apr_bucket_brigade *bb,
+00713 <span class="keywordtype">int</span> read_all,
+00714 apr_off_t *length);
+00715
+00723 APU_DECLARE(apr_status_t) apr_brigade_flatten(apr_bucket_brigade *bb,
+00724 <span class="keywordtype">char</span> *c,
+00725 apr_size_t *len);
+00726
+00734 APU_DECLARE(apr_status_t) apr_brigade_pflatten(apr_bucket_brigade *bb,
+00735 <span class="keywordtype">char</span> **c,
+00736 apr_size_t *len,
+00737 apr_pool_t *pool);
+00738
+00747 APU_DECLARE(apr_status_t) apr_brigade_split_line(apr_bucket_brigade *bbOut,
+00748 apr_bucket_brigade *bbIn,
+00749 apr_read_type_e block,
+00750 apr_off_t maxbytes);
+00751
+00761 APU_DECLARE(apr_status_t) apr_brigade_to_iovec(apr_bucket_brigade *b,
+00762 struct iovec *vec, <span class="keywordtype">int</span> *nvec);
+00763
+00772 APU_DECLARE(apr_status_t) apr_brigade_vputstrs(apr_bucket_brigade *b,
+00773 apr_brigade_flush flush,
+00774 <span class="keywordtype">void</span> *ctx,
+00775 va_list va);
+00776
+00786 APU_DECLARE(apr_status_t) apr_brigade_write(apr_bucket_brigade *b,
+00787 apr_brigade_flush flush, <span class="keywordtype">void</span> *ctx,
+00788 const <span class="keywordtype">char</span> *str, apr_size_t nbyte);
+00789
+00799 APU_DECLARE(apr_status_t) apr_brigade_writev(apr_bucket_brigade *b,
+00800 apr_brigade_flush flush,
+00801 <span class="keywordtype">void</span> *ctx,
+00802 const struct iovec *vec,
+00803 apr_size_t nvec);
+00804
+00813 APU_DECLARE(apr_status_t) apr_brigade_puts(apr_bucket_brigade *bb,
+00814 apr_brigade_flush flush, <span class="keywordtype">void</span> *ctx,
+00815 const <span class="keywordtype">char</span> *str);
+00816
+00825 APU_DECLARE(apr_status_t) apr_brigade_putc(apr_bucket_brigade *b,
+00826 apr_brigade_flush flush, <span class="keywordtype">void</span> *ctx,
+00827 const <span class="keywordtype">char</span> c);
+00828
+00837 APU_DECLARE_NONSTD(apr_status_t) apr_brigade_putstrs(apr_bucket_brigade *b,
+00838 apr_brigade_flush flush,
+00839 <span class="keywordtype">void</span> *ctx, ...);
+00840
+00851 APU_DECLARE_NONSTD(apr_status_t) apr_brigade_printf(apr_bucket_brigade *b,
+00852 apr_brigade_flush flush,
+00853 <span class="keywordtype">void</span> *ctx,
+00854 const <span class="keywordtype">char</span> *fmt, ...)
+00855 __attribute__((format(printf,4,5)));
+00856
+00867 APU_DECLARE(apr_status_t) apr_brigade_vprintf(apr_bucket_brigade *b,
+00868 apr_brigade_flush flush,
+00869 <span class="keywordtype">void</span> *ctx,
+00870 const <span class="keywordtype">char</span> *fmt, va_list va);
+00871
+00884 APU_DECLARE(apr_bucket *) apr_brigade_insert_file(apr_bucket_brigade *bb,
+00885 apr_file_t *f,
+00886 apr_off_t start,
+00887 apr_off_t len,
+00888 apr_pool_t *p);
+00889
+00890
+00891
+00892 <span class="comment">/* ***** Bucket freelist functions ***** */</span>
+00906 APU_DECLARE_NONSTD(apr_bucket_alloc_t *) apr_bucket_alloc_create(apr_pool_t *p);
+00907
+00916 APU_DECLARE_NONSTD(apr_bucket_alloc_t *) apr_bucket_alloc_create_ex(apr_allocator_t *allocator);
+00917
+00922 APU_DECLARE_NONSTD(<span class="keywordtype">void</span>) apr_bucket_alloc_destroy(apr_bucket_alloc_t *list);
+00923
+00929 APU_DECLARE_NONSTD(<span class="keywordtype">void</span> *) apr_bucket_alloc(apr_size_t size, apr_bucket_alloc_t *list);
+00930
+00935 APU_DECLARE_NONSTD(<span class="keywordtype">void</span>) apr_bucket_free(<span class="keywordtype">void</span> *block);
+00936
+00937
+00938 <span class="comment">/* ***** Bucket Functions ***** */</span>
+<a name="l00945"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#ga106">00945</a> #define apr_bucket_destroy(e) do { \
+00946 (e)->type->destroy((e)->data); \
+00947 (e)->free(e); \
+00948 } <span class="keywordflow">while</span> (0)
+00949
+<a name="l00961"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#ga107">00961</a> <span class="preprocessor">#define apr_bucket_delete(e) do { \</span>
+00962 <span class="preprocessor"> APR_BUCKET_REMOVE(e); \</span>
+00963 <span class="preprocessor"> apr_bucket_destroy(e); \</span>
+00964 <span class="preprocessor"> } while (0)</span>
+00965 <span class="preprocessor"></span>
+<a name="l00973"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#ga108">00973</a> <span class="preprocessor">#define apr_bucket_read(e,str,len,block) (e)->type->read(e, str, len, block)</span>
+00974 <span class="preprocessor"></span>
+<a name="l00981"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#ga109">00981</a> <span class="preprocessor">#define apr_bucket_setaside(e,p) (e)->type->setaside(e,p)</span>
+00982 <span class="preprocessor"></span>
+<a name="l00988"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#ga110">00988</a> <span class="preprocessor">#define apr_bucket_split(e,point) (e)->type->split(e, point)</span>
+00989 <span class="preprocessor"></span>
+<a name="l00995"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#ga111">00995</a> <span class="preprocessor">#define apr_bucket_copy(e,c) (e)->type->copy(e, c)</span>
+00996 <span class="preprocessor"></span>
+00997 <span class="comment">/* Bucket type handling */</span>
+00998
+01008 APU_DECLARE_NONSTD(apr_status_t) apr_bucket_setaside_noop(apr_bucket *data,
+01009 apr_pool_t *pool);
+01010
+01018 APU_DECLARE_NONSTD(apr_status_t) apr_bucket_setaside_notimpl(apr_bucket *data,
+01019 apr_pool_t *pool);
+01020
+01028 APU_DECLARE_NONSTD(apr_status_t) apr_bucket_split_notimpl(apr_bucket *data,
+01029 apr_size_t point);
01030
-01037 <span class="comment">/* There is no apr_bucket_read_notimpl, because it is a required function</span>
-01038 <span class="comment"> */</span>
-01039
+01038 APU_DECLARE_NONSTD(apr_status_t) apr_bucket_copy_notimpl(apr_bucket *e,
+01039 apr_bucket **c);
01040
-01041 <span class="comment">/* All of the bucket types implemented by the core */</span>
-01046 APU_DECLARE_DATA extern const apr_bucket_type_t apr_bucket_type_flush;
-01052 APU_DECLARE_DATA extern const apr_bucket_type_t apr_bucket_type_eos;
-01056 APU_DECLARE_DATA extern const apr_bucket_type_t apr_bucket_type_file;
-01061 APU_DECLARE_DATA extern const apr_bucket_type_t apr_bucket_type_heap;
-01062 #if APR_HAS_MMAP
-01066 APU_DECLARE_DATA extern const apr_bucket_type_t apr_bucket_type_mmap;
-01067 #endif
-01073 APU_DECLARE_DATA extern const apr_bucket_type_t apr_bucket_type_pool;
-01077 APU_DECLARE_DATA extern const apr_bucket_type_t apr_bucket_type_pipe;
-01083 APU_DECLARE_DATA extern const apr_bucket_type_t apr_bucket_type_immortal;
-01089 APU_DECLARE_DATA extern const apr_bucket_type_t apr_bucket_type_transient;
-01093 APU_DECLARE_DATA extern const apr_bucket_type_t apr_bucket_type_socket;
-01094
-01095
-01096 <span class="comment">/* ***** Simple buckets ***** */</span>
-01097
-01109 APU_DECLARE_NONSTD(apr_status_t) apr_bucket_simple_split(apr_bucket *b,
-01110 apr_size_t point);
-01111
-01122 APU_DECLARE_NONSTD(apr_status_t) apr_bucket_simple_copy(apr_bucket *a,
-01123 apr_bucket **b);
-01124
-01125
-01126 <span class="comment">/* ***** Shared, reference-counted buckets ***** */</span>
-01127
-01142 APU_DECLARE(apr_bucket *) apr_bucket_shared_make(apr_bucket *b, <span class="keywordtype">void</span> *data,
-01143 apr_off_t start,
-01144 apr_size_t length);
+01050 APU_DECLARE_NONSTD(<span class="keywordtype">void</span>) apr_bucket_destroy_noop(<span class="keywordtype">void</span> *data);
+01051
+01058 <span class="comment">/* There is no apr_bucket_read_notimpl, because it is a required function</span>
+01059 <span class="comment"> */</span>
+01060
+01061
+01062 <span class="comment">/* All of the bucket types implemented by the core */</span>
+<a name="l01067"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#ga11">01067</a> APU_DECLARE_DATA extern const apr_bucket_type_t apr_bucket_type_flush;
+<a name="l01073"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#ga12">01073</a> APU_DECLARE_DATA extern const apr_bucket_type_t apr_bucket_type_eos;
+<a name="l01077"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#ga13">01077</a> APU_DECLARE_DATA extern const apr_bucket_type_t apr_bucket_type_file;
+<a name="l01082"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#ga14">01082</a> APU_DECLARE_DATA extern const apr_bucket_type_t apr_bucket_type_heap;
+01083 #if APR_HAS_MMAP
+<a name="l01087"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#ga15">01087</a> APU_DECLARE_DATA extern const apr_bucket_type_t apr_bucket_type_mmap;
+01088 #endif
+<a name="l01094"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#ga16">01094</a> APU_DECLARE_DATA extern const apr_bucket_type_t apr_bucket_type_pool;
+<a name="l01098"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#ga17">01098</a> APU_DECLARE_DATA extern const apr_bucket_type_t apr_bucket_type_pipe;
+<a name="l01104"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#ga18">01104</a> APU_DECLARE_DATA extern const apr_bucket_type_t apr_bucket_type_immortal;
+<a name="l01110"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#ga19">01110</a> APU_DECLARE_DATA extern const apr_bucket_type_t apr_bucket_type_transient;
+<a name="l01114"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#ga20">01114</a> APU_DECLARE_DATA extern const apr_bucket_type_t apr_bucket_type_socket;
+01115
+01116
+01117 <span class="comment">/* ***** Simple buckets ***** */</span>
+01118
+01130 APU_DECLARE_NONSTD(apr_status_t) apr_bucket_simple_split(apr_bucket *b,
+01131 apr_size_t point);
+01132
+01143 APU_DECLARE_NONSTD(apr_status_t) apr_bucket_simple_copy(apr_bucket *a,
+01144 apr_bucket **b);
01145
-01154 APU_DECLARE(<span class="keywordtype">int</span>) apr_bucket_shared_destroy(<span class="keywordtype">void</span> *data);
-01155
-01167 APU_DECLARE_NONSTD(apr_status_t) apr_bucket_shared_split(apr_bucket *b,
-01168 apr_size_t point);
-01169
-01179 APU_DECLARE_NONSTD(apr_status_t) apr_bucket_shared_copy(apr_bucket *a,
-01180 apr_bucket **b);
-01181
-01182
-01183 <span class="comment">/* ***** Functions to Create Buckets of varying types ***** */</span>
-01184 <span class="comment">/*</span>
-01185 <span class="comment"> * Each bucket type foo has two initialization functions:</span>
-01186 <span class="comment"> * apr_bucket_foo_make which sets up some already-allocated memory as a</span>
-01187 <span class="comment"> * bucket of type foo; and apr_bucket_foo_create which allocates memory</span>
-01188 <span class="comment"> * for the bucket, calls apr_bucket_make_foo, and initializes the</span>
-01189 <span class="comment"> * bucket's list pointers. The apr_bucket_foo_make functions are used</span>
-01190 <span class="comment"> * inside the bucket code to change the type of buckets in place;</span>
-01191 <span class="comment"> * other code should call apr_bucket_foo_create. All the initialization</span>
-01192 <span class="comment"> * functions change nothing if they fail.</span>
-01193 <span class="comment"> */</span>
-01194
-01201 APU_DECLARE(apr_bucket *) apr_bucket_eos_create(apr_bucket_alloc_t *list);
+01146
+01147 <span class="comment">/* ***** Shared, reference-counted buckets ***** */</span>
+01148
+01163 APU_DECLARE(apr_bucket *) apr_bucket_shared_make(apr_bucket *b, <span class="keywordtype">void</span> *data,
+01164 apr_off_t start,
+01165 apr_size_t length);
+01166
+01175 APU_DECLARE(<span class="keywordtype">int</span>) apr_bucket_shared_destroy(<span class="keywordtype">void</span> *data);
+01176
+01188 APU_DECLARE_NONSTD(apr_status_t) apr_bucket_shared_split(apr_bucket *b,
+01189 apr_size_t point);
+01190
+01200 APU_DECLARE_NONSTD(apr_status_t) apr_bucket_shared_copy(apr_bucket *a,
+01201 apr_bucket **b);
01202
-01210 APU_DECLARE(apr_bucket *) apr_bucket_eos_make(apr_bucket *b);
-01211
-01219 APU_DECLARE(apr_bucket *) apr_bucket_flush_create(apr_bucket_alloc_t *list);
-01220
-01228 APU_DECLARE(apr_bucket *) apr_bucket_flush_make(apr_bucket *b);
-01229
-01237 APU_DECLARE(apr_bucket *) apr_bucket_immortal_create(const <span class="keywordtype">char</span> *buf,
-01238 apr_size_t nbyte,
-01239 apr_bucket_alloc_t *list);
-01240
-01248 APU_DECLARE(apr_bucket *) apr_bucket_immortal_make(apr_bucket *b,
-01249 const <span class="keywordtype">char</span> *buf,
-01250 apr_size_t nbyte);
-01251
-01259 APU_DECLARE(apr_bucket *) apr_bucket_transient_create(const <span class="keywordtype">char</span> *buf,
-01260 apr_size_t nbyte,
-01261 apr_bucket_alloc_t *list);
-01262
-01270 APU_DECLARE(apr_bucket *) apr_bucket_transient_make(apr_bucket *b,
-01271 const <span class="keywordtype">char</span> *buf,
-01272 apr_size_t nbyte);
-01273
-01288 APU_DECLARE(apr_bucket *) apr_bucket_heap_create(const <span class="keywordtype">char</span> *buf,
-01289 apr_size_t nbyte,
-01290 <span class="keywordtype">void</span> (*free_func)(<span class="keywordtype">void</span> *data),
-01291 apr_bucket_alloc_t *list);
-01301 APU_DECLARE(apr_bucket *) apr_bucket_heap_make(apr_bucket *b, const <span class="keywordtype">char</span> *buf,
-01302 apr_size_t nbyte,
-01303 <span class="keywordtype">void</span> (*free_func)(<span class="keywordtype">void</span> *data));
-01304
-01314 APU_DECLARE(apr_bucket *) apr_bucket_pool_create(const <span class="keywordtype">char</span> *buf,
-01315 apr_size_t length,
-01316 apr_pool_t *pool,
-01317 apr_bucket_alloc_t *list);
-01318
-01327 APU_DECLARE(apr_bucket *) apr_bucket_pool_make(apr_bucket *b, const <span class="keywordtype">char</span> *buf,
-01328 apr_size_t length,
-01329 apr_pool_t *pool);
-01330
-01331 #if APR_HAS_MMAP
-01341 APU_DECLARE(apr_bucket *) apr_bucket_mmap_create(apr_mmap_t *mm,
-01342 apr_off_t start,
-01343 apr_size_t length,
-01344 apr_bucket_alloc_t *list);
-01345
-01355 APU_DECLARE(apr_bucket *) apr_bucket_mmap_make(apr_bucket *b, apr_mmap_t *mm,
-01356 apr_off_t start,
-01357 apr_size_t length);
-01358 #endif
-01359
-01366 APU_DECLARE(apr_bucket *) apr_bucket_socket_create(apr_socket_t *thissock,
-01367 apr_bucket_alloc_t *list);
-01374 APU_DECLARE(apr_bucket *) apr_bucket_socket_make(apr_bucket *b,
-01375 apr_socket_t *thissock);
-01376
-01383 APU_DECLARE(apr_bucket *) apr_bucket_pipe_create(apr_file_t *thispipe,
-01384 apr_bucket_alloc_t *list);
-01385
-01392 APU_DECLARE(apr_bucket *) apr_bucket_pipe_make(apr_bucket *b,
-01393 apr_file_t *thispipe);
-01394
-01405 APU_DECLARE(apr_bucket *) apr_bucket_file_create(apr_file_t *fd,
-01406 apr_off_t offset,
-01407 apr_size_t len,
-01408 apr_pool_t *p,
-01409 apr_bucket_alloc_t *list);
-01410
-01421 APU_DECLARE(apr_bucket *) apr_bucket_file_make(apr_bucket *b, apr_file_t *fd,
-01422 apr_off_t offset,
-01423 apr_size_t len, apr_pool_t *p);
-01424
-01431 APU_DECLARE(apr_status_t) apr_bucket_file_enable_mmap(apr_bucket *b,
-01432 <span class="keywordtype">int</span> enabled);
-01433
-01435 #ifdef __cplusplus
-01436 }
-01437 #endif
-01438
-01439 #endif <span class="comment">/* !APR_BUCKETS_H */</span>
-</div></pre><hr size="1"><address style="align: right;"><small>Generated on Wed Sep 1 21:35:50 2004 for Apache Portable Runtime Utility Library by
+01203
+01204 <span class="comment">/* ***** Functions to Create Buckets of varying types ***** */</span>
+01205 <span class="comment">/*</span>
+01206 <span class="comment"> * Each bucket type foo has two initialization functions:</span>
+01207 <span class="comment"> * apr_bucket_foo_make which sets up some already-allocated memory as a</span>
+01208 <span class="comment"> * bucket of type foo; and apr_bucket_foo_create which allocates memory</span>
+01209 <span class="comment"> * for the bucket, calls apr_bucket_make_foo, and initializes the</span>
+01210 <span class="comment"> * bucket's list pointers. The apr_bucket_foo_make functions are used</span>
+01211 <span class="comment"> * inside the bucket code to change the type of buckets in place;</span>
+01212 <span class="comment"> * other code should call apr_bucket_foo_create. All the initialization</span>
+01213 <span class="comment"> * functions change nothing if they fail.</span>
+01214 <span class="comment"> */</span>
+01215
+01222 APU_DECLARE(apr_bucket *) apr_bucket_eos_create(apr_bucket_alloc_t *list);
+01223
+01231 APU_DECLARE(apr_bucket *) apr_bucket_eos_make(apr_bucket *b);
+01232
+01240 APU_DECLARE(apr_bucket *) apr_bucket_flush_create(apr_bucket_alloc_t *list);
+01241
+01249 APU_DECLARE(apr_bucket *) apr_bucket_flush_make(apr_bucket *b);
+01250
+01258 APU_DECLARE(apr_bucket *) apr_bucket_immortal_create(const <span class="keywordtype">char</span> *buf,
+01259 apr_size_t nbyte,
+01260 apr_bucket_alloc_t *list);
+01261
+01269 APU_DECLARE(apr_bucket *) apr_bucket_immortal_make(apr_bucket *b,
[... 75 lines stripped ...]