[project @ 1996-01-11 14:06:51 by partain]
[ghc-hetmet.git] / ghc / lib / ghc / PackedString.lhs
index 9612ddd..00eea35 100644 (file)
@@ -3,56 +3,67 @@
 %
 \section[PackedString]{Packed strings}
 
-A non-weird interface to the wired-in @PackedString@ type.
+A non-weird/abstract interface to the wired-in @PackedString@ type.
 
 \begin{code}
 module PackedString (
        PackedString(..),
 
-       packString,
-       packCString,
-       packCBytes,
+       packString,             -- :: [Char] -> PackedString
+       packCString,            -- :: _Addr  -> PackedString
+       packCBytes,             -- :: Int    -> _Addr -> PackedString
+
+       packStringST,           -- :: [Char] -> _ST s PackedString
+       packCBytesST,           -- :: Int    -> _Addr -> _ST s PackedString
+       packBytesForC,          -- :: [Char] -> _ByteArray Int
+       packBytesForCST,        -- :: [Char] -> _ST s (_ByteArray Int)
+
 --NO:  packStringForC,
-       nilPS,
-       consPS,
-       byteArrayToPS,
-       psToByteArray,
+       nilPS,                  -- :: PackedString
+       consPS,                 -- :: Char -> PackedString -> PackedString
+       byteArrayToPS,          -- :: _ByteArray Int -> PackedString
+       psToByteArray,          -- :: PackedString -> _ByteArray Int
 
-       unpackPS,
+       unpackPS,               -- :: PackedString -> [Char]
 --NO:  unpackPS#,
-       putPS,
-
-       implode, explode, -- alt. names for packString, unpackPS
-
-       headPS,
-       tailPS,
-       nullPS,
-       appendPS,
-       lengthPS,
-       indexPS,
-       mapPS,
-       filterPS,
-       foldlPS,
-       foldrPS,
-       takePS,
-       dropPS,
-       splitAtPS,
-       takeWhilePS,
-       dropWhilePS,
-       spanPS,
-       breakPS,
-       linesPS,
-       wordsPS,
-       reversePS,
-       concatPS,
-
-       substrPS,
+       putPS,                  -- :: _FILE -> PackedString -> PrimIO ()
+       getPS,                  -- :: _FILE -> Int -> PrimIO PackedString
+
+        {- alt. names for packString, unpackPS -}
+       implode,                -- :: [Char] -> PackedString
+        explode,                       -- :: PackedString -> [Char]
+
+       headPS,                 -- :: PackedString -> Char
+       tailPS,                 -- :: PackedString -> PackedString
+       nullPS,                 -- :: PackedString -> Bool
+       appendPS,               -- :: PackedString -> PackedString -> PackedString
+       lengthPS,               -- :: PackedString -> Int
+       indexPS,                -- :: PackedString -> Int -> Char
+       mapPS,                  -- :: (Char -> Char) -> PackedString -> PackedString
+       filterPS,               -- :: (Char -> Bool) -> PackedString -> PackedString
+       foldlPS,                -- :: (a -> Char -> a) -> a -> PackedString -> a 
+       foldrPS,                -- :: (Char -> a -> a) -> a -> PackedString -> a
+       takePS,                 -- :: Int -> PackedString -> PackedString
+       dropPS,                 -- :: Int -> PackedString -> PackedString
+       splitAtPS,              -- :: Int -> PackedString -> PackedString
+       takeWhilePS,            -- :: (Char -> Bool) -> PackedString -> PackedString
+       dropWhilePS,            -- :: (Char -> Bool) -> PackedString -> PackedString
+       spanPS,                 -- :: (Char -> Bool) -> PackedString -> (PackedString, PackedString)
+       breakPS,                -- :: (Char -> Bool) -> PackedString -> (PackedString, PackedString)
+       linesPS,                -- :: PackedString -> [PackedString]
+       wordsPS,                -- :: PackedString -> [PackedString]
+       reversePS,              -- :: PackedString -> PackedString
+       concatPS,               -- :: [PackedString] -> PackedString
+
+       substrPS,               -- :: PackedString -> Int -> Int -> PackedString
 
        -- to make interface self-sufficient
        _PackedString, -- abstract!
        _FILE
     ) where
 
+import PS
+
 type PackedString = _PackedString
 
 packString     = _packString
@@ -65,8 +76,14 @@ consPS               = _consPS
 byteArrayToPS  = _byteArrayToPS
 psToByteArray  = _psToByteArray
 
+packStringST    = _packStringST
+packCBytesST    = _packCBytesST
+packBytesForC   = _packBytesForC
+packBytesForCST = _packBytesForCST
+
 unpackPS       = _unpackPS
 putPS          = _putPS
+getPS          = _getPS
 
 implode                = _packString -- alt. names
 explode                = _unpackPS