Sophie

Sophie

distrib > Fedora > 14 > x86_64 > by-pkgid > decccc6a629f077e549a3762e84f29fd > files > 44

ghc-blaze-builder-devel-0.2.1.4-1.fc14.i686.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!--Rendered using the Haskell Html Library v0.2-->
<HTML
><HEAD
><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8"
><TITLE
>Blaze.ByteString.Builder.Internal.Buffer</TITLE
><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"
><SCRIPT SRC="haddock-util.js" TYPE="text/javascript"
></SCRIPT
><SCRIPT TYPE="text/javascript"
>window.onload = function () {setSynopsis("mini_Blaze-ByteString-Builder-Internal-Buffer.html")};</SCRIPT
></HEAD
><BODY
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="topbar"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD
><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
></TD
><TD CLASS="title"
>blaze-builder-0.2.1.4: Efficient buffered output.</TD
><TD CLASS="topbut"
><A HREF="src/Blaze-ByteString-Builder-Internal-Buffer.html"
>Source code</A
></TD
><TD CLASS="topbut"
><A HREF="index.html"
>Contents</A
></TD
><TD CLASS="topbut"
><A HREF="doc-index.html"
>Index</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="modulebar"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD
><FONT SIZE="6"
>Blaze.ByteString.Builder.Internal.Buffer</FONT
></TD
><TD ALIGN="right"
><TABLE CLASS="narrow" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="infohead"
>Portability</TD
><TD CLASS="infoval"
>tested on GHC only</TD
></TR
><TR
><TD CLASS="infohead"
>Stability</TD
><TD CLASS="infoval"
>experimental</TD
></TR
><TR
><TD CLASS="infohead"
>Maintainer</TD
><TD CLASS="infoval"
>Simon Meier &lt;iridcode@gmail.com&gt;</TD
></TR
></TABLE
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="section4"
><B
>Contents</B
></TD
></TR
><TR
><TD
><DL
><DT
><A HREF="#1"
>Buffers
</A
></DT
><DD
><DL
><DT
><A HREF="#2"
>Status information
</A
></DT
><DT
><A HREF="#3"
>Creation and modification
</A
></DT
><DT
><A HREF="#4"
>Conversion to bytestings
</A
></DT
></DL
></DD
><DT
><A HREF="#5"
>Buffer allocation strategies
</A
></DT
><DT
><A HREF="#6"
>Executing puts respect to some monad
</A
></DT
></DL
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="section1"
>Description</TD
></TR
><TR
><TD CLASS="doc"
>Execution of the <TT
><A HREF="Blaze-ByteString-Builder-Internal-Types.html#t%3APut"
>Put</A
></TT
> monad and hence also <TT
><A HREF="Blaze-ByteString-Builder-Internal-Types.html#t%3ABuilder"
>Builder</A
></TT
>s with respect to
 buffers.
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="section1"
>Synopsis</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>data</SPAN
>  <A HREF="#t%3ABuffer"
>Buffer</A
> </TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AfreeSize"
>freeSize</A
> :: <A HREF="Blaze-ByteString-Builder-Internal-Buffer.html#t%3ABuffer"
>Buffer</A
> -&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Int.html#t%3AInt"
>Int</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AsliceSize"
>sliceSize</A
> :: <A HREF="Blaze-ByteString-Builder-Internal-Buffer.html#t%3ABuffer"
>Buffer</A
> -&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Int.html#t%3AInt"
>Int</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AbufferSize"
>bufferSize</A
> :: <A HREF="Blaze-ByteString-Builder-Internal-Buffer.html#t%3ABuffer"
>Buffer</A
> -&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Int.html#t%3AInt"
>Int</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AallocBuffer"
>allocBuffer</A
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Int.html#t%3AInt"
>Int</A
> -&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/System-IO.html#t%3AIO"
>IO</A
> <A HREF="Blaze-ByteString-Builder-Internal-Buffer.html#t%3ABuffer"
>Buffer</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AreuseBuffer"
>reuseBuffer</A
> :: <A HREF="Blaze-ByteString-Builder-Internal-Buffer.html#t%3ABuffer"
>Buffer</A
> -&gt; <A HREF="Blaze-ByteString-Builder-Internal-Buffer.html#t%3ABuffer"
>Buffer</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AnextSlice"
>nextSlice</A
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Int.html#t%3AInt"
>Int</A
> -&gt; <A HREF="Blaze-ByteString-Builder-Internal-Buffer.html#t%3ABuffer"
>Buffer</A
> -&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Maybe.html#t%3AMaybe"
>Maybe</A
> <A HREF="Blaze-ByteString-Builder-Internal-Buffer.html#t%3ABuffer"
>Buffer</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AupdateEndOfSlice"
>updateEndOfSlice</A
> :: <A HREF="Blaze-ByteString-Builder-Internal-Buffer.html#t%3ABuffer"
>Buffer</A
> -&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Foreign-Ptr.html#t%3APtr"
>Ptr</A
> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Word.html#t%3AWord8"
>Word8</A
> -&gt; <A HREF="Blaze-ByteString-Builder-Internal-Buffer.html#t%3ABuffer"
>Buffer</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AexecBuildStep"
>execBuildStep</A
> ::  <A HREF="Blaze-ByteString-Builder-Internal-Types.html#t%3ABuildStep"
>BuildStep</A
> a -&gt; <A HREF="Blaze-ByteString-Builder-Internal-Buffer.html#t%3ABuffer"
>Buffer</A
> -&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/System-IO.html#t%3AIO"
>IO</A
> (<A HREF="Blaze-ByteString-Builder-Internal-Types.html#t%3ABuildSignal"
>BuildSignal</A
> a)</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AunsafeFreezeBuffer"
>unsafeFreezeBuffer</A
> :: <A HREF="Blaze-ByteString-Builder-Internal-Buffer.html#t%3ABuffer"
>Buffer</A
> -&gt; <A HREF="/usr/share/doc/ghc/html/libraries/bytestring-0.9.1.7/Data-ByteString.html#t%3AByteString"
>ByteString</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AunsafeFreezeNonEmptyBuffer"
>unsafeFreezeNonEmptyBuffer</A
> :: <A HREF="Blaze-ByteString-Builder-Internal-Buffer.html#t%3ABuffer"
>Buffer</A
> -&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Maybe.html#t%3AMaybe"
>Maybe</A
> <A HREF="/usr/share/doc/ghc/html/libraries/bytestring-0.9.1.7/Data-ByteString.html#t%3AByteString"
>ByteString</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>type</SPAN
> <A HREF="#t%3ABufferAllocStrategy"
>BufferAllocStrategy</A
> = (<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/System-IO.html#t%3AIO"
>IO</A
> <A HREF="Blaze-ByteString-Builder-Internal-Buffer.html#t%3ABuffer"
>Buffer</A
>, <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Int.html#t%3AInt"
>Int</A
> -&gt; <A HREF="Blaze-ByteString-Builder-Internal-Buffer.html#t%3ABuffer"
>Buffer</A
> -&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/System-IO.html#t%3AIO"
>IO</A
> (<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/System-IO.html#t%3AIO"
>IO</A
> <A HREF="Blaze-ByteString-Builder-Internal-Buffer.html#t%3ABuffer"
>Buffer</A
>))</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AallNewBuffersStrategy"
>allNewBuffersStrategy</A
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Int.html#t%3AInt"
>Int</A
> -&gt; <A HREF="Blaze-ByteString-Builder-Internal-Buffer.html#t%3ABufferAllocStrategy"
>BufferAllocStrategy</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AreuseBufferStrategy"
>reuseBufferStrategy</A
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/System-IO.html#t%3AIO"
>IO</A
> <A HREF="Blaze-ByteString-Builder-Internal-Buffer.html#t%3ABuffer"
>Buffer</A
> -&gt; <A HREF="Blaze-ByteString-Builder-Internal-Buffer.html#t%3ABufferAllocStrategy"
>BufferAllocStrategy</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3ArunPut"
>runPut</A
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Monad.html#t%3AMonad"
>Monad</A
> m =&gt; (<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/System-IO.html#t%3AIO"
>IO</A
> (<A HREF="Blaze-ByteString-Builder-Internal-Types.html#t%3ABuildSignal"
>BuildSignal</A
> a) -&gt; m (<A HREF="Blaze-ByteString-Builder-Internal-Types.html#t%3ABuildSignal"
>BuildSignal</A
> a)) -&gt; (<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Int.html#t%3AInt"
>Int</A
> -&gt; <A HREF="Blaze-ByteString-Builder-Internal-Buffer.html#t%3ABuffer"
>Buffer</A
> -&gt; m <A HREF="Blaze-ByteString-Builder-Internal-Buffer.html#t%3ABuffer"
>Buffer</A
>) -&gt; (<A HREF="/usr/share/doc/ghc/html/libraries/bytestring-0.9.1.7/Data-ByteString.html#t%3AByteString"
>ByteString</A
> -&gt; m <A HREF="/usr/share/doc/ghc/html/libraries/ghc-prim-0.2.0.0/GHC-Unit.html#t%3A%28%29"
>()</A
>) -&gt; <A HREF="Blaze-ByteString-Builder-Internal-Types.html#t%3APut"
>Put</A
> a -&gt; <A HREF="Blaze-ByteString-Builder-Internal-Buffer.html#t%3ABuffer"
>Buffer</A
> -&gt; m (a, <A HREF="Blaze-ByteString-Builder-Internal-Buffer.html#t%3ABuffer"
>Buffer</A
>)</TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="section1"
><A NAME="1"
><A NAME="1"
>Buffers
</A
></A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><SPAN CLASS="keyword"
>data</SPAN
>  <A NAME="t:Buffer"
><A NAME="t%3ABuffer"
></A
></A
><B
>Buffer</B
>  </TD
><TD CLASS="declbut"
><A HREF="src/Blaze-ByteString-Builder-Internal-Buffer.html#Buffer"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="ndoc"
>A buffer <TT
>Buffer fpbuf p0 op ope</TT
> describes a buffer with the underlying
 byte array <TT
>fpbuf..ope</TT
>, the currently written slice <TT
>p0..op</TT
> and the free
 space <TT
>op..ope</TT
>.
</TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="section2"
><A NAME="2"
><A NAME="2"
>Status information
</A
></A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:freeSize"
><A NAME="v%3AfreeSize"
></A
></A
><B
>freeSize</B
> :: <A HREF="Blaze-ByteString-Builder-Internal-Buffer.html#t%3ABuffer"
>Buffer</A
> -&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Int.html#t%3AInt"
>Int</A
></TD
><TD CLASS="declbut"
><A HREF="src/Blaze-ByteString-Builder-Internal-Buffer.html#freeSize"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="doc"
>The size of the free space of the buffer.
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:sliceSize"
><A NAME="v%3AsliceSize"
></A
></A
><B
>sliceSize</B
> :: <A HREF="Blaze-ByteString-Builder-Internal-Buffer.html#t%3ABuffer"
>Buffer</A
> -&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Int.html#t%3AInt"
>Int</A
></TD
><TD CLASS="declbut"
><A HREF="src/Blaze-ByteString-Builder-Internal-Buffer.html#sliceSize"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="doc"
>The size of the written slice in the buffer.
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:bufferSize"
><A NAME="v%3AbufferSize"
></A
></A
><B
>bufferSize</B
> :: <A HREF="Blaze-ByteString-Builder-Internal-Buffer.html#t%3ABuffer"
>Buffer</A
> -&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Int.html#t%3AInt"
>Int</A
></TD
><TD CLASS="declbut"
><A HREF="src/Blaze-ByteString-Builder-Internal-Buffer.html#bufferSize"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="doc"
>The size of the whole byte array underlying the buffer.
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="section2"
><A NAME="3"
><A NAME="3"
>Creation and modification
</A
></A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:allocBuffer"
><A NAME="v%3AallocBuffer"
></A
></A
><B
>allocBuffer</B
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Int.html#t%3AInt"
>Int</A
> -&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/System-IO.html#t%3AIO"
>IO</A
> <A HREF="Blaze-ByteString-Builder-Internal-Buffer.html#t%3ABuffer"
>Buffer</A
></TD
><TD CLASS="declbut"
><A HREF="src/Blaze-ByteString-Builder-Internal-Buffer.html#allocBuffer"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="doc"
><TT
>allocBuffer size</TT
> allocates a new buffer of size <TT
>size</TT
>.
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:reuseBuffer"
><A NAME="v%3AreuseBuffer"
></A
></A
><B
>reuseBuffer</B
> :: <A HREF="Blaze-ByteString-Builder-Internal-Buffer.html#t%3ABuffer"
>Buffer</A
> -&gt; <A HREF="Blaze-ByteString-Builder-Internal-Buffer.html#t%3ABuffer"
>Buffer</A
></TD
><TD CLASS="declbut"
><A HREF="src/Blaze-ByteString-Builder-Internal-Buffer.html#reuseBuffer"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="doc"
>Resets the beginning of the next slice and the next free byte such that
 the whole buffer can be filled again.
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:nextSlice"
><A NAME="v%3AnextSlice"
></A
></A
><B
>nextSlice</B
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Int.html#t%3AInt"
>Int</A
> -&gt; <A HREF="Blaze-ByteString-Builder-Internal-Buffer.html#t%3ABuffer"
>Buffer</A
> -&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Maybe.html#t%3AMaybe"
>Maybe</A
> <A HREF="Blaze-ByteString-Builder-Internal-Buffer.html#t%3ABuffer"
>Buffer</A
></TD
><TD CLASS="declbut"
><A HREF="src/Blaze-ByteString-Builder-Internal-Buffer.html#nextSlice"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="doc"
>Move the beginning of the slice to the next free byte such that the
 remaining free space of the buffer can be filled further. This operation
 is safe and can be used to fill the remaining part of the buffer after a
 direct insertion of a bytestring or a flush.
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:updateEndOfSlice"
><A NAME="v%3AupdateEndOfSlice"
></A
></A
><B
>updateEndOfSlice</B
> :: <A HREF="Blaze-ByteString-Builder-Internal-Buffer.html#t%3ABuffer"
>Buffer</A
> -&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Foreign-Ptr.html#t%3APtr"
>Ptr</A
> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Word.html#t%3AWord8"
>Word8</A
> -&gt; <A HREF="Blaze-ByteString-Builder-Internal-Buffer.html#t%3ABuffer"
>Buffer</A
></TD
><TD CLASS="declbut"
><A HREF="src/Blaze-ByteString-Builder-Internal-Buffer.html#updateEndOfSlice"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="doc"
>Update the end of slice pointer.
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:execBuildStep"
><A NAME="v%3AexecBuildStep"
></A
></A
><B
>execBuildStep</B
> ::  <A HREF="Blaze-ByteString-Builder-Internal-Types.html#t%3ABuildStep"
>BuildStep</A
> a -&gt; <A HREF="Blaze-ByteString-Builder-Internal-Buffer.html#t%3ABuffer"
>Buffer</A
> -&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/System-IO.html#t%3AIO"
>IO</A
> (<A HREF="Blaze-ByteString-Builder-Internal-Types.html#t%3ABuildSignal"
>BuildSignal</A
> a)</TD
><TD CLASS="declbut"
><A HREF="src/Blaze-ByteString-Builder-Internal-Buffer.html#execBuildStep"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="doc"
>Execute a build step on the given buffer.
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="section2"
><A NAME="4"
><A NAME="4"
>Conversion to bytestings
</A
></A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:unsafeFreezeBuffer"
><A NAME="v%3AunsafeFreezeBuffer"
></A
></A
><B
>unsafeFreezeBuffer</B
> :: <A HREF="Blaze-ByteString-Builder-Internal-Buffer.html#t%3ABuffer"
>Buffer</A
> -&gt; <A HREF="/usr/share/doc/ghc/html/libraries/bytestring-0.9.1.7/Data-ByteString.html#t%3AByteString"
>ByteString</A
></TD
><TD CLASS="declbut"
><A HREF="src/Blaze-ByteString-Builder-Internal-Buffer.html#unsafeFreezeBuffer"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="doc"
>Convert the buffer to a bytestring. This operation is unsafe in the sense
 that created bytestring shares the underlying byte array with the buffer.
 Hence, depending on the later use of this buffer (e.g., if it gets reset and
 filled again) referential transparency may be lost.
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:unsafeFreezeNonEmptyBuffer"
><A NAME="v%3AunsafeFreezeNonEmptyBuffer"
></A
></A
><B
>unsafeFreezeNonEmptyBuffer</B
> :: <A HREF="Blaze-ByteString-Builder-Internal-Buffer.html#t%3ABuffer"
>Buffer</A
> -&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Maybe.html#t%3AMaybe"
>Maybe</A
> <A HREF="/usr/share/doc/ghc/html/libraries/bytestring-0.9.1.7/Data-ByteString.html#t%3AByteString"
>ByteString</A
></TD
><TD CLASS="declbut"
><A HREF="src/Blaze-ByteString-Builder-Internal-Buffer.html#unsafeFreezeNonEmptyBuffer"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="doc"
>Convert a buffer to a non-empty bytestring. See <TT
><A HREF="Blaze-ByteString-Builder-Internal-Buffer.html#v%3AunsafeFreezeBuffer"
>unsafeFreezeBuffer</A
></TT
> for
 the explanation of why this operation may be unsafe.
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="section1"
><A NAME="5"
><A NAME="5"
>Buffer allocation strategies
</A
></A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><SPAN CLASS="keyword"
>type</SPAN
> <A NAME="t:BufferAllocStrategy"
><A NAME="t%3ABufferAllocStrategy"
></A
></A
><B
>BufferAllocStrategy</B
> = (<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/System-IO.html#t%3AIO"
>IO</A
> <A HREF="Blaze-ByteString-Builder-Internal-Buffer.html#t%3ABuffer"
>Buffer</A
>, <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Int.html#t%3AInt"
>Int</A
> -&gt; <A HREF="Blaze-ByteString-Builder-Internal-Buffer.html#t%3ABuffer"
>Buffer</A
> -&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/System-IO.html#t%3AIO"
>IO</A
> (<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/System-IO.html#t%3AIO"
>IO</A
> <A HREF="Blaze-ByteString-Builder-Internal-Buffer.html#t%3ABuffer"
>Buffer</A
>))</TD
><TD CLASS="declbut"
><A HREF="src/Blaze-ByteString-Builder-Internal-Buffer.html#BufferAllocStrategy"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="doc"
>A buffer allocation strategy <TT
>(buf0, nextBuf)</TT
> specifies the initial
 buffer to use and how to compute a new buffer <TT
>nextBuf minSize buf</TT
> with at
 least size <TT
>minSize</TT
> from a filled buffer <TT
>buf</TT
>. The double nesting of the
 <TT
>IO</TT
> monad helps to ensure that the reference to the filled buffer <TT
>buf</TT
> is
 lost as soon as possible, but the new buffer doesn't have to be allocated 
 too early.
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:allNewBuffersStrategy"
><A NAME="v%3AallNewBuffersStrategy"
></A
></A
><B
>allNewBuffersStrategy</B
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Int.html#t%3AInt"
>Int</A
> -&gt; <A HREF="Blaze-ByteString-Builder-Internal-Buffer.html#t%3ABufferAllocStrategy"
>BufferAllocStrategy</A
></TD
><TD CLASS="declbut"
><A HREF="src/Blaze-ByteString-Builder-Internal-Buffer.html#allNewBuffersStrategy"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="doc"
><P
>The simplest buffer allocation strategy: whenever a buffer is requested,
 allocate a new one that is big enough for the next build step to execute.
</P
><P
>NOTE that this allocation strategy may spill quite some memory upon direct
 insertion of a bytestring by the builder. Thats no problem for garbage
 collection, but it may lead to unreasonably high memory consumption in
 special circumstances.
</P
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:reuseBufferStrategy"
><A NAME="v%3AreuseBufferStrategy"
></A
></A
><B
>reuseBufferStrategy</B
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/System-IO.html#t%3AIO"
>IO</A
> <A HREF="Blaze-ByteString-Builder-Internal-Buffer.html#t%3ABuffer"
>Buffer</A
> -&gt; <A HREF="Blaze-ByteString-Builder-Internal-Buffer.html#t%3ABufferAllocStrategy"
>BufferAllocStrategy</A
></TD
><TD CLASS="declbut"
><A HREF="src/Blaze-ByteString-Builder-Internal-Buffer.html#reuseBufferStrategy"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="doc"
>An unsafe, but possibly more efficient buffer allocation strategy:
 reuse the buffer, if it is big enough for the next build step to execute.
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="section1"
><A NAME="6"
><A NAME="6"
>Executing puts respect to some monad
</A
></A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:runPut"
><A NAME="v%3ArunPut"
></A
></A
><B
>runPut</B
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Monad.html#t%3AMonad"
>Monad</A
> m =&gt; (<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/System-IO.html#t%3AIO"
>IO</A
> (<A HREF="Blaze-ByteString-Builder-Internal-Types.html#t%3ABuildSignal"
>BuildSignal</A
> a) -&gt; m (<A HREF="Blaze-ByteString-Builder-Internal-Types.html#t%3ABuildSignal"
>BuildSignal</A
> a)) -&gt; (<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Int.html#t%3AInt"
>Int</A
> -&gt; <A HREF="Blaze-ByteString-Builder-Internal-Buffer.html#t%3ABuffer"
>Buffer</A
> -&gt; m <A HREF="Blaze-ByteString-Builder-Internal-Buffer.html#t%3ABuffer"
>Buffer</A
>) -&gt; (<A HREF="/usr/share/doc/ghc/html/libraries/bytestring-0.9.1.7/Data-ByteString.html#t%3AByteString"
>ByteString</A
> -&gt; m <A HREF="/usr/share/doc/ghc/html/libraries/ghc-prim-0.2.0.0/GHC-Unit.html#t%3A%28%29"
>()</A
>) -&gt; <A HREF="Blaze-ByteString-Builder-Internal-Types.html#t%3APut"
>Put</A
> a -&gt; <A HREF="Blaze-ByteString-Builder-Internal-Buffer.html#t%3ABuffer"
>Buffer</A
> -&gt; m (a, <A HREF="Blaze-ByteString-Builder-Internal-Buffer.html#t%3ABuffer"
>Buffer</A
>)</TD
><TD CLASS="declbut"
><A HREF="src/Blaze-ByteString-Builder-Internal-Buffer.html#runPut"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="doc"
><P
>Execute a put on a buffer.
</P
><P
>TODO: Generalize over buffer allocation strategy.
</P
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="botbar"
>Produced by <A HREF="http://www.haskell.org/haddock/"
>Haddock</A
> version 2.6.1</TD
></TR
></TABLE
></BODY
></HTML
>