[project @ 1996-01-11 14:06:51 by partain]
[ghc-hetmet.git] / ghc / lib / ghc / PackedString.lhs
1 %
2 % (c) The GRASP/AQUA Project, Glasgow University, 1993-1994
3 %
4 \section[PackedString]{Packed strings}
5
6 A non-weird/abstract interface to the wired-in @PackedString@ type.
7
8 \begin{code}
9 module PackedString (
10         PackedString(..),
11
12         packString,             -- :: [Char] -> PackedString
13         packCString,            -- :: _Addr  -> PackedString
14         packCBytes,             -- :: Int    -> _Addr -> PackedString
15
16         packStringST,           -- :: [Char] -> _ST s PackedString
17         packCBytesST,           -- :: Int    -> _Addr -> _ST s PackedString
18         packBytesForC,          -- :: [Char] -> _ByteArray Int
19         packBytesForCST,        -- :: [Char] -> _ST s (_ByteArray Int)
20
21 --NO:   packStringForC,
22         nilPS,                  -- :: PackedString
23         consPS,                 -- :: Char -> PackedString -> PackedString
24         byteArrayToPS,          -- :: _ByteArray Int -> PackedString
25         psToByteArray,          -- :: PackedString -> _ByteArray Int
26
27         unpackPS,               -- :: PackedString -> [Char]
28 --NO:   unpackPS#,
29         putPS,                  -- :: _FILE -> PackedString -> PrimIO ()
30         getPS,                  -- :: _FILE -> Int -> PrimIO PackedString
31
32          {- alt. names for packString, unpackPS -}
33         implode,                -- :: [Char] -> PackedString
34         explode,                -- :: PackedString -> [Char]
35
36         headPS,                 -- :: PackedString -> Char
37         tailPS,                 -- :: PackedString -> PackedString
38         nullPS,                 -- :: PackedString -> Bool
39         appendPS,               -- :: PackedString -> PackedString -> PackedString
40         lengthPS,               -- :: PackedString -> Int
41         indexPS,                -- :: PackedString -> Int -> Char
42         mapPS,                  -- :: (Char -> Char) -> PackedString -> PackedString
43         filterPS,               -- :: (Char -> Bool) -> PackedString -> PackedString
44         foldlPS,                -- :: (a -> Char -> a) -> a -> PackedString -> a 
45         foldrPS,                -- :: (Char -> a -> a) -> a -> PackedString -> a
46         takePS,                 -- :: Int -> PackedString -> PackedString
47         dropPS,                 -- :: Int -> PackedString -> PackedString
48         splitAtPS,              -- :: Int -> PackedString -> PackedString
49         takeWhilePS,            -- :: (Char -> Bool) -> PackedString -> PackedString
50         dropWhilePS,            -- :: (Char -> Bool) -> PackedString -> PackedString
51         spanPS,                 -- :: (Char -> Bool) -> PackedString -> (PackedString, PackedString)
52         breakPS,                -- :: (Char -> Bool) -> PackedString -> (PackedString, PackedString)
53         linesPS,                -- :: PackedString -> [PackedString]
54         wordsPS,                -- :: PackedString -> [PackedString]
55         reversePS,              -- :: PackedString -> PackedString
56         concatPS,               -- :: [PackedString] -> PackedString
57
58         substrPS,               -- :: PackedString -> Int -> Int -> PackedString
59
60         -- to make interface self-sufficient
61         _PackedString, -- abstract!
62         _FILE
63     ) where
64
65 import PS
66
67 type PackedString = _PackedString
68
69 packString      = _packString
70 packCString     = _packCString
71
72 packCBytes      = _packCBytes
73 --packStringForC        = _packStringForC
74 nilPS           = _nilPS
75 consPS          = _consPS
76 byteArrayToPS   = _byteArrayToPS
77 psToByteArray   = _psToByteArray
78
79 packStringST    = _packStringST
80 packCBytesST    = _packCBytesST
81 packBytesForC   = _packBytesForC
82 packBytesForCST = _packBytesForCST
83
84 unpackPS        = _unpackPS
85 putPS           = _putPS
86 getPS           = _getPS
87
88 implode         = _packString -- alt. names
89 explode         = _unpackPS
90
91 headPS          = _headPS
92 tailPS          = _tailPS
93 nullPS          = _nullPS
94 appendPS        = _appendPS
95 lengthPS        = _lengthPS
96 indexPS         = _indexPS
97 mapPS           = _mapPS
98 filterPS        = _filterPS
99 foldlPS         = _foldlPS
100 foldrPS         = _foldrPS
101 takePS          = _takePS
102 dropPS          = _dropPS
103 splitAtPS       = _splitAtPS
104 takeWhilePS     = _takeWhilePS
105 dropWhilePS     = _dropWhilePS
106 spanPS          = _spanPS
107 breakPS         = _breakPS
108 linesPS         = _linesPS
109 wordsPS         = _wordsPS
110 reversePS       = _reversePS
111 concatPS        = _concatPS
112
113 substrPS        = _substrPS
114 \end{code}