<!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 >GHC.IO.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_GHC-IO-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" >base-4.2.0.2: Basic libraries</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" >GHC.IO.Buffer</FONT ></TD ><TD ALIGN="right" ><TABLE CLASS="narrow" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="infohead" >Portability</TD ><TD CLASS="infoval" >non-portable (GHC Extensions)</TD ></TR ><TR ><TD CLASS="infohead" >Stability</TD ><TD CLASS="infoval" >internal</TD ></TR ><TR ><TD CLASS="infohead" >Maintainer</TD ><TD CLASS="infoval" >cvs-ghc@haskell.org</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 of any element </A ></DT ><DD ><DL ><DT ><A HREF="#2" >Creation </A ></DT ><DT ><A HREF="#3" >Insertion/removal </A ></DT ><DT ><A HREF="#4" >Inspecting </A ></DT ><DT ><A HREF="#5" >Operating on the raw buffer as a Ptr </A ></DT ><DT ><A HREF="#6" >Assertions </A ></DT ></DL ></DD ><DT ><A HREF="#7" >Raw buffers </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" >Buffers used in the IO system </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 > e = <A HREF="#v%3ABuffer" >Buffer</A > {<TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="recfield" ><A HREF="#v%3AbufRaw" >bufRaw</A > :: !(<A HREF="GHC-IO-Buffer.html#t%3ARawBuffer" >RawBuffer</A > e)</TD ></TR ><TR ><TD CLASS="recfield" ><A HREF="#v%3AbufState" >bufState</A > :: <A HREF="GHC-IO-Buffer.html#t%3ABufferState" >BufferState</A ></TD ></TR ><TR ><TD CLASS="recfield" ><A HREF="#v%3AbufSize" >bufSize</A > :: !<A HREF="Data-Int.html#t%3AInt" >Int</A ></TD ></TR ><TR ><TD CLASS="recfield" ><A HREF="#v%3AbufL" >bufL</A > :: !<A HREF="Data-Int.html#t%3AInt" >Int</A ></TD ></TR ><TR ><TD CLASS="recfield" ><A HREF="#v%3AbufR" >bufR</A > :: !<A HREF="Data-Int.html#t%3AInt" >Int</A ></TD ></TR ></TABLE >}</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >data</SPAN > <A HREF="#t%3ABufferState" >BufferState</A > </TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="decl" >= <A HREF="#v%3AReadBuffer" >ReadBuffer</A ></TD ></TR ><TR ><TD CLASS="decl" >| <A HREF="#v%3AWriteBuffer" >WriteBuffer</A ></TD ></TR ></TABLE ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >type</SPAN > <A HREF="#t%3ACharBuffer" >CharBuffer</A > = <A HREF="GHC-IO-Buffer.html#t%3ABuffer" >Buffer</A > <A HREF="Data-Char.html#t%3AChar" >Char</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >type</SPAN > <A HREF="#t%3ACharBufElem" >CharBufElem</A > = <A HREF="Data-Char.html#t%3AChar" >Char</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AnewByteBuffer" >newByteBuffer</A > :: <A HREF="Data-Int.html#t%3AInt" >Int</A > -> <A HREF="GHC-IO-Buffer.html#t%3ABufferState" >BufferState</A > -> <A HREF="System-IO.html#t%3AIO" >IO</A > (<A HREF="GHC-IO-Buffer.html#t%3ABuffer" >Buffer</A > <A HREF="Data-Word.html#t%3AWord8" >Word8</A >)</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AnewCharBuffer" >newCharBuffer</A > :: <A HREF="Data-Int.html#t%3AInt" >Int</A > -> <A HREF="GHC-IO-Buffer.html#t%3ABufferState" >BufferState</A > -> <A HREF="System-IO.html#t%3AIO" >IO</A > <A HREF="GHC-IO-Buffer.html#t%3ACharBuffer" >CharBuffer</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AnewBuffer" >newBuffer</A > :: <A HREF="Data-Int.html#t%3AInt" >Int</A > -> <A HREF="Data-Int.html#t%3AInt" >Int</A > -> <A HREF="GHC-IO-Buffer.html#t%3ABufferState" >BufferState</A > -> <A HREF="System-IO.html#t%3AIO" >IO</A > (<A HREF="GHC-IO-Buffer.html#t%3ABuffer" >Buffer</A > e)</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AemptyBuffer" >emptyBuffer</A > :: <A HREF="GHC-IO-Buffer.html#t%3ARawBuffer" >RawBuffer</A > e -> <A HREF="Data-Int.html#t%3AInt" >Int</A > -> <A HREF="GHC-IO-Buffer.html#t%3ABufferState" >BufferState</A > -> <A HREF="GHC-IO-Buffer.html#t%3ABuffer" >Buffer</A > e</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AbufferRemove" >bufferRemove</A > :: <A HREF="Data-Int.html#t%3AInt" >Int</A > -> <A HREF="GHC-IO-Buffer.html#t%3ABuffer" >Buffer</A > e -> <A HREF="GHC-IO-Buffer.html#t%3ABuffer" >Buffer</A > e</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AbufferAdd" >bufferAdd</A > :: <A HREF="Data-Int.html#t%3AInt" >Int</A > -> <A HREF="GHC-IO-Buffer.html#t%3ABuffer" >Buffer</A > e -> <A HREF="GHC-IO-Buffer.html#t%3ABuffer" >Buffer</A > e</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AslideContents" >slideContents</A > :: <A HREF="GHC-IO-Buffer.html#t%3ABuffer" >Buffer</A > <A HREF="Data-Word.html#t%3AWord8" >Word8</A > -> <A HREF="System-IO.html#t%3AIO" >IO</A > (<A HREF="GHC-IO-Buffer.html#t%3ABuffer" >Buffer</A > <A HREF="Data-Word.html#t%3AWord8" >Word8</A >)</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AbufferAdjustL" >bufferAdjustL</A > :: <A HREF="Data-Int.html#t%3AInt" >Int</A > -> <A HREF="GHC-IO-Buffer.html#t%3ABuffer" >Buffer</A > e -> <A HREF="GHC-IO-Buffer.html#t%3ABuffer" >Buffer</A > e</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AisEmptyBuffer" >isEmptyBuffer</A > :: <A HREF="GHC-IO-Buffer.html#t%3ABuffer" >Buffer</A > e -> <A HREF="Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AisFullBuffer" >isFullBuffer</A > :: <A HREF="GHC-IO-Buffer.html#t%3ABuffer" >Buffer</A > e -> <A HREF="Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AisFullCharBuffer" >isFullCharBuffer</A > :: <A HREF="GHC-IO-Buffer.html#t%3ABuffer" >Buffer</A > e -> <A HREF="Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AisWriteBuffer" >isWriteBuffer</A > :: <A HREF="GHC-IO-Buffer.html#t%3ABuffer" >Buffer</A > e -> <A HREF="Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AbufferElems" >bufferElems</A > :: <A HREF="GHC-IO-Buffer.html#t%3ABuffer" >Buffer</A > e -> <A HREF="Data-Int.html#t%3AInt" >Int</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AbufferAvailable" >bufferAvailable</A > :: <A HREF="GHC-IO-Buffer.html#t%3ABuffer" >Buffer</A > e -> <A HREF="Data-Int.html#t%3AInt" >Int</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AsummaryBuffer" >summaryBuffer</A > :: <A HREF="GHC-IO-Buffer.html#t%3ABuffer" >Buffer</A > a -> <A HREF="Data-Char.html#t%3AString" >String</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AwithBuffer" >withBuffer</A > :: <A HREF="GHC-IO-Buffer.html#t%3ABuffer" >Buffer</A > e -> (<A HREF="Foreign-Ptr.html#t%3APtr" >Ptr</A > e -> <A HREF="System-IO.html#t%3AIO" >IO</A > a) -> <A HREF="System-IO.html#t%3AIO" >IO</A > a</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AwithRawBuffer" >withRawBuffer</A > :: <A HREF="GHC-IO-Buffer.html#t%3ARawBuffer" >RawBuffer</A > e -> (<A HREF="Foreign-Ptr.html#t%3APtr" >Ptr</A > e -> <A HREF="System-IO.html#t%3AIO" >IO</A > a) -> <A HREF="System-IO.html#t%3AIO" >IO</A > a</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AcheckBuffer" >checkBuffer</A > :: <A HREF="GHC-IO-Buffer.html#t%3ABuffer" >Buffer</A > a -> <A HREF="System-IO.html#t%3AIO" >IO</A > <A HREF="../ghc-prim-0.2.0.0/GHC-Unit.html#t%3A%28%29" >()</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >type</SPAN > <A HREF="#t%3ARawBuffer" >RawBuffer</A > e = <A HREF="Foreign-ForeignPtr.html#t%3AForeignPtr" >ForeignPtr</A > e</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AreadWord8Buf" >readWord8Buf</A > :: <A HREF="GHC-IO-Buffer.html#t%3ARawBuffer" >RawBuffer</A > <A HREF="Data-Word.html#t%3AWord8" >Word8</A > -> <A HREF="Data-Int.html#t%3AInt" >Int</A > -> <A HREF="System-IO.html#t%3AIO" >IO</A > <A HREF="Data-Word.html#t%3AWord8" >Word8</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AwriteWord8Buf" >writeWord8Buf</A > :: <A HREF="GHC-IO-Buffer.html#t%3ARawBuffer" >RawBuffer</A > <A HREF="Data-Word.html#t%3AWord8" >Word8</A > -> <A HREF="Data-Int.html#t%3AInt" >Int</A > -> <A HREF="Data-Word.html#t%3AWord8" >Word8</A > -> <A HREF="System-IO.html#t%3AIO" >IO</A > <A HREF="../ghc-prim-0.2.0.0/GHC-Unit.html#t%3A%28%29" >()</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >type</SPAN > <A HREF="#t%3ARawCharBuffer" >RawCharBuffer</A > = <A HREF="GHC-IO-Buffer.html#t%3ARawBuffer" >RawBuffer</A > <A HREF="GHC-IO-Buffer.html#t%3ACharBufElem" >CharBufElem</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3ApeekCharBuf" >peekCharBuf</A > :: <A HREF="GHC-IO-Buffer.html#t%3ARawCharBuffer" >RawCharBuffer</A > -> <A HREF="Data-Int.html#t%3AInt" >Int</A > -> <A HREF="System-IO.html#t%3AIO" >IO</A > <A HREF="Data-Char.html#t%3AChar" >Char</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AreadCharBuf" >readCharBuf</A > :: <A HREF="GHC-IO-Buffer.html#t%3ARawCharBuffer" >RawCharBuffer</A > -> <A HREF="Data-Int.html#t%3AInt" >Int</A > -> <A HREF="System-IO.html#t%3AIO" >IO</A > (<A HREF="Data-Char.html#t%3AChar" >Char</A >, <A HREF="Data-Int.html#t%3AInt" >Int</A >)</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AwriteCharBuf" >writeCharBuf</A > :: <A HREF="GHC-IO-Buffer.html#t%3ARawCharBuffer" >RawCharBuffer</A > -> <A HREF="Data-Int.html#t%3AInt" >Int</A > -> <A HREF="Data-Char.html#t%3AChar" >Char</A > -> <A HREF="System-IO.html#t%3AIO" >IO</A > <A HREF="Data-Int.html#t%3AInt" >Int</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AreadCharBufPtr" >readCharBufPtr</A > :: <A HREF="Foreign-Ptr.html#t%3APtr" >Ptr</A > <A HREF="GHC-IO-Buffer.html#t%3ACharBufElem" >CharBufElem</A > -> <A HREF="Data-Int.html#t%3AInt" >Int</A > -> <A HREF="System-IO.html#t%3AIO" >IO</A > (<A HREF="Data-Char.html#t%3AChar" >Char</A >, <A HREF="Data-Int.html#t%3AInt" >Int</A >)</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AwriteCharBufPtr" >writeCharBufPtr</A > :: <A HREF="Foreign-Ptr.html#t%3APtr" >Ptr</A > <A HREF="GHC-IO-Buffer.html#t%3ACharBufElem" >CharBufElem</A > -> <A HREF="Data-Int.html#t%3AInt" >Int</A > -> <A HREF="Data-Char.html#t%3AChar" >Char</A > -> <A HREF="System-IO.html#t%3AIO" >IO</A > <A HREF="Data-Int.html#t%3AInt" >Int</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AcharSize" >charSize</A > :: <A HREF="Data-Int.html#t%3AInt" >Int</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 of any element </A ></A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >data</SPAN > <A NAME="t:Buffer" ><A NAME="t%3ABuffer" ></A ></A ><B >Buffer</B > e </TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="ndoc" ><P >A mutable array of bytes that can be passed to foreign functions. </P ><P >The buffer is represented by a record, where the record contains the raw buffer and the start/end points of the filled portion. The buffer contents itself is mutable, but the rest of the record is immutable. This is a slightly odd mix, but it turns out to be quite practical: by making all the buffer metadata immutable, we can have operations on buffer metadata outside of the IO monad. </P ><P >The <A HREF="live.html" >live</A > elements of the buffer are those between the <TT ><A HREF="GHC-IO-Buffer.html#v%3AbufL" >bufL</A ></TT > and <TT ><A HREF="GHC-IO-Buffer.html#v%3AbufR" >bufR</A ></TT > offsets. In an empty buffer, <TT ><A HREF="GHC-IO-Buffer.html#v%3AbufL" >bufL</A ></TT > is equal to <TT ><A HREF="GHC-IO-Buffer.html#v%3AbufR" >bufR</A ></TT >, but they might not be zero: for exmaple, the buffer might correspond to a memory-mapped file and in which case <TT ><A HREF="GHC-IO-Buffer.html#v%3AbufL" >bufL</A ></TT > will point to the next location to be written, which is not necessarily the beginning of the file. </P ></TD ></TR ><TR ><TD CLASS="section4" >Constructors</TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="5" CELLPADDING="0" ><TR ><TD CLASS="arg" ><A NAME="v:Buffer" ><A NAME="v%3ABuffer" ></A ></A ><B >Buffer</B ></TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="body" COLSPAN="2" ><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" ><TR ><TD CLASS="arg" ><A NAME="v:bufRaw" ><A NAME="v%3AbufRaw" ></A ></A ><B >bufRaw</B > :: !(<A HREF="GHC-IO-Buffer.html#t%3ARawBuffer" >RawBuffer</A > e)</TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="arg" ><A NAME="v:bufState" ><A NAME="v%3AbufState" ></A ></A ><B >bufState</B > :: <A HREF="GHC-IO-Buffer.html#t%3ABufferState" >BufferState</A ></TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="arg" ><A NAME="v:bufSize" ><A NAME="v%3AbufSize" ></A ></A ><B >bufSize</B > :: !<A HREF="Data-Int.html#t%3AInt" >Int</A ></TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="arg" ><A NAME="v:bufL" ><A NAME="v%3AbufL" ></A ></A ><B >bufL</B > :: !<A HREF="Data-Int.html#t%3AInt" >Int</A ></TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="arg" ><A NAME="v:bufR" ><A NAME="v%3AbufR" ></A ></A ><B >bufR</B > :: !<A HREF="Data-Int.html#t%3AInt" >Int</A ></TD ><TD CLASS="rdoc" ></TD ></TR ></TABLE ></TD ></TR ></TABLE ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >data</SPAN > <A NAME="t:BufferState" ><A NAME="t%3ABufferState" ></A ></A ><B >BufferState</B > </TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="section4" >Constructors</TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" ><TR ><TD CLASS="arg" ><A NAME="v:ReadBuffer" ><A NAME="v%3AReadBuffer" ></A ></A ><B >ReadBuffer</B ></TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="arg" ><A NAME="v:WriteBuffer" ><A NAME="v%3AWriteBuffer" ></A ></A ><B >WriteBuffer</B ></TD ><TD CLASS="rdoc" ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="section4" ><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:BufferState')" ALT="show/hide" > Instances</TD ></TR ><TR ><TD CLASS="body" ><DIV ID="i:BufferState" STYLE="display:block;" ><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" ><TR ><TD CLASS="decl" ><A HREF="Data-Eq.html#t%3AEq" >Eq</A > <A HREF="GHC-IO-Buffer.html#t%3ABufferState" >BufferState</A ></TD ></TR ></TABLE ></DIV ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >type</SPAN > <A NAME="t:CharBuffer" ><A NAME="t%3ACharBuffer" ></A ></A ><B >CharBuffer</B > = <A HREF="GHC-IO-Buffer.html#t%3ABuffer" >Buffer</A > <A HREF="Data-Char.html#t%3AChar" >Char</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >type</SPAN > <A NAME="t:CharBufElem" ><A NAME="t%3ACharBufElem" ></A ></A ><B >CharBufElem</B > = <A HREF="Data-Char.html#t%3AChar" >Char</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section2" ><A NAME="2" ><A NAME="2" >Creation </A ></A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:newByteBuffer" ><A NAME="v%3AnewByteBuffer" ></A ></A ><B >newByteBuffer</B > :: <A HREF="Data-Int.html#t%3AInt" >Int</A > -> <A HREF="GHC-IO-Buffer.html#t%3ABufferState" >BufferState</A > -> <A HREF="System-IO.html#t%3AIO" >IO</A > (<A HREF="GHC-IO-Buffer.html#t%3ABuffer" >Buffer</A > <A HREF="Data-Word.html#t%3AWord8" >Word8</A >)</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:newCharBuffer" ><A NAME="v%3AnewCharBuffer" ></A ></A ><B >newCharBuffer</B > :: <A HREF="Data-Int.html#t%3AInt" >Int</A > -> <A HREF="GHC-IO-Buffer.html#t%3ABufferState" >BufferState</A > -> <A HREF="System-IO.html#t%3AIO" >IO</A > <A HREF="GHC-IO-Buffer.html#t%3ACharBuffer" >CharBuffer</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:newBuffer" ><A NAME="v%3AnewBuffer" ></A ></A ><B >newBuffer</B > :: <A HREF="Data-Int.html#t%3AInt" >Int</A > -> <A HREF="Data-Int.html#t%3AInt" >Int</A > -> <A HREF="GHC-IO-Buffer.html#t%3ABufferState" >BufferState</A > -> <A HREF="System-IO.html#t%3AIO" >IO</A > (<A HREF="GHC-IO-Buffer.html#t%3ABuffer" >Buffer</A > e)</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:emptyBuffer" ><A NAME="v%3AemptyBuffer" ></A ></A ><B >emptyBuffer</B > :: <A HREF="GHC-IO-Buffer.html#t%3ARawBuffer" >RawBuffer</A > e -> <A HREF="Data-Int.html#t%3AInt" >Int</A > -> <A HREF="GHC-IO-Buffer.html#t%3ABufferState" >BufferState</A > -> <A HREF="GHC-IO-Buffer.html#t%3ABuffer" >Buffer</A > e</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section2" ><A NAME="3" ><A NAME="3" >Insertion/removal </A ></A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:bufferRemove" ><A NAME="v%3AbufferRemove" ></A ></A ><B >bufferRemove</B > :: <A HREF="Data-Int.html#t%3AInt" >Int</A > -> <A HREF="GHC-IO-Buffer.html#t%3ABuffer" >Buffer</A > e -> <A HREF="GHC-IO-Buffer.html#t%3ABuffer" >Buffer</A > e</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:bufferAdd" ><A NAME="v%3AbufferAdd" ></A ></A ><B >bufferAdd</B > :: <A HREF="Data-Int.html#t%3AInt" >Int</A > -> <A HREF="GHC-IO-Buffer.html#t%3ABuffer" >Buffer</A > e -> <A HREF="GHC-IO-Buffer.html#t%3ABuffer" >Buffer</A > e</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:slideContents" ><A NAME="v%3AslideContents" ></A ></A ><B >slideContents</B > :: <A HREF="GHC-IO-Buffer.html#t%3ABuffer" >Buffer</A > <A HREF="Data-Word.html#t%3AWord8" >Word8</A > -> <A HREF="System-IO.html#t%3AIO" >IO</A > (<A HREF="GHC-IO-Buffer.html#t%3ABuffer" >Buffer</A > <A HREF="Data-Word.html#t%3AWord8" >Word8</A >)</TD ></TR ><TR ><TD CLASS="doc" >slides the contents of the buffer to the beginning </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:bufferAdjustL" ><A NAME="v%3AbufferAdjustL" ></A ></A ><B >bufferAdjustL</B > :: <A HREF="Data-Int.html#t%3AInt" >Int</A > -> <A HREF="GHC-IO-Buffer.html#t%3ABuffer" >Buffer</A > e -> <A HREF="GHC-IO-Buffer.html#t%3ABuffer" >Buffer</A > e</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section2" ><A NAME="4" ><A NAME="4" >Inspecting </A ></A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:isEmptyBuffer" ><A NAME="v%3AisEmptyBuffer" ></A ></A ><B >isEmptyBuffer</B > :: <A HREF="GHC-IO-Buffer.html#t%3ABuffer" >Buffer</A > e -> <A HREF="Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:isFullBuffer" ><A NAME="v%3AisFullBuffer" ></A ></A ><B >isFullBuffer</B > :: <A HREF="GHC-IO-Buffer.html#t%3ABuffer" >Buffer</A > e -> <A HREF="Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:isFullCharBuffer" ><A NAME="v%3AisFullCharBuffer" ></A ></A ><B >isFullCharBuffer</B > :: <A HREF="GHC-IO-Buffer.html#t%3ABuffer" >Buffer</A > e -> <A HREF="Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:isWriteBuffer" ><A NAME="v%3AisWriteBuffer" ></A ></A ><B >isWriteBuffer</B > :: <A HREF="GHC-IO-Buffer.html#t%3ABuffer" >Buffer</A > e -> <A HREF="Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:bufferElems" ><A NAME="v%3AbufferElems" ></A ></A ><B >bufferElems</B > :: <A HREF="GHC-IO-Buffer.html#t%3ABuffer" >Buffer</A > e -> <A HREF="Data-Int.html#t%3AInt" >Int</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:bufferAvailable" ><A NAME="v%3AbufferAvailable" ></A ></A ><B >bufferAvailable</B > :: <A HREF="GHC-IO-Buffer.html#t%3ABuffer" >Buffer</A > e -> <A HREF="Data-Int.html#t%3AInt" >Int</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:summaryBuffer" ><A NAME="v%3AsummaryBuffer" ></A ></A ><B >summaryBuffer</B > :: <A HREF="GHC-IO-Buffer.html#t%3ABuffer" >Buffer</A > a -> <A HREF="Data-Char.html#t%3AString" >String</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section2" ><A NAME="5" ><A NAME="5" >Operating on the raw buffer as a Ptr </A ></A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:withBuffer" ><A NAME="v%3AwithBuffer" ></A ></A ><B >withBuffer</B > :: <A HREF="GHC-IO-Buffer.html#t%3ABuffer" >Buffer</A > e -> (<A HREF="Foreign-Ptr.html#t%3APtr" >Ptr</A > e -> <A HREF="System-IO.html#t%3AIO" >IO</A > a) -> <A HREF="System-IO.html#t%3AIO" >IO</A > a</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:withRawBuffer" ><A NAME="v%3AwithRawBuffer" ></A ></A ><B >withRawBuffer</B > :: <A HREF="GHC-IO-Buffer.html#t%3ARawBuffer" >RawBuffer</A > e -> (<A HREF="Foreign-Ptr.html#t%3APtr" >Ptr</A > e -> <A HREF="System-IO.html#t%3AIO" >IO</A > a) -> <A HREF="System-IO.html#t%3AIO" >IO</A > a</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section2" ><A NAME="6" ><A NAME="6" >Assertions </A ></A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:checkBuffer" ><A NAME="v%3AcheckBuffer" ></A ></A ><B >checkBuffer</B > :: <A HREF="GHC-IO-Buffer.html#t%3ABuffer" >Buffer</A > a -> <A HREF="System-IO.html#t%3AIO" >IO</A > <A HREF="../ghc-prim-0.2.0.0/GHC-Unit.html#t%3A%28%29" >()</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section1" ><A NAME="7" ><A NAME="7" >Raw buffers </A ></A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >type</SPAN > <A NAME="t:RawBuffer" ><A NAME="t%3ARawBuffer" ></A ></A ><B >RawBuffer</B > e = <A HREF="Foreign-ForeignPtr.html#t%3AForeignPtr" >ForeignPtr</A > e</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:readWord8Buf" ><A NAME="v%3AreadWord8Buf" ></A ></A ><B >readWord8Buf</B > :: <A HREF="GHC-IO-Buffer.html#t%3ARawBuffer" >RawBuffer</A > <A HREF="Data-Word.html#t%3AWord8" >Word8</A > -> <A HREF="Data-Int.html#t%3AInt" >Int</A > -> <A HREF="System-IO.html#t%3AIO" >IO</A > <A HREF="Data-Word.html#t%3AWord8" >Word8</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:writeWord8Buf" ><A NAME="v%3AwriteWord8Buf" ></A ></A ><B >writeWord8Buf</B > :: <A HREF="GHC-IO-Buffer.html#t%3ARawBuffer" >RawBuffer</A > <A HREF="Data-Word.html#t%3AWord8" >Word8</A > -> <A HREF="Data-Int.html#t%3AInt" >Int</A > -> <A HREF="Data-Word.html#t%3AWord8" >Word8</A > -> <A HREF="System-IO.html#t%3AIO" >IO</A > <A HREF="../ghc-prim-0.2.0.0/GHC-Unit.html#t%3A%28%29" >()</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >type</SPAN > <A NAME="t:RawCharBuffer" ><A NAME="t%3ARawCharBuffer" ></A ></A ><B >RawCharBuffer</B > = <A HREF="GHC-IO-Buffer.html#t%3ARawBuffer" >RawBuffer</A > <A HREF="GHC-IO-Buffer.html#t%3ACharBufElem" >CharBufElem</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:peekCharBuf" ><A NAME="v%3ApeekCharBuf" ></A ></A ><B >peekCharBuf</B > :: <A HREF="GHC-IO-Buffer.html#t%3ARawCharBuffer" >RawCharBuffer</A > -> <A HREF="Data-Int.html#t%3AInt" >Int</A > -> <A HREF="System-IO.html#t%3AIO" >IO</A > <A HREF="Data-Char.html#t%3AChar" >Char</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:readCharBuf" ><A NAME="v%3AreadCharBuf" ></A ></A ><B >readCharBuf</B > :: <A HREF="GHC-IO-Buffer.html#t%3ARawCharBuffer" >RawCharBuffer</A > -> <A HREF="Data-Int.html#t%3AInt" >Int</A > -> <A HREF="System-IO.html#t%3AIO" >IO</A > (<A HREF="Data-Char.html#t%3AChar" >Char</A >, <A HREF="Data-Int.html#t%3AInt" >Int</A >)</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:writeCharBuf" ><A NAME="v%3AwriteCharBuf" ></A ></A ><B >writeCharBuf</B > :: <A HREF="GHC-IO-Buffer.html#t%3ARawCharBuffer" >RawCharBuffer</A > -> <A HREF="Data-Int.html#t%3AInt" >Int</A > -> <A HREF="Data-Char.html#t%3AChar" >Char</A > -> <A HREF="System-IO.html#t%3AIO" >IO</A > <A HREF="Data-Int.html#t%3AInt" >Int</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:readCharBufPtr" ><A NAME="v%3AreadCharBufPtr" ></A ></A ><B >readCharBufPtr</B > :: <A HREF="Foreign-Ptr.html#t%3APtr" >Ptr</A > <A HREF="GHC-IO-Buffer.html#t%3ACharBufElem" >CharBufElem</A > -> <A HREF="Data-Int.html#t%3AInt" >Int</A > -> <A HREF="System-IO.html#t%3AIO" >IO</A > (<A HREF="Data-Char.html#t%3AChar" >Char</A >, <A HREF="Data-Int.html#t%3AInt" >Int</A >)</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:writeCharBufPtr" ><A NAME="v%3AwriteCharBufPtr" ></A ></A ><B >writeCharBufPtr</B > :: <A HREF="Foreign-Ptr.html#t%3APtr" >Ptr</A > <A HREF="GHC-IO-Buffer.html#t%3ACharBufElem" >CharBufElem</A > -> <A HREF="Data-Int.html#t%3AInt" >Int</A > -> <A HREF="Data-Char.html#t%3AChar" >Char</A > -> <A HREF="System-IO.html#t%3AIO" >IO</A > <A HREF="Data-Int.html#t%3AInt" >Int</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:charSize" ><A NAME="v%3AcharSize" ></A ></A ><B >charSize</B > :: <A HREF="Data-Int.html#t%3AInt" >Int</A ></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 >