content: {-# LANGUAGE Safe #-}
  
  -- |
  --
  -- Module      :  GHC.IO.Buffer
  -- Copyright   :  (c) The University of Glasgow 2008
  -- License     :  see libraries/base/LICENSE
  --
  -- Maintainer  :  ghc-devs@haskell.org
  -- Stability   :  internal
  -- Portability :  non-portable (GHC Extensions)
  --
  -- Buffers used in the IO system
  --
  -- /The API of this module is unstable and not meant to be consumed by the general public./
  -- If you absolutely must depend on it, make sure to use a tight upper
  -- bound, e.g., @base < 4.X@ rather than @base < 5@, because the interface can
  -- change rapidly without much warning.
  --
  
  module GHC.IO.Buffer
      (-- *  Buffers of any element
       Buffer(..),
       BufferState(..),
       CharBuffer,
       CharBufElem,
       -- **  Creation
       newByteBuffer,
       newCharBuffer,
       newBuffer,
       emptyBuffer,
       -- **  Insertion/removal
       bufferRemove,
       bufferAdd,
       slideContents,
       bufferAdjustL,
       bufferAddOffset,
       bufferAdjustOffset,
       -- **  Inspecting
       isEmptyBuffer,
       isFullBuffer,
       isFullCharBuffer,
       isWriteBuffer,
       bufferElems,
       bufferAvailable,
       bufferOffset,
       summaryBuffer,
       -- **  Operating on the raw buffer as a Ptr
       withBuffer,
       withRawBuffer,
       -- **  Assertions
       checkBuffer,
       -- *  Raw buffers
       RawBuffer,
       readWord8Buf,
       writeWord8Buf,
       RawCharBuffer,
       peekCharBuf,
       readCharBuf,
       writeCharBuf,
       readCharBufPtr,
       writeCharBufPtr,
       charSize
       ) where
  
  import GHC.Internal.IO.Buffer