Add hPutStringBuffer utility
authorDaniel Gröber <dxld@darkboxed.org>
Mon, 20 May 2019 04:03:49 +0000 (06:03 +0200)
committerMarge Bot <ben+marge-bot@smart-cactus.org>
Wed, 29 May 2019 14:41:02 +0000 (10:41 -0400)
compiler/utils/StringBuffer.hs

index 98b8c19..91377ca 100644 (file)
@@ -19,6 +19,7 @@ module StringBuffer
          -- * Creation\/destruction
         hGetStringBuffer,
         hGetStringBufferBlock,
+        hPutStringBuffer,
         appendStringBuffers,
         stringToStringBuffer,
 
@@ -121,6 +122,11 @@ hGetStringBufferBlock handle wanted
                    then ioError (userError $ "short read of file: "++show(r,size,size_i,handle))
                    else newUTF8StringBuffer buf ptr size
 
+hPutStringBuffer :: Handle -> StringBuffer -> IO ()
+hPutStringBuffer hdl (StringBuffer buf len cur)
+    = do withForeignPtr (plusForeignPtr buf cur) $ \ptr ->
+             hPutBuf hdl ptr len
+
 -- | Skip the byte-order mark if there is one (see #1744 and #6016),
 -- and return the new position of the handle in bytes.
 --