A mutable array of bytes that can be passed to foreign functions.
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.
The live elements of the buffer are those between the bufL
and bufR
offsets. In an empty buffer, bufL
is equal to bufR
, but they might not be zero: for exmaple, the buffer might correspond to a memory-mapped file and in which case bufL
will point to the next location to be written, which is not necessarily the beginning of the file.
type CharBuffer = Buffer CharSource
type CharBufElem = CharSource
CreationnewByteBuffer :: Int -> BufferState -> IO (Buffer Word8)Source
newCharBuffer :: Int -> BufferState -> IO CharBufferSource
newBuffer :: Int -> Int -> BufferState -> IO (Buffer e)Source
emptyBuffer :: RawBuffer e -> Int -> BufferState -> Buffer eSource
Insertion/removalbufferRemove :: Int -> Buffer e -> Buffer eSource
bufferAdd :: Int -> Buffer e -> Buffer eSource
bufferAdjustL :: Int -> Buffer e -> Buffer eSource
InspectingisEmptyBuffer :: Buffer e -> BoolSource
isFullBuffer :: Buffer e -> BoolSource
isFullCharBuffer :: Buffer e -> BoolSource
isWriteBuffer :: Buffer e -> BoolSource
bufferElems :: Buffer e -> IntSource
bufferAvailable :: Buffer e -> IntSource
summaryBuffer :: Buffer a -> StringSource
Operating on the raw buffer as a PtrwithBuffer :: Buffer e -> (Ptr e -> IO a) -> IO aSource
withRawBuffer :: RawBuffer e -> (Ptr e -> IO a) -> IO aSource
AssertionscheckBuffer :: Buffer a -> IO ()Source
Raw bufferstype RawBuffer e = ForeignPtr eSource
readWord8Buf :: RawBuffer Word8 -> Int -> IO Word8Source
writeWord8Buf :: RawBuffer Word8 -> Int -> Word8 -> IO ()Source
type RawCharBuffer = RawBuffer CharBufElemSource
peekCharBuf :: RawCharBuffer -> Int -> IO CharSource
readCharBuf :: RawCharBuffer -> Int -> IO (Char, Int)Source
writeCharBuf :: RawCharBuffer -> Int -> Char -> IO IntSource
readCharBufPtr :: Ptr CharBufElem -> Int -> IO (Char, Int)Source
writeCharBufPtr :: Ptr CharBufElem -> Int -> Char -> IO IntSource
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4