Sophie

Sophie

distrib > Mandriva > 2008.1 > x86_64 > media > main-release > by-pkgid > bdcd72668be70f58bf0aa7c2102b0734 > files > 50

lib64apr-util-devel-1.2.12-4mdv2008.1.x86_64.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>Apache Portable Runtime Utility Library: include/apr_buckets.h Source File</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.5.4 -->
<div class="tabs">
  <ul>
    <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
    <li><a href="modules.html"><span>Modules</span></a></li>
    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
    <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
    <li class="current"><a href="files.html"><span>Files</span></a></li>
    <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
  </ul>
</div>
<h1>include/apr_buckets.h</h1><a href="apr__buckets_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/* Licensed to the Apache Software Foundation (ASF) under one or more</span>
<a name="l00002"></a>00002 <span class="comment"> * contributor license agreements.  See the NOTICE file distributed with</span>
<a name="l00003"></a>00003 <span class="comment"> * this work for additional information regarding copyright ownership.</span>
<a name="l00004"></a>00004 <span class="comment"> * The ASF licenses this file to You under the Apache License, Version 2.0</span>
<a name="l00005"></a>00005 <span class="comment"> * (the "License"); you may not use this file except in compliance with</span>
<a name="l00006"></a>00006 <span class="comment"> * the License.  You may obtain a copy of the License at</span>
<a name="l00007"></a>00007 <span class="comment"> *</span>
<a name="l00008"></a>00008 <span class="comment"> *     http://www.apache.org/licenses/LICENSE-2.0</span>
<a name="l00009"></a>00009 <span class="comment"> *</span>
<a name="l00010"></a>00010 <span class="comment"> * Unless required by applicable law or agreed to in writing, software</span>
<a name="l00011"></a>00011 <span class="comment"> * distributed under the License is distributed on an "AS IS" BASIS,</span>
<a name="l00012"></a>00012 <span class="comment"> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span>
<a name="l00013"></a>00013 <span class="comment"> * See the License for the specific language governing permissions and</span>
<a name="l00014"></a>00014 <span class="comment"> * limitations under the License.</span>
<a name="l00015"></a>00015 <span class="comment"> */</span>
<a name="l00021"></a>00021 <span class="preprocessor">#ifndef APR_BUCKETS_H</span>
<a name="l00022"></a>00022 <span class="preprocessor"></span><span class="preprocessor">#define APR_BUCKETS_H</span>
<a name="l00023"></a>00023 <span class="preprocessor"></span>
<a name="l00024"></a>00024 <span class="preprocessor">#if defined(APR_BUCKET_DEBUG) &amp;&amp; !defined(APR_RING_DEBUG)</span>
<a name="l00025"></a>00025 <span class="preprocessor"></span><span class="preprocessor">#define APR_RING_DEBUG</span>
<a name="l00026"></a>00026 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00027"></a>00027 <span class="preprocessor"></span>
<a name="l00028"></a>00028 <span class="preprocessor">#include "apu.h"</span>
<a name="l00029"></a>00029 <span class="preprocessor">#include "apr_network_io.h"</span>
<a name="l00030"></a>00030 <span class="preprocessor">#include "apr_file_io.h"</span>
<a name="l00031"></a>00031 <span class="preprocessor">#include "apr_general.h"</span>
<a name="l00032"></a>00032 <span class="preprocessor">#include "apr_mmap.h"</span>
<a name="l00033"></a>00033 <span class="preprocessor">#include "apr_errno.h"</span>
<a name="l00034"></a>00034 <span class="preprocessor">#include "apr_ring.h"</span>
<a name="l00035"></a>00035 <span class="preprocessor">#include "apr.h"</span>
<a name="l00036"></a>00036 <span class="preprocessor">#if APR_HAVE_SYS_UIO_H</span>
<a name="l00037"></a>00037 <span class="preprocessor"></span><span class="preprocessor">#include &lt;sys/uio.h&gt;</span>    <span class="comment">/* for struct iovec */</span>
<a name="l00038"></a>00038 <span class="preprocessor">#endif</span>
<a name="l00039"></a>00039 <span class="preprocessor"></span><span class="preprocessor">#if APR_HAVE_STDARG_H</span>
<a name="l00040"></a>00040 <span class="preprocessor"></span><span class="preprocessor">#include &lt;stdarg.h&gt;</span>
<a name="l00041"></a>00041 <span class="preprocessor">#endif</span>
<a name="l00042"></a>00042 <span class="preprocessor"></span>
<a name="l00043"></a>00043 <span class="preprocessor">#ifdef __cplusplus</span>
<a name="l00044"></a>00044 <span class="preprocessor"></span><span class="keyword">extern</span> <span class="stringliteral">"C"</span> {
<a name="l00045"></a>00045 <span class="preprocessor">#endif</span>
<a name="l00046"></a>00046 <span class="preprocessor"></span>
<a name="l00054"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#g82bf404af30875135c65e2c13ad035e5">00054</a> <span class="preprocessor">#define APR_BUCKET_BUFF_SIZE 8000</span>
<a name="l00055"></a>00055 <span class="preprocessor"></span>
<a name="l00057"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#g756973fb6392bd1026c3d96b4519776d">00057</a> <span class="keyword">typedef</span> <span class="keyword">enum</span> {
<a name="l00058"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#gg756973fb6392bd1026c3d96b4519776d2d983f5b7fd996434e0dded171c261d8">00058</a>     <a class="code" href="group___a_p_r___util___bucket___brigades.html#gg756973fb6392bd1026c3d96b4519776d2d983f5b7fd996434e0dded171c261d8">APR_BLOCK_READ</a>,   
<a name="l00059"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#gg756973fb6392bd1026c3d96b4519776d42b97663ca71fbbf2e2af7c8192e5dd8">00059</a>     <a class="code" href="group___a_p_r___util___bucket___brigades.html#gg756973fb6392bd1026c3d96b4519776d42b97663ca71fbbf2e2af7c8192e5dd8">APR_NONBLOCK_READ</a> 
<a name="l00060"></a>00060 } <a class="code" href="group___a_p_r___util___bucket___brigades.html#g756973fb6392bd1026c3d96b4519776d">apr_read_type_e</a>;
<a name="l00061"></a>00061 
<a name="l00114"></a>00114 <span class="comment">/*</span>
<a name="l00115"></a>00115 <span class="comment"> * Forward declaration of the main types.</span>
<a name="l00116"></a>00116 <span class="comment"> */</span>
<a name="l00117"></a>00117 
<a name="l00119"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#g9f50254e85c7aad79ca289a0ba069025">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="structapr__bucket__brigade.html">apr_bucket_brigade</a>;
<a name="l00121"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#ga17a456120961b1c5af0525f4900a457">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="structapr__bucket.html">apr_bucket</a>;
<a name="l00123"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#g9a30babfeb6e290db124d8f9b69e49e4">00123</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="group___a_p_r___util___bucket___brigades.html#g9a30babfeb6e290db124d8f9b69e49e4">apr_bucket_alloc_t</a> <a class="code" href="group___a_p_r___util___bucket___brigades.html#g9a30babfeb6e290db124d8f9b69e49e4">apr_bucket_alloc_t</a>;
<a name="l00124"></a>00124 
<a name="l00126"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#g4a152aaf7d851c81af73b7e84dc1a8a2">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="structapr__bucket__type__t.html">apr_bucket_type_t</a>;
<a name="l00127"></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="structapr__bucket__type__t.html">apr_bucket_type_t</a> {
<a name="l00135"></a><a class="code" href="structapr__bucket__type__t.html#c6d779be45de214c6abd2cc205c48901">00135</a>     <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structapr__bucket__type__t.html#c6d779be45de214c6abd2cc205c48901">name</a>;
<a name="l00140"></a><a class="code" href="structapr__bucket__type__t.html#d4bd2ffb03cb2f5f3b3941ce20468038">00140</a>     <span class="keywordtype">int</span> <a class="code" href="structapr__bucket__type__t.html#d4bd2ffb03cb2f5f3b3941ce20468038">num_func</a>;
<a name="l00151"></a>00151     <span class="keyword">enum</span> {
<a name="l00153"></a><a class="code" href="structapr__bucket__type__t.html#117f85e4a58c5e7d7e373705ad138f8553d3ef9d6a275fe2b72a91acea7017d5">00153</a>         <a class="code" href="structapr__bucket__type__t.html#117f85e4a58c5e7d7e373705ad138f8553d3ef9d6a275fe2b72a91acea7017d5">APR_BUCKET_DATA</a> = 0,
<a name="l00155"></a><a class="code" href="structapr__bucket__type__t.html#117f85e4a58c5e7d7e373705ad138f859bf38b4eb3ea41c4af230432ac7a5fb1">00155</a>         <a class="code" href="structapr__bucket__type__t.html#117f85e4a58c5e7d7e373705ad138f859bf38b4eb3ea41c4af230432ac7a5fb1">APR_BUCKET_METADATA</a> = 1
<a name="l00156"></a>00156     } is_metadata;
<a name="l00164"></a>00164     void (*<a class="code" href="structapr__bucket__type__t.html#a5a8ae7611ba3be480e3fd12ff3ac352">destroy</a>)(<span class="keywordtype">void</span> *data);
<a name="l00165"></a>00165 
<a name="l00176"></a>00176     apr_status_t (*<a class="code" href="structapr__bucket__type__t.html#8e9f3f5b2a5513691f3cea130a1aa54b">read</a>)(<a class="code" href="structapr__bucket.html">apr_bucket</a> *b, <span class="keyword">const</span> <span class="keywordtype">char</span> **str, apr_size_t *len, 
<a name="l00177"></a>00177                          <a class="code" href="group___a_p_r___util___bucket___brigades.html#g756973fb6392bd1026c3d96b4519776d">apr_read_type_e</a> block);
<a name="l00178"></a>00178     
<a name="l00192"></a>00192     apr_status_t (*<a class="code" href="structapr__bucket__type__t.html#4e2015fd6e927ed55157a9b003ed5fdb">setaside</a>)(<a class="code" href="structapr__bucket.html">apr_bucket</a> *e, apr_pool_t *pool);
<a name="l00193"></a>00193 
<a name="l00203"></a>00203     apr_status_t (*<a class="code" href="structapr__bucket__type__t.html#f30959bc15fc60e21224d5e3c8c0a814">split</a>)(<a class="code" href="structapr__bucket.html">apr_bucket</a> *e, apr_size_t point);
<a name="l00204"></a>00204 
<a name="l00211"></a>00211     apr_status_t (*<a class="code" href="structapr__bucket__type__t.html#300d6b15d55a3a1f13eeec7379100c38">copy</a>)(<a class="code" href="structapr__bucket.html">apr_bucket</a> *e, <a class="code" href="structapr__bucket.html">apr_bucket</a> **c);
<a name="l00212"></a>00212 
<a name="l00213"></a>00213 };
<a name="l00214"></a>00214 
<a name="l00224"></a><a class="code" href="structapr__bucket.html">00224</a> <span class="keyword">struct </span><a class="code" href="structapr__bucket.html">apr_bucket</a> {
<a name="l00226"></a>00226     <a class="code" href="structapr__bucket.html#b1acff965e57e067dfde80321d04dea7">APR_RING_ENTRY</a>(<a class="code" href="structapr__bucket.html">apr_bucket</a>) link;
<a name="l00228"></a><a class="code" href="structapr__bucket.html#c27fa5ce798e688ad243ebe1615937fc">00228</a>     <span class="keyword">const</span> <a class="code" href="structapr__bucket__type__t.html">apr_bucket_type_t</a> *<a class="code" href="structapr__bucket.html#c27fa5ce798e688ad243ebe1615937fc">type</a>;
<a name="l00234"></a><a class="code" href="structapr__bucket.html#0898dfc78d9275187189b9a745e619bf">00234</a>     apr_size_t <a class="code" href="structapr__bucket.html#0898dfc78d9275187189b9a745e619bf">length</a>;
<a name="l00242"></a><a class="code" href="structapr__bucket.html#4a8791b606b3ad613b8672ec94145628">00242</a>     apr_off_t <a class="code" href="structapr__bucket.html#4a8791b606b3ad613b8672ec94145628">start</a>;
<a name="l00244"></a><a class="code" href="structapr__bucket.html#7fc4604750889b3f762bda1a786d276a">00244</a>     <span class="keywordtype">void</span> *<a class="code" href="structapr__bucket.html#7fc4604750889b3f762bda1a786d276a">data</a>; 
<a name="l00252"></a>00252     void (*<a class="code" href="structapr__bucket.html#c50b1c1de2b171938c33bf3ac478f359">free</a>)(<span class="keywordtype">void</span> *e);
<a name="l00254"></a><a class="code" href="structapr__bucket.html#5a500b80105834621514d6c0814d0966">00254</a>     <a class="code" href="group___a_p_r___util___bucket___brigades.html#g9a30babfeb6e290db124d8f9b69e49e4">apr_bucket_alloc_t</a> *<a class="code" href="structapr__bucket.html#5a500b80105834621514d6c0814d0966">list</a>;
<a name="l00255"></a>00255 };
<a name="l00256"></a>00256 
<a name="l00258"></a><a class="code" href="structapr__bucket__brigade.html">00258</a> <span class="keyword">struct </span><a class="code" href="structapr__bucket__brigade.html">apr_bucket_brigade</a> {
<a name="l00264"></a><a class="code" href="structapr__bucket__brigade.html#8e03b4dd531903709ae3ae8ebe9e46ee">00264</a>     apr_pool_t *<a class="code" href="structapr__bucket__brigade.html#8e03b4dd531903709ae3ae8ebe9e46ee">p</a>;
<a name="l00266"></a>00266     <span class="comment">/*</span>
<a name="l00267"></a>00267 <span class="comment">     * The apr_bucket_list structure doesn't actually need a name tag</span>
<a name="l00268"></a>00268 <span class="comment">     * because it has no existence independent of struct apr_bucket_brigade;</span>
<a name="l00269"></a>00269 <span class="comment">     * the ring macros are designed so that you can leave the name tag</span>
<a name="l00270"></a>00270 <span class="comment">     * argument empty in this situation but apparently the Windows compiler</span>
<a name="l00271"></a>00271 <span class="comment">     * doesn't like that.</span>
<a name="l00272"></a>00272 <span class="comment">     */</span>
<a name="l00273"></a>00273     <a class="code" href="structapr__bucket__brigade.html#76a313afc83dd161916f3f9b83eea734">APR_RING_HEAD</a>(apr_bucket_list, <a class="code" href="structapr__bucket.html">apr_bucket</a>) list;
<a name="l00275"></a><a class="code" href="structapr__bucket__brigade.html#9f58f90a088f02ebb6f935f004092aaa">00275</a>     <a class="code" href="group___a_p_r___util___bucket___brigades.html#g9a30babfeb6e290db124d8f9b69e49e4">apr_bucket_alloc_t</a> *<a class="code" href="structapr__bucket__brigade.html#9f58f90a088f02ebb6f935f004092aaa">bucket_alloc</a>;
<a name="l00276"></a>00276 };
<a name="l00277"></a>00277 
<a name="l00278"></a>00278 
<a name="l00282"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#gcdf6dc9d4c81c64834e5e509281f7f16">00282</a> typedef apr_status_t (*<a class="code" href="group___a_p_r___util___bucket___brigades.html#gcdf6dc9d4c81c64834e5e509281f7f16">apr_brigade_flush</a>)(<a class="code" href="structapr__bucket__brigade.html">apr_bucket_brigade</a> *bb, <span class="keywordtype">void</span> *ctx);
<a name="l00283"></a>00283 
<a name="l00284"></a>00284 <span class="comment">/*</span>
<a name="l00285"></a>00285 <span class="comment"> * define APR_BUCKET_DEBUG if you want your brigades to be checked for</span>
<a name="l00286"></a>00286 <span class="comment"> * validity at every possible instant.  this will slow your code down</span>
<a name="l00287"></a>00287 <span class="comment"> * substantially but is a very useful debugging tool.</span>
<a name="l00288"></a>00288 <span class="comment"> */</span>
<a name="l00289"></a>00289 <span class="preprocessor">#ifdef APR_BUCKET_DEBUG</span>
<a name="l00290"></a>00290 <span class="preprocessor"></span>
<a name="l00291"></a>00291 <span class="preprocessor">#define APR_BRIGADE_CHECK_CONSISTENCY(b)                                \</span>
<a name="l00292"></a>00292 <span class="preprocessor">        APR_RING_CHECK_CONSISTENCY(&amp;(b)-&gt;list, apr_bucket, link)</span>
<a name="l00293"></a>00293 <span class="preprocessor"></span>
<a name="l00294"></a>00294 <span class="preprocessor">#define APR_BUCKET_CHECK_CONSISTENCY(e)                                 \</span>
<a name="l00295"></a>00295 <span class="preprocessor">        APR_RING_CHECK_ELEM_CONSISTENCY((e), apr_bucket, link)</span>
<a name="l00296"></a>00296 <span class="preprocessor"></span>
<a name="l00297"></a>00297 <span class="preprocessor">#else</span>
<a name="l00298"></a>00298 <span class="preprocessor"></span>
<a name="l00304"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#ge1dfe8bf117d10e7dc5b8e0c08f0ebb2">00304</a> <span class="preprocessor">#define APR_BRIGADE_CHECK_CONSISTENCY(b)</span>
<a name="l00305"></a>00305 <span class="preprocessor"></span>
<a name="l00311"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#gedaeb3fbe71aac408377471b8a54dc08">00311</a> <span class="preprocessor">#define APR_BUCKET_CHECK_CONSISTENCY(e)</span>
<a name="l00312"></a>00312 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00313"></a>00313 <span class="preprocessor"></span>
<a name="l00314"></a>00314 
<a name="l00331"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#g858da66dccab1e063415678bb115788a">00331</a> <span class="preprocessor">#define APR_BRIGADE_SENTINEL(b) APR_RING_SENTINEL(&amp;(b)-&gt;list, apr_bucket, link)</span>
<a name="l00332"></a>00332 <span class="preprocessor"></span>
<a name="l00338"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#g836f61da6cce15074eff257ce4b6fc0f">00338</a> <span class="preprocessor">#define APR_BRIGADE_EMPTY(b)    APR_RING_EMPTY(&amp;(b)-&gt;list, apr_bucket, link)</span>
<a name="l00339"></a>00339 <span class="preprocessor"></span>
<a name="l00345"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#gb5826a11eb6ba90786a94282f806c230">00345</a> <span class="preprocessor">#define APR_BRIGADE_FIRST(b)    APR_RING_FIRST(&amp;(b)-&gt;list)</span>
<a name="l00346"></a>00346 <span class="preprocessor"></span>
<a name="l00351"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#g40e0ef2a904aa519ca9d63288dee0b4d">00351</a> <span class="preprocessor">#define APR_BRIGADE_LAST(b)     APR_RING_LAST(&amp;(b)-&gt;list)</span>
<a name="l00352"></a>00352 <span class="preprocessor"></span>
<a name="l00358"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#g6dc39d8757e18941a6fb069b0c18fbd3">00358</a> <span class="preprocessor">#define APR_BRIGADE_INSERT_HEAD(b, e) do {                              \</span>
<a name="l00359"></a>00359 <span class="preprocessor">        apr_bucket *ap__b = (e);                                        \</span>
<a name="l00360"></a>00360 <span class="preprocessor">        APR_RING_INSERT_HEAD(&amp;(b)-&gt;list, ap__b, apr_bucket, link);      \</span>
<a name="l00361"></a>00361 <span class="preprocessor">        APR_BRIGADE_CHECK_CONSISTENCY((b));                             \</span>
<a name="l00362"></a>00362 <span class="preprocessor">    } while (0)</span>
<a name="l00363"></a>00363 <span class="preprocessor"></span>
<a name="l00369"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#g5447595f8374296c5ffe208db39b2f5d">00369</a> <span class="preprocessor">#define APR_BRIGADE_INSERT_TAIL(b, e) do {                              \</span>
<a name="l00370"></a>00370 <span class="preprocessor">        apr_bucket *ap__b = (e);                                        \</span>
<a name="l00371"></a>00371 <span class="preprocessor">        APR_RING_INSERT_TAIL(&amp;(b)-&gt;list, ap__b, apr_bucket, link);      \</span>
<a name="l00372"></a>00372 <span class="preprocessor">        APR_BRIGADE_CHECK_CONSISTENCY((b));                             \</span>
<a name="l00373"></a>00373 <span class="preprocessor">    } while (0)</span>
<a name="l00374"></a>00374 <span class="preprocessor"></span>
<a name="l00380"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#g7cecbc89be912ce9ab24c889eb8f955b">00380</a> <span class="preprocessor">#define APR_BRIGADE_CONCAT(a, b) do {                                   \</span>
<a name="l00381"></a>00381 <span class="preprocessor">        APR_RING_CONCAT(&amp;(a)-&gt;list, &amp;(b)-&gt;list, apr_bucket, link);      \</span>
<a name="l00382"></a>00382 <span class="preprocessor">        APR_BRIGADE_CHECK_CONSISTENCY((a));                             \</span>
<a name="l00383"></a>00383 <span class="preprocessor">    } while (0)</span>
<a name="l00384"></a>00384 <span class="preprocessor"></span>
<a name="l00390"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#g52ba212f76507a79ccae213875150ad1">00390</a> <span class="preprocessor">#define APR_BRIGADE_PREPEND(a, b) do {                                  \</span>
<a name="l00391"></a>00391 <span class="preprocessor">        APR_RING_PREPEND(&amp;(a)-&gt;list, &amp;(b)-&gt;list, apr_bucket, link);     \</span>
<a name="l00392"></a>00392 <span class="preprocessor">        APR_BRIGADE_CHECK_CONSISTENCY((a));                             \</span>
<a name="l00393"></a>00393 <span class="preprocessor">    } while (0)</span>
<a name="l00394"></a>00394 <span class="preprocessor"></span>
<a name="l00400"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#ge012adeccda754eabc42b7855bec081e">00400</a> <span class="preprocessor">#define APR_BUCKET_INSERT_BEFORE(a, b) do {                             \</span>
<a name="l00401"></a>00401 <span class="preprocessor">        apr_bucket *ap__a = (a), *ap__b = (b);                          \</span>
<a name="l00402"></a>00402 <span class="preprocessor">        APR_RING_INSERT_BEFORE(ap__a, ap__b, link);                     \</span>
<a name="l00403"></a>00403 <span class="preprocessor">        APR_BUCKET_CHECK_CONSISTENCY(ap__a);                            \</span>
<a name="l00404"></a>00404 <span class="preprocessor">    } while (0)</span>
<a name="l00405"></a>00405 <span class="preprocessor"></span>
<a name="l00411"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#g1f8114b7316d1fef1deb95abc8f02341">00411</a> <span class="preprocessor">#define APR_BUCKET_INSERT_AFTER(a, b) do {                              \</span>
<a name="l00412"></a>00412 <span class="preprocessor">        apr_bucket *ap__a = (a), *ap__b = (b);                          \</span>
<a name="l00413"></a>00413 <span class="preprocessor">        APR_RING_INSERT_AFTER(ap__a, ap__b, link);                      \</span>
<a name="l00414"></a>00414 <span class="preprocessor">        APR_BUCKET_CHECK_CONSISTENCY(ap__a);                            \</span>
<a name="l00415"></a>00415 <span class="preprocessor">    } while (0)</span>
<a name="l00416"></a>00416 <span class="preprocessor"></span>
<a name="l00422"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#g7171f690b203d548a5b6ae0b079068d8">00422</a> <span class="preprocessor">#define APR_BUCKET_NEXT(e)      APR_RING_NEXT((e), link)</span>
<a name="l00423"></a>00423 <span class="preprocessor"></span>
<a name="l00428"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#gf229fecd4174efd4d6a9774e3048ae28">00428</a> <span class="preprocessor">#define APR_BUCKET_PREV(e)      APR_RING_PREV((e), link)</span>
<a name="l00429"></a>00429 <span class="preprocessor"></span>
<a name="l00434"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#g2c46a1b717a87b68bd98b425e0c64977">00434</a> <span class="preprocessor">#define APR_BUCKET_REMOVE(e)    APR_RING_REMOVE((e), link)</span>
<a name="l00435"></a>00435 <span class="preprocessor"></span>
<a name="l00440"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#g00c2e104125f124c3a52627863432de9">00440</a> <span class="preprocessor">#define APR_BUCKET_INIT(e)      APR_RING_ELEM_INIT((e), link)</span>
<a name="l00441"></a>00441 <span class="preprocessor"></span>
<a name="l00448"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#g506cb29cc1ec1abeb487e01b122bd4d9">00448</a> <span class="preprocessor">#define APR_BUCKET_IS_METADATA(e)    ((e)-&gt;type-&gt;is_metadata)</span>
<a name="l00449"></a>00449 <span class="preprocessor"></span>
<a name="l00455"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#g24105da0bb755a775c4b2a519d7c25f9">00455</a> <span class="preprocessor">#define APR_BUCKET_IS_FLUSH(e)       ((e)-&gt;type == &amp;apr_bucket_type_flush)</span>
<a name="l00456"></a>00456 <span class="preprocessor"></span>
<a name="l00461"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#g89b225e1c08473766eec719b985ca0d6">00461</a> <span class="preprocessor">#define APR_BUCKET_IS_EOS(e)         ((e)-&gt;type == &amp;apr_bucket_type_eos)</span>
<a name="l00462"></a>00462 <span class="preprocessor"></span>
<a name="l00467"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#g1d54037bb6953c73d5c61f64c311d470">00467</a> <span class="preprocessor">#define APR_BUCKET_IS_FILE(e)        ((e)-&gt;type == &amp;apr_bucket_type_file)</span>
<a name="l00468"></a>00468 <span class="preprocessor"></span>
<a name="l00473"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#g03e62d86c994d1d1cc9be3eb8b8f6ac6">00473</a> <span class="preprocessor">#define APR_BUCKET_IS_PIPE(e)        ((e)-&gt;type == &amp;apr_bucket_type_pipe)</span>
<a name="l00474"></a>00474 <span class="preprocessor"></span>
<a name="l00479"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#g4b8315b498e4eb67efde1c83bdbe8b87">00479</a> <span class="preprocessor">#define APR_BUCKET_IS_SOCKET(e)      ((e)-&gt;type == &amp;apr_bucket_type_socket)</span>
<a name="l00480"></a>00480 <span class="preprocessor"></span>
<a name="l00485"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#g3dee4fbd5b4e16e5188a6cfec40b6961">00485</a> <span class="preprocessor">#define APR_BUCKET_IS_HEAP(e)        ((e)-&gt;type == &amp;apr_bucket_type_heap)</span>
<a name="l00486"></a>00486 <span class="preprocessor"></span>
<a name="l00491"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#g1a7e7ac5fddbab4ce189e8d3007446ff">00491</a> <span class="preprocessor">#define APR_BUCKET_IS_TRANSIENT(e)   ((e)-&gt;type == &amp;apr_bucket_type_transient)</span>
<a name="l00492"></a>00492 <span class="preprocessor"></span>
<a name="l00497"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#g53f1188c168acf7dcfabfa1ac5a08655">00497</a> <span class="preprocessor">#define APR_BUCKET_IS_IMMORTAL(e)    ((e)-&gt;type == &amp;apr_bucket_type_immortal)</span>
<a name="l00498"></a>00498 <span class="preprocessor"></span><span class="preprocessor">#if APR_HAS_MMAP</span>
<a name="l00499"></a>00499 <span class="preprocessor"></span>
<a name="l00504"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#g1693d49aeb0287e3b171c922c6b633d2">00504</a> <span class="preprocessor">#define APR_BUCKET_IS_MMAP(e)        ((e)-&gt;type == &amp;apr_bucket_type_mmap)</span>
<a name="l00505"></a>00505 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00506"></a>00506 <span class="preprocessor"></span>
<a name="l00511"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#gdbe80a9016da6a06ab414ba61d6625d0">00511</a> <span class="preprocessor">#define APR_BUCKET_IS_POOL(e)        ((e)-&gt;type == &amp;apr_bucket_type_pool)</span>
<a name="l00512"></a>00512 <span class="preprocessor"></span>
<a name="l00513"></a>00513 <span class="comment">/*</span>
<a name="l00514"></a>00514 <span class="comment"> * General-purpose reference counting for the various bucket types.</span>
<a name="l00515"></a>00515 <span class="comment"> *</span>
<a name="l00516"></a>00516 <span class="comment"> * Any bucket type that keeps track of the resources it uses (i.e.</span>
<a name="l00517"></a>00517 <span class="comment"> * most of them except for IMMORTAL, TRANSIENT, and EOS) needs to</span>
<a name="l00518"></a>00518 <span class="comment"> * attach a reference count to the resource so that it can be freed</span>
<a name="l00519"></a>00519 <span class="comment"> * when the last bucket that uses it goes away. Resource-sharing may</span>
<a name="l00520"></a>00520 <span class="comment"> * occur because of bucket splits or buckets that refer to globally</span>
<a name="l00521"></a>00521 <span class="comment"> * cached data. */</span>
<a name="l00522"></a>00522 
<a name="l00524"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#g785fd3402961b30315975b0c87c87706">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="structapr__bucket__refcount.html">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="structapr__bucket__refcount.html">apr_bucket_refcount</a> {
<a name="l00533"></a><a class="code" href="structapr__bucket__refcount.html#75040af03e3ad3c722bccea1048e3dae">00533</a>     <span class="keywordtype">int</span>          refcount;
<a name="l00534"></a>00534 };
<a name="l00535"></a>00535 
<a name="l00536"></a>00536 <span class="comment">/*  *****  Reference-counted bucket types  *****  */</span>
<a name="l00537"></a>00537 
<a name="l00539"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#gede6e77d621d0f3f7d2685d489d01283">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="structapr__bucket__heap.html">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="structapr__bucket__heap.html">apr_bucket_heap</a> {
<a name="l00545"></a><a class="code" href="structapr__bucket__heap.html#b87003dea25caef69aa3b30a1948024e">00545</a>     <a class="code" href="structapr__bucket__refcount.html">apr_bucket_refcount</a>  refcount;
<a name="l00549"></a><a class="code" href="structapr__bucket__heap.html#c6386e2f635c6af19075123749e1fa71">00549</a>     <span class="keywordtype">char</span>    *base;
<a name="l00551"></a><a class="code" href="structapr__bucket__heap.html#e373dada96f2e005a6aaf80e41c4cf6d">00551</a>     apr_size_t  alloc_len;
<a name="l00553"></a>00553     void (*free_func)(<span class="keywordtype">void</span> *data);
<a name="l00554"></a>00554 };
<a name="l00555"></a>00555 
<a name="l00557"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#g211e00d871029de148116cd24b070aed">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="structapr__bucket__pool.html">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="structapr__bucket__pool.html">apr_bucket_pool</a> {
<a name="l00573"></a><a class="code" href="structapr__bucket__pool.html#0fe0b0dedea28fb1ed0a1a0f42338225">00573</a>     <a class="code" href="structapr__bucket__heap.html">apr_bucket_heap</a>  heap;
<a name="l00579"></a><a class="code" href="structapr__bucket__pool.html#9ee5297361ba548a20c3aa626a37c068">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#f55591a1e7f3b097e7c271683bc80968">00586</a>     apr_pool_t *pool;
<a name="l00590"></a><a class="code" href="structapr__bucket__pool.html#651aa0c18658342daf72ff86680bfaca">00590</a>     <a class="code" href="group___a_p_r___util___bucket___brigades.html#g9a30babfeb6e290db124d8f9b69e49e4">apr_bucket_alloc_t</a> *list;
<a name="l00591"></a>00591 };
<a name="l00592"></a>00592 
<a name="l00593"></a>00593 <span class="preprocessor">#if APR_HAS_MMAP</span>
<a name="l00594"></a>00594 <span class="preprocessor"></span>
<a name="l00595"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#g27ede7c3a29627c7d184dc7cfbc4f767">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="structapr__bucket__mmap.html">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="structapr__bucket__mmap.html">apr_bucket_mmap</a> {
<a name="l00601"></a><a class="code" href="structapr__bucket__mmap.html#99f201622002479f4f84ea10598a013c">00601</a>     <a class="code" href="structapr__bucket__refcount.html">apr_bucket_refcount</a>  refcount;
<a name="l00603"></a><a class="code" href="structapr__bucket__mmap.html#66e9385752aaacb7fef7e96db62f1920">00603</a>     apr_mmap_t *mmap;
<a name="l00604"></a>00604 };
<a name="l00605"></a>00605 <span class="preprocessor">#endif</span>
<a name="l00606"></a>00606 <span class="preprocessor"></span>
<a name="l00608"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#g1a786f7edac4d7a2c212f0fe74457b3d">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="structapr__bucket__file.html">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="structapr__bucket__file.html">apr_bucket_file</a> {
<a name="l00614"></a><a class="code" href="structapr__bucket__file.html#b0c123f34b85a07b601dc9794f8eed09">00614</a>     <a class="code" href="structapr__bucket__refcount.html">apr_bucket_refcount</a>  refcount;
<a name="l00616"></a><a class="code" href="structapr__bucket__file.html#a43154c0bc9d41ba4b0762c906de432f">00616</a>     apr_file_t *fd;
<a name="l00619"></a><a class="code" href="structapr__bucket__file.html#61b5603482215f6c9ace7b26fa12b884">00619</a>     apr_pool_t *readpool;
<a name="l00620"></a>00620 <span class="preprocessor">#if APR_HAS_MMAP</span>
<a name="l00621"></a>00621 <span class="preprocessor"></span>
<a name="l00623"></a><a class="code" href="structapr__bucket__file.html#7812a8d6e6f10d0095569f04d3423e83">00623</a>     <span class="keywordtype">int</span> can_mmap;
<a name="l00624"></a>00624 <span class="preprocessor">#endif </span><span class="comment">/* APR_HAS_MMAP */</span>
<a name="l00625"></a>00625 };
<a name="l00626"></a>00626 
<a name="l00628"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#g3c0929c971f94de4521fb0fea6fd3209">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="unionapr__bucket__structs.html">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="unionapr__bucket__structs.html">apr_bucket_structs</a> {
<a name="l00634"></a><a class="code" href="unionapr__bucket__structs.html#840c42a20727de2e4534ca05f1f6c990">00634</a>     <a class="code" href="structapr__bucket.html">apr_bucket</a>      b;      
<a name="l00635"></a><a class="code" href="unionapr__bucket__structs.html#5335dc82d8250e511a9c55e5fea97141">00635</a>     <a class="code" href="structapr__bucket__heap.html">apr_bucket_heap</a> heap;   
<a name="l00636"></a><a class="code" href="unionapr__bucket__structs.html#b926fe2af7c1780c03bf1669766db4a1">00636</a>     <a class="code" href="structapr__bucket__pool.html">apr_bucket_pool</a> pool;   
<a name="l00637"></a>00637 <span class="preprocessor">#if APR_HAS_MMAP</span>
<a name="l00638"></a><a class="code" href="unionapr__bucket__structs.html#627c4ca697f06bbf4226c8c2acd93cbc">00638</a> <span class="preprocessor"></span>    <a class="code" href="structapr__bucket__mmap.html">apr_bucket_mmap</a> mmap;   
<a name="l00639"></a>00639 <span class="preprocessor">#endif</span>
<a name="l00640"></a><a class="code" href="unionapr__bucket__structs.html#b339255acdf750133759a0d67b3f2e30">00640</a> <span class="preprocessor"></span>    <a class="code" href="structapr__bucket__file.html">apr_bucket_file</a> file;   
<a name="l00641"></a>00641 };
<a name="l00642"></a>00642 
<a name="l00648"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#ge3ccf4c383c9e7fea28354cc8e029626">00648</a> <span class="preprocessor">#define APR_BUCKET_ALLOC_SIZE  APR_ALIGN_DEFAULT(2*sizeof(apr_bucket_structs))</span>
<a name="l00649"></a>00649 <span class="preprocessor"></span>
<a name="l00650"></a>00650 <span class="comment">/*  *****  Bucket Brigade Functions  *****  */</span>
<a name="l00658"></a>00658 <a class="code" href="group___a_p_r___util.html#g408498ed57031391c19bf360cc61733a">APU_DECLARE</a>(<a class="code" href="structapr__bucket__brigade.html">apr_bucket_brigade</a> *) <a class="code" href="group___a_p_r___util___bucket___brigades.html#geb422371006699c68f0ed3b496cc12a2">apr_brigade_create</a>(apr_pool_t *<a class="code" href="structapr__bucket__brigade.html#8e03b4dd531903709ae3ae8ebe9e46ee">p</a>,
<a name="l00659"></a>00659                                                      <a class="code" href="group___a_p_r___util___bucket___brigades.html#g9a30babfeb6e290db124d8f9b69e49e4">apr_bucket_alloc_t</a> *list);
<a name="l00660"></a>00660 
<a name="l00666"></a>00666 <a class="code" href="group___a_p_r___util.html#g408498ed57031391c19bf360cc61733a">APU_DECLARE</a>(apr_status_t) <a class="code" href="group___a_p_r___util___bucket___brigades.html#g2eba1e262dece0d4444ddd25ae7b250a">apr_brigade_destroy</a>(<a class="code" href="structapr__bucket__brigade.html">apr_bucket_brigade</a> *b);
<a name="l00667"></a>00667 
<a name="l00679"></a>00679 <a class="code" href="group___a_p_r___util.html#g408498ed57031391c19bf360cc61733a">APU_DECLARE</a>(apr_status_t) <a class="code" href="group___a_p_r___util___bucket___brigades.html#gfd6a8378a15e8b42a57a5923a03de7f2">apr_brigade_cleanup</a>(<span class="keywordtype">void</span> *data);
<a name="l00680"></a>00680 
<a name="l00690"></a>00690 <a class="code" href="group___a_p_r___util.html#g408498ed57031391c19bf360cc61733a">APU_DECLARE</a>(<a class="code" href="structapr__bucket__brigade.html">apr_bucket_brigade</a> *) <a class="code" href="group___a_p_r___util___bucket___brigades.html#gcaf2929f951920a464e170baf2b4c345">apr_brigade_split</a>(<a class="code" href="structapr__bucket__brigade.html">apr_bucket_brigade</a> *b,
<a name="l00691"></a>00691                                                     <a class="code" href="structapr__bucket.html">apr_bucket</a> *e);
<a name="l00692"></a>00692 
<a name="l00705"></a>00705 <a class="code" href="group___a_p_r___util.html#g408498ed57031391c19bf360cc61733a">APU_DECLARE</a>(apr_status_t) <a class="code" href="group___a_p_r___util___bucket___brigades.html#g4b2f22ba70ac9f65788014c61d4f5b76">apr_brigade_partition</a>(<a class="code" href="structapr__bucket__brigade.html">apr_bucket_brigade</a> *b,
<a name="l00706"></a>00706                                                 apr_off_t point,
<a name="l00707"></a>00707                                                 <a class="code" href="structapr__bucket.html">apr_bucket</a> **after_point);
<a name="l00708"></a>00708 
<a name="l00716"></a>00716 <a class="code" href="group___a_p_r___util.html#g408498ed57031391c19bf360cc61733a">APU_DECLARE</a>(apr_status_t) <a class="code" href="group___a_p_r___util___bucket___brigades.html#g65075839e31fd85e2c80717f4e9e0461">apr_brigade_length</a>(<a class="code" href="structapr__bucket__brigade.html">apr_bucket_brigade</a> *bb,
<a name="l00717"></a>00717                                              <span class="keywordtype">int</span> read_all,
<a name="l00718"></a>00718                                              apr_off_t *length);
<a name="l00719"></a>00719 
<a name="l00727"></a>00727 <a class="code" href="group___a_p_r___util.html#g408498ed57031391c19bf360cc61733a">APU_DECLARE</a>(apr_status_t) <a class="code" href="group___a_p_r___util___bucket___brigades.html#g301aeb943e68ef4b99c1ae6a18dcf78e">apr_brigade_flatten</a>(<a class="code" href="structapr__bucket__brigade.html">apr_bucket_brigade</a> *bb,
<a name="l00728"></a>00728                                               <span class="keywordtype">char</span> *c,
<a name="l00729"></a>00729                                               apr_size_t *len);
<a name="l00730"></a>00730 
<a name="l00738"></a>00738 <a class="code" href="group___a_p_r___util.html#g408498ed57031391c19bf360cc61733a">APU_DECLARE</a>(apr_status_t) <a class="code" href="group___a_p_r___util___bucket___brigades.html#ga5da970af09d1a87e020db054f2d1c94">apr_brigade_pflatten</a>(<a class="code" href="structapr__bucket__brigade.html">apr_bucket_brigade</a> *bb, 
<a name="l00739"></a>00739                                                <span class="keywordtype">char</span> **c,
<a name="l00740"></a>00740                                                apr_size_t *len,
<a name="l00741"></a>00741                                                apr_pool_t *pool);
<a name="l00742"></a>00742 
<a name="l00751"></a>00751 <a class="code" href="group___a_p_r___util.html#g408498ed57031391c19bf360cc61733a">APU_DECLARE</a>(apr_status_t) <a class="code" href="group___a_p_r___util___bucket___brigades.html#g257dece60dbdc910bc09e1fc0d7db622">apr_brigade_split_line</a>(<a class="code" href="structapr__bucket__brigade.html">apr_bucket_brigade</a> *bbOut,
<a name="l00752"></a>00752                                                  <a class="code" href="structapr__bucket__brigade.html">apr_bucket_brigade</a> *bbIn,
<a name="l00753"></a>00753                                                  <a class="code" href="group___a_p_r___util___bucket___brigades.html#g756973fb6392bd1026c3d96b4519776d">apr_read_type_e</a> block,
<a name="l00754"></a>00754                                                  apr_off_t maxbytes);
<a name="l00755"></a>00755 
<a name="l00765"></a>00765 <a class="code" href="group___a_p_r___util.html#g408498ed57031391c19bf360cc61733a">APU_DECLARE</a>(apr_status_t) <a class="code" href="group___a_p_r___util___bucket___brigades.html#g904bdc4a9a9c800d2d2b20b4ddefa6f7">apr_brigade_to_iovec</a>(<a class="code" href="structapr__bucket__brigade.html">apr_bucket_brigade</a> *b, 
<a name="l00766"></a>00766                                                struct iovec *vec, <span class="keywordtype">int</span> *nvec);
<a name="l00767"></a>00767 
<a name="l00776"></a>00776 <a class="code" href="group___a_p_r___util.html#g408498ed57031391c19bf360cc61733a">APU_DECLARE</a>(apr_status_t) <a class="code" href="group___a_p_r___util___bucket___brigades.html#g382871c1aec5cf9fbbcf19d67cff6b43">apr_brigade_vputstrs</a>(<a class="code" href="structapr__bucket__brigade.html">apr_bucket_brigade</a> *b,
<a name="l00777"></a>00777                                                <a class="code" href="group___a_p_r___util___bucket___brigades.html#gcdf6dc9d4c81c64834e5e509281f7f16">apr_brigade_flush</a> flush,
<a name="l00778"></a>00778                                                <span class="keywordtype">void</span> *ctx,
<a name="l00779"></a>00779                                                va_list va);
<a name="l00780"></a>00780 
<a name="l00790"></a>00790 <a class="code" href="group___a_p_r___util.html#g408498ed57031391c19bf360cc61733a">APU_DECLARE</a>(apr_status_t) <a class="code" href="group___a_p_r___util___bucket___brigades.html#g7242dae50995fc1a9174476ca3053d99">apr_brigade_write</a>(<a class="code" href="structapr__bucket__brigade.html">apr_bucket_brigade</a> *b,
<a name="l00791"></a>00791                                             <a class="code" href="group___a_p_r___util___bucket___brigades.html#gcdf6dc9d4c81c64834e5e509281f7f16">apr_brigade_flush</a> flush, <span class="keywordtype">void</span> *ctx,
<a name="l00792"></a>00792                                             const <span class="keywordtype">char</span> *str, apr_size_t nbyte);
<a name="l00793"></a>00793 
<a name="l00803"></a>00803 <a class="code" href="group___a_p_r___util.html#g408498ed57031391c19bf360cc61733a">APU_DECLARE</a>(apr_status_t) <a class="code" href="group___a_p_r___util___bucket___brigades.html#gfc116a4359b717cd3a78a19ddf169486">apr_brigade_writev</a>(<a class="code" href="structapr__bucket__brigade.html">apr_bucket_brigade</a> *b,
<a name="l00804"></a>00804                                              <a class="code" href="group___a_p_r___util___bucket___brigades.html#gcdf6dc9d4c81c64834e5e509281f7f16">apr_brigade_flush</a> flush,
<a name="l00805"></a>00805                                              <span class="keywordtype">void</span> *ctx,
<a name="l00806"></a>00806                                              const struct iovec *vec,
<a name="l00807"></a>00807                                              apr_size_t nvec);
<a name="l00808"></a>00808 
<a name="l00817"></a>00817 <a class="code" href="group___a_p_r___util.html#g408498ed57031391c19bf360cc61733a">APU_DECLARE</a>(apr_status_t) <a class="code" href="group___a_p_r___util___bucket___brigades.html#g2d1fed26db94e3006223098737a06f5a">apr_brigade_puts</a>(<a class="code" href="structapr__bucket__brigade.html">apr_bucket_brigade</a> *bb,
<a name="l00818"></a>00818                                            <a class="code" href="group___a_p_r___util___bucket___brigades.html#gcdf6dc9d4c81c64834e5e509281f7f16">apr_brigade_flush</a> flush, <span class="keywordtype">void</span> *ctx,
<a name="l00819"></a>00819                                            const <span class="keywordtype">char</span> *str);
<a name="l00820"></a>00820 
<a name="l00829"></a>00829 <a class="code" href="group___a_p_r___util.html#g408498ed57031391c19bf360cc61733a">APU_DECLARE</a>(apr_status_t) <a class="code" href="group___a_p_r___util___bucket___brigades.html#g362999cb255297fd0fd433f03236302d">apr_brigade_putc</a>(<a class="code" href="structapr__bucket__brigade.html">apr_bucket_brigade</a> *b,
<a name="l00830"></a>00830                                            <a class="code" href="group___a_p_r___util___bucket___brigades.html#gcdf6dc9d4c81c64834e5e509281f7f16">apr_brigade_flush</a> flush, <span class="keywordtype">void</span> *ctx,
<a name="l00831"></a>00831                                            const <span class="keywordtype">char</span> c);
<a name="l00832"></a>00832 
<a name="l00841"></a>00841 <a class="code" href="group___a_p_r___util.html#g03b160043a3b3a93e975085361683ff0">APU_DECLARE_NONSTD</a>(apr_status_t) <a class="code" href="group___a_p_r___util___bucket___brigades.html#g1f27949d92196cbf150b7d6256cbf4b7">apr_brigade_putstrs</a>(<a class="code" href="structapr__bucket__brigade.html">apr_bucket_brigade</a> *b,
<a name="l00842"></a>00842                                                      <a class="code" href="group___a_p_r___util___bucket___brigades.html#gcdf6dc9d4c81c64834e5e509281f7f16">apr_brigade_flush</a> flush,
<a name="l00843"></a>00843                                                      <span class="keywordtype">void</span> *ctx, ...);
<a name="l00844"></a>00844 
<a name="l00855"></a>00855 <a class="code" href="group___a_p_r___util.html#g03b160043a3b3a93e975085361683ff0">APU_DECLARE_NONSTD</a>(apr_status_t) <a class="code" href="group___a_p_r___util___bucket___brigades.html#g4120ba3834c545db3b9229d858e33b47">apr_brigade_printf</a>(<a class="code" href="structapr__bucket__brigade.html">apr_bucket_brigade</a> *b, 
<a name="l00856"></a>00856                                                     <a class="code" href="group___a_p_r___util___bucket___brigades.html#gcdf6dc9d4c81c64834e5e509281f7f16">apr_brigade_flush</a> flush,
<a name="l00857"></a>00857                                                     <span class="keywordtype">void</span> *ctx,
<a name="l00858"></a>00858                                                     const <span class="keywordtype">char</span> *fmt, ...)
<a name="l00859"></a>00859         __attribute__((format(printf,4,5)));
<a name="l00860"></a>00860 
<a name="l00871"></a>00871 <a class="code" href="group___a_p_r___util.html#g408498ed57031391c19bf360cc61733a">APU_DECLARE</a>(apr_status_t) <a class="code" href="group___a_p_r___util___bucket___brigades.html#g9e1af8c10946264e1bb37a3f56e4bfd8">apr_brigade_vprintf</a>(<a class="code" href="structapr__bucket__brigade.html">apr_bucket_brigade</a> *b, 
<a name="l00872"></a>00872                                               <a class="code" href="group___a_p_r___util___bucket___brigades.html#gcdf6dc9d4c81c64834e5e509281f7f16">apr_brigade_flush</a> flush,
<a name="l00873"></a>00873                                               <span class="keywordtype">void</span> *ctx,
<a name="l00874"></a>00874                                               const <span class="keywordtype">char</span> *fmt, va_list va);
<a name="l00875"></a>00875 
<a name="l00888"></a>00888 <a class="code" href="group___a_p_r___util.html#g408498ed57031391c19bf360cc61733a">APU_DECLARE</a>(<a class="code" href="structapr__bucket.html">apr_bucket</a> *) <a class="code" href="group___a_p_r___util___bucket___brigades.html#g7c4981f7050333a181e440e753c20555">apr_brigade_insert_file</a>(<a class="code" href="structapr__bucket__brigade.html">apr_bucket_brigade</a> *bb,
<a name="l00889"></a>00889                                                   apr_file_t *f,
<a name="l00890"></a>00890                                                   apr_off_t start,
<a name="l00891"></a>00891                                                   apr_off_t len,
<a name="l00892"></a>00892                                                   apr_pool_t *p);
<a name="l00893"></a>00893 
<a name="l00894"></a>00894 
<a name="l00895"></a>00895 
<a name="l00896"></a>00896 <span class="comment">/*  *****  Bucket freelist functions *****  */</span>
<a name="l00910"></a>00910 <a class="code" href="group___a_p_r___util.html#g03b160043a3b3a93e975085361683ff0">APU_DECLARE_NONSTD</a>(<a class="code" href="group___a_p_r___util___bucket___brigades.html#g9a30babfeb6e290db124d8f9b69e49e4">apr_bucket_alloc_t</a> *) <a class="code" href="group___a_p_r___util___bucket___brigades.html#g2d96fa729a17a86dc5221958e8c13c96">apr_bucket_alloc_create</a>(apr_pool_t *p);
<a name="l00911"></a>00911 
<a name="l00920"></a>00920 <a class="code" href="group___a_p_r___util.html#g03b160043a3b3a93e975085361683ff0">APU_DECLARE_NONSTD</a>(<a class="code" href="group___a_p_r___util___bucket___brigades.html#g9a30babfeb6e290db124d8f9b69e49e4">apr_bucket_alloc_t</a> *) <a class="code" href="group___a_p_r___util___bucket___brigades.html#g252642139099350d0b987889d5c0868c">apr_bucket_alloc_create_ex</a>(apr_allocator_t *allocator);
<a name="l00921"></a>00921 
<a name="l00926"></a>00926 <a class="code" href="group___a_p_r___util.html#g03b160043a3b3a93e975085361683ff0">APU_DECLARE_NONSTD</a>(<span class="keywordtype">void</span>) <a class="code" href="group___a_p_r___util___bucket___brigades.html#gf5eb58cc232851c8449ba1d98d049a0a">apr_bucket_alloc_destroy</a>(<a class="code" href="group___a_p_r___util___bucket___brigades.html#g9a30babfeb6e290db124d8f9b69e49e4">apr_bucket_alloc_t</a> *list);
<a name="l00927"></a>00927 
<a name="l00933"></a>00933 <a class="code" href="group___a_p_r___util.html#g03b160043a3b3a93e975085361683ff0">APU_DECLARE_NONSTD</a>(<span class="keywordtype">void</span> *) <a class="code" href="group___a_p_r___util___bucket___brigades.html#ge47c2235a3740432f4a0990fccfe4102">apr_bucket_alloc</a>(apr_size_t size, <a class="code" href="group___a_p_r___util___bucket___brigades.html#g9a30babfeb6e290db124d8f9b69e49e4">apr_bucket_alloc_t</a> *list);
<a name="l00934"></a>00934 
<a name="l00939"></a>00939 <a class="code" href="group___a_p_r___util.html#g03b160043a3b3a93e975085361683ff0">APU_DECLARE_NONSTD</a>(<span class="keywordtype">void</span>) <a class="code" href="group___a_p_r___util___bucket___brigades.html#g951beb3a8249648214e130ab06275a3a">apr_bucket_free</a>(<span class="keywordtype">void</span> *block);
<a name="l00940"></a>00940 
<a name="l00941"></a>00941 
<a name="l00942"></a>00942 <span class="comment">/*  *****  Bucket Functions  *****  */</span>
<a name="l00949"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#gfc0dae1e90a798284ed777a0c9e90ec6">00949</a> <span class="preprocessor">#define apr_bucket_destroy(e) do {                                      \</span>
<a name="l00950"></a>00950 <span class="preprocessor">        (e)-&gt;type-&gt;destroy((e)-&gt;data);                                  \</span>
<a name="l00951"></a>00951 <span class="preprocessor">        (e)-&gt;free(e);                                                   \</span>
<a name="l00952"></a>00952 <span class="preprocessor">    } while (0)</span>
<a name="l00953"></a>00953 <span class="preprocessor"></span>
<a name="l00965"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#g8925c02a7f95e8c1c3986294d4678797">00965</a> <span class="preprocessor">#define apr_bucket_delete(e) do {                                       \</span>
<a name="l00966"></a>00966 <span class="preprocessor">        APR_BUCKET_REMOVE(e);                                           \</span>
<a name="l00967"></a>00967 <span class="preprocessor">        apr_bucket_destroy(e);                                          \</span>
<a name="l00968"></a>00968 <span class="preprocessor">    } while (0)</span>
<a name="l00969"></a>00969 <span class="preprocessor"></span>
<a name="l00977"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#ge44ae938c6c60e148430fdb098dcf28f">00977</a> <span class="preprocessor">#define apr_bucket_read(e,str,len,block) (e)-&gt;type-&gt;read(e, str, len, block)</span>
<a name="l00978"></a>00978 <span class="preprocessor"></span>
<a name="l00985"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#gb00941ffd472982693eb415a964de7af">00985</a> <span class="preprocessor">#define apr_bucket_setaside(e,p) (e)-&gt;type-&gt;setaside(e,p)</span>
<a name="l00986"></a>00986 <span class="preprocessor"></span>
<a name="l00992"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#g5bb8827a8dd1baa6ac32682e13e9d8c2">00992</a> <span class="preprocessor">#define apr_bucket_split(e,point) (e)-&gt;type-&gt;split(e, point)</span>
<a name="l00993"></a>00993 <span class="preprocessor"></span>
<a name="l00999"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#gb33cc08b7f064d06397f312e427279c3">00999</a> <span class="preprocessor">#define apr_bucket_copy(e,c) (e)-&gt;type-&gt;copy(e, c)</span>
<a name="l01000"></a>01000 <span class="preprocessor"></span>
<a name="l01001"></a>01001 <span class="comment">/* Bucket type handling */</span>
<a name="l01002"></a>01002 
<a name="l01012"></a>01012 <a class="code" href="group___a_p_r___util.html#g03b160043a3b3a93e975085361683ff0">APU_DECLARE_NONSTD</a>(apr_status_t) <a class="code" href="group___a_p_r___util___bucket___brigades.html#ge6135b83d9f7bd7e1b60dbc761a3ca5f">apr_bucket_setaside_noop</a>(<a class="code" href="structapr__bucket.html">apr_bucket</a> *data,
<a name="l01013"></a>01013                                                           apr_pool_t *pool);
<a name="l01014"></a>01014 
<a name="l01022"></a>01022 <a class="code" href="group___a_p_r___util.html#g03b160043a3b3a93e975085361683ff0">APU_DECLARE_NONSTD</a>(apr_status_t) <a class="code" href="group___a_p_r___util___bucket___brigades.html#gde52b057161f657a6b298d9c6a78b339">apr_bucket_setaside_notimpl</a>(<a class="code" href="structapr__bucket.html">apr_bucket</a> *data,
<a name="l01023"></a>01023                                                              apr_pool_t *pool);
<a name="l01024"></a>01024 
<a name="l01032"></a>01032 <a class="code" href="group___a_p_r___util.html#g03b160043a3b3a93e975085361683ff0">APU_DECLARE_NONSTD</a>(apr_status_t) <a class="code" href="group___a_p_r___util___bucket___brigades.html#g305766ff39440711da93e72f5b348a3a">apr_bucket_split_notimpl</a>(<a class="code" href="structapr__bucket.html">apr_bucket</a> *data,
<a name="l01033"></a>01033                                                           apr_size_t point);
<a name="l01034"></a>01034 
<a name="l01042"></a>01042 <a class="code" href="group___a_p_r___util.html#g03b160043a3b3a93e975085361683ff0">APU_DECLARE_NONSTD</a>(apr_status_t) <a class="code" href="group___a_p_r___util___bucket___brigades.html#g5fc17c10cee2abf02557669f6f507e89">apr_bucket_copy_notimpl</a>(<a class="code" href="structapr__bucket.html">apr_bucket</a> *e,
<a name="l01043"></a>01043                                                          <a class="code" href="structapr__bucket.html">apr_bucket</a> **c);
<a name="l01044"></a>01044 
<a name="l01054"></a>01054 <a class="code" href="group___a_p_r___util.html#g03b160043a3b3a93e975085361683ff0">APU_DECLARE_NONSTD</a>(<span class="keywordtype">void</span>) <a class="code" href="group___a_p_r___util___bucket___brigades.html#g09221bea9541ca2340a4e8b5e1e7ac56">apr_bucket_destroy_noop</a>(<span class="keywordtype">void</span> *data);
<a name="l01055"></a>01055 
<a name="l01062"></a>01062 <span class="comment">/* There is no apr_bucket_read_notimpl, because it is a required function</span>
<a name="l01063"></a>01063 <span class="comment"> */</span>
<a name="l01064"></a>01064 
<a name="l01065"></a>01065 
<a name="l01066"></a>01066 <span class="comment">/* All of the bucket types implemented by the core */</span>
<a name="l01071"></a>01071 <a class="code" href="group___a_p_r___util.html#g7009cc3d445c4b2f93c80990230d7b3f">APU_DECLARE_DATA</a> extern const <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#gecc113cfcc7751dfe70876437a2f51d7">apr_bucket_type_flush</a>;
<a name="l01077"></a>01077 <a class="code" href="group___a_p_r___util.html#g7009cc3d445c4b2f93c80990230d7b3f">APU_DECLARE_DATA</a> extern const <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#g829cac9b4843b85a902ddd64dffbfb12">apr_bucket_type_eos</a>;
<a name="l01081"></a>01081 <a class="code" href="group___a_p_r___util.html#g7009cc3d445c4b2f93c80990230d7b3f">APU_DECLARE_DATA</a> extern const <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#g5f17aa7e616179411a06475ec09626e9">apr_bucket_type_file</a>;
<a name="l01086"></a>01086 <a class="code" href="group___a_p_r___util.html#g7009cc3d445c4b2f93c80990230d7b3f">APU_DECLARE_DATA</a> extern const <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#g2c5608267ed7b860657f5a1c89c2f40d">apr_bucket_type_heap</a>;
<a name="l01087"></a>01087 <span class="preprocessor">#if APR_HAS_MMAP</span>
<a name="l01088"></a>01088 <span class="preprocessor"></span>
<a name="l01091"></a>01091 <a class="code" href="group___a_p_r___util.html#g7009cc3d445c4b2f93c80990230d7b3f">APU_DECLARE_DATA</a> <span class="keyword">extern</span> <span class="keyword">const</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#g63f9ce8e4d6e796921aad14a218a3b23">apr_bucket_type_mmap</a>;
<a name="l01092"></a>01092 <span class="preprocessor">#endif</span>
<a name="l01093"></a>01093 <span class="preprocessor"></span>
<a name="l01098"></a>01098 <a class="code" href="group___a_p_r___util.html#g7009cc3d445c4b2f93c80990230d7b3f">APU_DECLARE_DATA</a> <span class="keyword">extern</span> <span class="keyword">const</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#g87bace819fdbf07c12497a8289b3567b">apr_bucket_type_pool</a>;
<a name="l01102"></a>01102 <a class="code" href="group___a_p_r___util.html#g7009cc3d445c4b2f93c80990230d7b3f">APU_DECLARE_DATA</a> <span class="keyword">extern</span> <span class="keyword">const</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#g334a875abb2908364a40abbfa80c401f">apr_bucket_type_pipe</a>;
<a name="l01108"></a>01108 <a class="code" href="group___a_p_r___util.html#g7009cc3d445c4b2f93c80990230d7b3f">APU_DECLARE_DATA</a> <span class="keyword">extern</span> <span class="keyword">const</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#g391ac24b2c85969e8efa504588b364bb">apr_bucket_type_immortal</a>;
<a name="l01114"></a>01114 <a class="code" href="group___a_p_r___util.html#g7009cc3d445c4b2f93c80990230d7b3f">APU_DECLARE_DATA</a> <span class="keyword">extern</span> <span class="keyword">const</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#g1692ced61c1966e67adc05ec2a69ce9b">apr_bucket_type_transient</a>;
<a name="l01118"></a>01118 <a class="code" href="group___a_p_r___util.html#g7009cc3d445c4b2f93c80990230d7b3f">APU_DECLARE_DATA</a> <span class="keyword">extern</span> <span class="keyword">const</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#ga6d9978cc10895bdf0a4686728822a84">apr_bucket_type_socket</a>;
<a name="l01119"></a>01119 
<a name="l01120"></a>01120 
<a name="l01121"></a>01121 <span class="comment">/*  *****  Simple buckets  *****  */</span>
<a name="l01122"></a>01122 
<a name="l01134"></a>01134 <a class="code" href="group___a_p_r___util.html#g03b160043a3b3a93e975085361683ff0">APU_DECLARE_NONSTD</a>(apr_status_t) <a class="code" href="group___a_p_r___util___bucket___brigades.html#g9fd8c7d9e42dd04b8f153072655e875c">apr_bucket_simple_split</a>(<a class="code" href="structapr__bucket.html">apr_bucket</a> *b,
<a name="l01135"></a>01135                                                          apr_size_t point);
<a name="l01136"></a>01136 
<a name="l01147"></a>01147 <a class="code" href="group___a_p_r___util.html#g03b160043a3b3a93e975085361683ff0">APU_DECLARE_NONSTD</a>(apr_status_t) <a class="code" href="group___a_p_r___util___bucket___brigades.html#g123c95e832734f92e6f1139b6a68cfa6">apr_bucket_simple_copy</a>(<a class="code" href="structapr__bucket.html">apr_bucket</a> *a,
<a name="l01148"></a>01148                                                         <a class="code" href="structapr__bucket.html">apr_bucket</a> **b);
<a name="l01149"></a>01149 
<a name="l01150"></a>01150 
<a name="l01151"></a>01151 <span class="comment">/*  *****  Shared, reference-counted buckets  *****  */</span>
<a name="l01152"></a>01152 
<a name="l01167"></a>01167 <a class="code" href="group___a_p_r___util.html#g408498ed57031391c19bf360cc61733a">APU_DECLARE</a>(<a class="code" href="structapr__bucket.html">apr_bucket</a> *) <a class="code" href="group___a_p_r___util___bucket___brigades.html#g562251ac5776e88f7384158b85e74be8">apr_bucket_shared_make</a>(<a class="code" href="structapr__bucket.html">apr_bucket</a> *b, <span class="keywordtype">void</span> *data,
<a name="l01168"></a>01168                                                  apr_off_t start, 
<a name="l01169"></a>01169                                                  apr_size_t length);
<a name="l01170"></a>01170 
<a name="l01179"></a>01179 <a class="code" href="group___a_p_r___util.html#g408498ed57031391c19bf360cc61733a">APU_DECLARE</a>(<span class="keywordtype">int</span>) <a class="code" href="group___a_p_r___util___bucket___brigades.html#g43c7dc7e3eb961a91bbc0b69a47e503c">apr_bucket_shared_destroy</a>(<span class="keywordtype">void</span> *data);
<a name="l01180"></a>01180 
<a name="l01192"></a>01192 <a class="code" href="group___a_p_r___util.html#g03b160043a3b3a93e975085361683ff0">APU_DECLARE_NONSTD</a>(apr_status_t) <a class="code" href="group___a_p_r___util___bucket___brigades.html#g871e54ba20487a2085a73a673ffa4110">apr_bucket_shared_split</a>(<a class="code" href="structapr__bucket.html">apr_bucket</a> *b,
<a name="l01193"></a>01193                                                          apr_size_t point);
<a name="l01194"></a>01194 
<a name="l01204"></a>01204 <a class="code" href="group___a_p_r___util.html#g03b160043a3b3a93e975085361683ff0">APU_DECLARE_NONSTD</a>(apr_status_t) <a class="code" href="group___a_p_r___util___bucket___brigades.html#g2e9a035d340ef6b4279b178eff614670">apr_bucket_shared_copy</a>(<a class="code" href="structapr__bucket.html">apr_bucket</a> *a,
<a name="l01205"></a>01205                                                         <a class="code" href="structapr__bucket.html">apr_bucket</a> **b);
<a name="l01206"></a>01206 
<a name="l01207"></a>01207 
<a name="l01208"></a>01208 <span class="comment">/*  *****  Functions to Create Buckets of varying types  *****  */</span>
<a name="l01209"></a>01209 <span class="comment">/*</span>
<a name="l01210"></a>01210 <span class="comment"> * Each bucket type foo has two initialization functions:</span>
<a name="l01211"></a>01211 <span class="comment"> * apr_bucket_foo_make which sets up some already-allocated memory as a</span>
<a name="l01212"></a>01212 <span class="comment"> * bucket of type foo; and apr_bucket_foo_create which allocates memory</span>
<a name="l01213"></a>01213 <span class="comment"> * for the bucket, calls apr_bucket_make_foo, and initializes the</span>
<a name="l01214"></a>01214 <span class="comment"> * bucket's list pointers. The apr_bucket_foo_make functions are used</span>
<a name="l01215"></a>01215 <span class="comment"> * inside the bucket code to change the type of buckets in place;</span>
<a name="l01216"></a>01216 <span class="comment"> * other code should call apr_bucket_foo_create. All the initialization</span>
<a name="l01217"></a>01217 <span class="comment"> * functions change nothing if they fail.</span>
<a name="l01218"></a>01218 <span class="comment"> */</span>
<a name="l01219"></a>01219 
<a name="l01226"></a>01226 <a class="code" href="group___a_p_r___util.html#g408498ed57031391c19bf360cc61733a">APU_DECLARE</a>(<a class="code" href="structapr__bucket.html">apr_bucket</a> *) <a class="code" href="group___a_p_r___util___bucket___brigades.html#gac308b459ecdab87e94b12adad1b8760">apr_bucket_eos_create</a>(<a class="code" href="group___a_p_r___util___bucket___brigades.html#g9a30babfeb6e290db124d8f9b69e49e4">apr_bucket_alloc_t</a> *list);
<a name="l01227"></a>01227 
<a name="l01235"></a>01235 <a class="code" href="group___a_p_r___util.html#g408498ed57031391c19bf360cc61733a">APU_DECLARE</a>(<a class="code" href="structapr__bucket.html">apr_bucket</a> *) <a class="code" href="group___a_p_r___util___bucket___brigades.html#g06312ba339cb0ec1844b698d30e754c4">apr_bucket_eos_make</a>(<a class="code" href="structapr__bucket.html">apr_bucket</a> *b);
<a name="l01236"></a>01236 
<a name="l01244"></a>01244 <a class="code" href="group___a_p_r___util.html#g408498ed57031391c19bf360cc61733a">APU_DECLARE</a>(<a class="code" href="structapr__bucket.html">apr_bucket</a> *) <a class="code" href="group___a_p_r___util___bucket___brigades.html#g48347f3f7d5738cdb61fe35c25c09666">apr_bucket_flush_create</a>(<a class="code" href="group___a_p_r___util___bucket___brigades.html#g9a30babfeb6e290db124d8f9b69e49e4">apr_bucket_alloc_t</a> *list);
<a name="l01245"></a>01245 
<a name="l01253"></a>01253 <a class="code" href="group___a_p_r___util.html#g408498ed57031391c19bf360cc61733a">APU_DECLARE</a>(<a class="code" href="structapr__bucket.html">apr_bucket</a> *) <a class="code" href="group___a_p_r___util___bucket___brigades.html#gee543b95249a320a27ae9bb03e2c4f23">apr_bucket_flush_make</a>(<a class="code" href="structapr__bucket.html">apr_bucket</a> *b);
<a name="l01254"></a>01254 
<a name="l01262"></a>01262 <a class="code" href="group___a_p_r___util.html#g408498ed57031391c19bf360cc61733a">APU_DECLARE</a>(<a class="code" href="structapr__bucket.html">apr_bucket</a> *) <a class="code" href="group___a_p_r___util___bucket___brigades.html#gd81543da24b144c0e100dd1e6d843adb">apr_bucket_immortal_create</a>(const <span class="keywordtype">char</span> *buf, 
<a name="l01263"></a>01263                                                      apr_size_t nbyte,
<a name="l01264"></a>01264                                                      <a class="code" href="group___a_p_r___util___bucket___brigades.html#g9a30babfeb6e290db124d8f9b69e49e4">apr_bucket_alloc_t</a> *list);
<a name="l01265"></a>01265 
<a name="l01273"></a>01273 <a class="code" href="group___a_p_r___util.html#g408498ed57031391c19bf360cc61733a">APU_DECLARE</a>(<a class="code" href="structapr__bucket.html">apr_bucket</a> *) <a class="code" href="group___a_p_r___util___bucket___brigades.html#g33b21eb55cad9d28b5cdd40ad4181774">apr_bucket_immortal_make</a>(<a class="code" href="structapr__bucket.html">apr_bucket</a> *b, 
<a name="l01274"></a>01274                                                    const <span class="keywordtype">char</span> *buf, 
<a name="l01275"></a>01275                                                    apr_size_t nbyte);
<a name="l01276"></a>01276 
<a name="l01284"></a>01284 <a class="code" href="group___a_p_r___util.html#g408498ed57031391c19bf360cc61733a">APU_DECLARE</a>(<a class="code" href="structapr__bucket.html">apr_bucket</a> *) <a class="code" href="group___a_p_r___util___bucket___brigades.html#g554f2d87c718f30a9259d52c6f81a405">apr_bucket_transient_create</a>(const <span class="keywordtype">char</span> *buf, 
<a name="l01285"></a>01285                                                       apr_size_t nbyte,
<a name="l01286"></a>01286                                                       <a class="code" href="group___a_p_r___util___bucket___brigades.html#g9a30babfeb6e290db124d8f9b69e49e4">apr_bucket_alloc_t</a> *list);
<a name="l01287"></a>01287 
<a name="l01295"></a>01295 <a class="code" href="group___a_p_r___util.html#g408498ed57031391c19bf360cc61733a">APU_DECLARE</a>(<a class="code" href="structapr__bucket.html">apr_bucket</a> *) <a class="code" href="group___a_p_r___util___bucket___brigades.html#g7e1f9a0ae64781ff4430d08c25e6e831">apr_bucket_transient_make</a>(<a class="code" href="structapr__bucket.html">apr_bucket</a> *b, 
<a name="l01296"></a>01296                                                     const <span class="keywordtype">char</span> *buf,
<a name="l01297"></a>01297                                                     apr_size_t nbyte);
<a name="l01298"></a>01298 
<a name="l01313"></a>01313 <a class="code" href="group___a_p_r___util.html#g408498ed57031391c19bf360cc61733a">APU_DECLARE</a>(<a class="code" href="structapr__bucket.html">apr_bucket</a> *) <a class="code" href="group___a_p_r___util___bucket___brigades.html#gdde6843cfe311a60d290adc1d6635cac">apr_bucket_heap_create</a>(const <span class="keywordtype">char</span> *buf, 
<a name="l01314"></a>01314                                                  apr_size_t nbyte,
<a name="l01315"></a>01315                                                  <span class="keywordtype">void</span> (*free_func)(<span class="keywordtype">void</span> *data),
<a name="l01316"></a>01316                                                  <a class="code" href="group___a_p_r___util___bucket___brigades.html#g9a30babfeb6e290db124d8f9b69e49e4">apr_bucket_alloc_t</a> *list);
<a name="l01326"></a>01326 <a class="code" href="group___a_p_r___util.html#g408498ed57031391c19bf360cc61733a">APU_DECLARE</a>(<a class="code" href="structapr__bucket.html">apr_bucket</a> *) <a class="code" href="group___a_p_r___util___bucket___brigades.html#g71de285204d21507420068f05b12a541">apr_bucket_heap_make</a>(<a class="code" href="structapr__bucket.html">apr_bucket</a> *b, const <span class="keywordtype">char</span> *buf,
<a name="l01327"></a>01327                                                apr_size_t nbyte,
<a name="l01328"></a>01328                                                <span class="keywordtype">void</span> (*free_func)(<span class="keywordtype">void</span> *data));
<a name="l01329"></a>01329 
<a name="l01339"></a>01339 <a class="code" href="group___a_p_r___util.html#g408498ed57031391c19bf360cc61733a">APU_DECLARE</a>(<a class="code" href="structapr__bucket.html">apr_bucket</a> *) <a class="code" href="group___a_p_r___util___bucket___brigades.html#g154ea763ee9de4ccb8692b9e3b60ebb2">apr_bucket_pool_create</a>(const <span class="keywordtype">char</span> *buf, 
<a name="l01340"></a>01340                                                  apr_size_t length,
<a name="l01341"></a>01341                                                  apr_pool_t *pool,
<a name="l01342"></a>01342                                                  <a class="code" href="group___a_p_r___util___bucket___brigades.html#g9a30babfeb6e290db124d8f9b69e49e4">apr_bucket_alloc_t</a> *list);
<a name="l01343"></a>01343 
<a name="l01352"></a>01352 <a class="code" href="group___a_p_r___util.html#g408498ed57031391c19bf360cc61733a">APU_DECLARE</a>(<a class="code" href="structapr__bucket.html">apr_bucket</a> *) <a class="code" href="group___a_p_r___util___bucket___brigades.html#g01197c5b2cda6382354628cecdeae145">apr_bucket_pool_make</a>(<a class="code" href="structapr__bucket.html">apr_bucket</a> *b, const <span class="keywordtype">char</span> *buf,
<a name="l01353"></a>01353                                                apr_size_t length, 
<a name="l01354"></a>01354                                                apr_pool_t *pool);
<a name="l01355"></a>01355 
<a name="l01356"></a>01356 <span class="preprocessor">#if APR_HAS_MMAP</span>
<a name="l01357"></a>01357 <span class="preprocessor"></span>
<a name="l01366"></a>01366 <a class="code" href="group___a_p_r___util.html#g408498ed57031391c19bf360cc61733a">APU_DECLARE</a>(<a class="code" href="structapr__bucket.html">apr_bucket</a> *) <a class="code" href="group___a_p_r___util___bucket___brigades.html#gee338c7d218ce1fbbf8c1aefedcc0632">apr_bucket_mmap_create</a>(apr_mmap_t *mm, 
<a name="l01367"></a>01367                                                  apr_off_t start,
<a name="l01368"></a>01368                                                  apr_size_t length,
<a name="l01369"></a>01369                                                  <a class="code" href="group___a_p_r___util___bucket___brigades.html#g9a30babfeb6e290db124d8f9b69e49e4">apr_bucket_alloc_t</a> *list);
<a name="l01370"></a>01370 
<a name="l01380"></a>01380 <a class="code" href="group___a_p_r___util.html#g408498ed57031391c19bf360cc61733a">APU_DECLARE</a>(<a class="code" href="structapr__bucket.html">apr_bucket</a> *) <a class="code" href="group___a_p_r___util___bucket___brigades.html#gb561ac92d1811e5a2589783536e64a1a">apr_bucket_mmap_make</a>(<a class="code" href="structapr__bucket.html">apr_bucket</a> *b, apr_mmap_t *mm,
<a name="l01381"></a>01381                                                apr_off_t start, 
<a name="l01382"></a>01382                                                apr_size_t length);
<a name="l01383"></a>01383 <span class="preprocessor">#endif</span>
<a name="l01384"></a>01384 <span class="preprocessor"></span>
<a name="l01391"></a>01391 <a class="code" href="group___a_p_r___util.html#g408498ed57031391c19bf360cc61733a">APU_DECLARE</a>(<a class="code" href="structapr__bucket.html">apr_bucket</a> *) <a class="code" href="group___a_p_r___util___bucket___brigades.html#gcd9f08b40eb2204cd93b42e58338aeb2">apr_bucket_socket_create</a>(apr_socket_t *thissock,
<a name="l01392"></a>01392                                                    <a class="code" href="group___a_p_r___util___bucket___brigades.html#g9a30babfeb6e290db124d8f9b69e49e4">apr_bucket_alloc_t</a> *list);
<a name="l01399"></a>01399 <a class="code" href="group___a_p_r___util.html#g408498ed57031391c19bf360cc61733a">APU_DECLARE</a>(<a class="code" href="structapr__bucket.html">apr_bucket</a> *) <a class="code" href="group___a_p_r___util___bucket___brigades.html#g2fffd4c4701ad55c6df27cdee0c47200">apr_bucket_socket_make</a>(<a class="code" href="structapr__bucket.html">apr_bucket</a> *b, 
<a name="l01400"></a>01400                                                  apr_socket_t *thissock);
<a name="l01401"></a>01401 
<a name="l01408"></a>01408 <a class="code" href="group___a_p_r___util.html#g408498ed57031391c19bf360cc61733a">APU_DECLARE</a>(<a class="code" href="structapr__bucket.html">apr_bucket</a> *) <a class="code" href="group___a_p_r___util___bucket___brigades.html#gb9ea07d5f9246e06c1bb3e76ee90cd71">apr_bucket_pipe_create</a>(apr_file_t *thispipe,
<a name="l01409"></a>01409                                                  <a class="code" href="group___a_p_r___util___bucket___brigades.html#g9a30babfeb6e290db124d8f9b69e49e4">apr_bucket_alloc_t</a> *list);
<a name="l01410"></a>01410 
<a name="l01417"></a>01417 <a class="code" href="group___a_p_r___util.html#g408498ed57031391c19bf360cc61733a">APU_DECLARE</a>(<a class="code" href="structapr__bucket.html">apr_bucket</a> *) <a class="code" href="group___a_p_r___util___bucket___brigades.html#ge7b4daa1318226beda4bf0eead2f5582">apr_bucket_pipe_make</a>(<a class="code" href="structapr__bucket.html">apr_bucket</a> *b, 
<a name="l01418"></a>01418                                                apr_file_t *thispipe);
<a name="l01419"></a>01419 
<a name="l01430"></a>01430 <a class="code" href="group___a_p_r___util.html#g408498ed57031391c19bf360cc61733a">APU_DECLARE</a>(<a class="code" href="structapr__bucket.html">apr_bucket</a> *) <a class="code" href="group___a_p_r___util___bucket___brigades.html#g421f96e8e9387a9c27fe010ebdee0202">apr_bucket_file_create</a>(apr_file_t *fd,
<a name="l01431"></a>01431                                                  apr_off_t offset,
<a name="l01432"></a>01432                                                  apr_size_t len, 
<a name="l01433"></a>01433                                                  apr_pool_t *p,
<a name="l01434"></a>01434                                                  <a class="code" href="group___a_p_r___util___bucket___brigades.html#g9a30babfeb6e290db124d8f9b69e49e4">apr_bucket_alloc_t</a> *list);
<a name="l01435"></a>01435 
<a name="l01446"></a>01446 <a class="code" href="group___a_p_r___util.html#g408498ed57031391c19bf360cc61733a">APU_DECLARE</a>(<a class="code" href="structapr__bucket.html">apr_bucket</a> *) <a class="code" href="group___a_p_r___util___bucket___brigades.html#gcb716dea400092f2f8c84a3f0f6d3a10">apr_bucket_file_make</a>(<a class="code" href="structapr__bucket.html">apr_bucket</a> *b, apr_file_t *fd,
<a name="l01447"></a>01447                                                apr_off_t offset,
<a name="l01448"></a>01448                                                apr_size_t len, apr_pool_t *p);
<a name="l01449"></a>01449 
<a name="l01456"></a>01456 <a class="code" href="group___a_p_r___util.html#g408498ed57031391c19bf360cc61733a">APU_DECLARE</a>(apr_status_t) <a class="code" href="group___a_p_r___util___bucket___brigades.html#gb18ee46f66634c35ad79b6a74559cbb8">apr_bucket_file_enable_mmap</a>(<a class="code" href="structapr__bucket.html">apr_bucket</a> *b,
<a name="l01457"></a>01457                                                       <span class="keywordtype">int</span> enabled);
<a name="l01458"></a>01458 
<a name="l01460"></a>01460 <span class="preprocessor">#ifdef __cplusplus</span>
<a name="l01461"></a>01461 <span class="preprocessor"></span>}
<a name="l01462"></a>01462 <span class="preprocessor">#endif</span>
<a name="l01463"></a>01463 <span class="preprocessor"></span>
<a name="l01464"></a>01464 <span class="preprocessor">#endif </span><span class="comment">/* !APR_BUCKETS_H */</span>
</pre></div><hr size="1"><address style="text-align: right;"><small>Generated on Thu Jan 24 02:22:55 2008 for Apache Portable Runtime Utility Library by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.4 </small></address>
</body>
</html>