| Safe Haskell | None | 
|---|---|
| Language | Haskell2010 | 
FastString
Description
There are two principal string types used internally by GHC:
- A compact, hash-consed, representation of character strings.
 - Comparison is O(1), and you can get a 
Uniquefrom them. - Generated by 
fsLit. - Turn into 
SDocwithftext. 
- Pointer and size of a Latin-1 encoded string.
 - Practically no operations.
 - Outputing them is fast.
 - Generated by 
sLit. - Turn into 
SDocwithptext - Requires manual memory management. Improper use may lead to memory leaks or dangling pointers.
 - It assumes Latin-1 as the encoding, therefore it cannot represent arbitrary Unicode strings.
 
Use PtrString unless you want the facilities of FastString.
Synopsis
- bytesFS :: FastString -> ByteString
 - fastStringToByteString :: FastString -> ByteString
 - mkFastStringByteString :: ByteString -> FastString
 - fastZStringToByteString :: FastZString -> ByteString
 - unsafeMkByteString :: String -> ByteString
 - data FastZString
 - hPutFZS :: Handle -> FastZString -> IO ()
 - zString :: FastZString -> String
 - lengthFZS :: FastZString -> Int
 - data FastString = FastString {
- uniq :: !Int
 - n_chars :: !Int
 - fs_bs :: !ByteString
 - fs_zenc :: FastZString
 
 - fsLit :: String -> FastString
 - mkFastString :: String -> FastString
 - mkFastStringBytes :: Ptr Word8 -> Int -> FastString
 - mkFastStringByteList :: [Word8] -> FastString
 - mkFastStringForeignPtr :: Ptr Word8 -> ForeignPtr Word8 -> Int -> IO FastString
 - mkFastString# :: Addr# -> FastString
 - unpackFS :: FastString -> String
 - zEncodeFS :: FastString -> FastZString
 - uniqueOfFS :: FastString -> Int
 - lengthFS :: FastString -> Int
 - nullFS :: FastString -> Bool
 - appendFS :: FastString -> FastString -> FastString
 - headFS :: FastString -> Char
 - tailFS :: FastString -> FastString
 - concatFS :: [FastString] -> FastString
 - consFS :: Char -> FastString -> FastString
 - nilFS :: FastString
 - isUnderscoreFS :: FastString -> Bool
 - hPutFS :: Handle -> FastString -> IO ()
 - getFastStringTable :: IO [[[FastString]]]
 - getFastStringZEncCounter :: IO Int
 - data PtrString = PtrString !(Ptr Word8) !Int
 - sLit :: String -> PtrString
 - mkPtrString# :: Addr# -> PtrString
 - mkPtrString :: String -> PtrString
 - unpackPtrString :: PtrString -> String
 - lengthPS :: PtrString -> Int
 
ByteString
bytesFS :: FastString -> ByteString Source #
Gives the UTF-8 encoded bytes corresponding to a FastString
fastStringToByteString :: FastString -> ByteString Source #
Deprecated: Use bytesFS instead
mkFastStringByteString :: ByteString -> FastString Source #
Create a FastString from an existing ForeignPtr; the difference
 between this and mkFastStringBytes is that we don't have to copy
 the bytes if the string is new to the table.
FastZString
data FastZString Source #
Instances
| NFData FastZString Source # | |
Defined in FastString Methods rnf :: FastZString -> () #  | |
zString :: FastZString -> String Source #
lengthFZS :: FastZString -> Int Source #
FastStrings
data FastString Source #
A FastString is a UTF-8 encoded string together with a unique ID. All
FastStrings are stored in a global hashtable to support fast O(1)
comparison.
It is also associated with a lazy reference to the Z-encoding of this string which is used by the compiler internally.
Constructors
| FastString | |
Fields 
  | |
Instances
Construction
fsLit :: String -> FastString Source #
mkFastString :: String -> FastString Source #
Creates a UTF-8 encoded FastString from a String
mkFastStringBytes :: Ptr Word8 -> Int -> FastString Source #
mkFastStringByteList :: [Word8] -> FastString Source #
Creates a FastString from a UTF-8 encoded [Word8]
mkFastStringForeignPtr :: Ptr Word8 -> ForeignPtr Word8 -> Int -> IO FastString Source #
Create a FastString from an existing ForeignPtr; the difference
 between this and mkFastStringBytes is that we don't have to copy
 the bytes if the string is new to the table.
mkFastString# :: Addr# -> FastString Source #
Deconstruction
unpackFS :: FastString -> String Source #
Unpacks and decodes the FastString
Encoding
zEncodeFS :: FastString -> FastZString Source #
Returns a Z-encoded version of a FastString.  This might be the
 original, if it was already Z-encoded.  The first time this
 function is applied to a particular FastString, the results are
 memoized.
Operations
uniqueOfFS :: FastString -> Int Source #
lengthFS :: FastString -> Int Source #
Returns the length of the FastString in characters
nullFS :: FastString -> Bool Source #
Returns True if the FastString is empty
appendFS :: FastString -> FastString -> FastString Source #
headFS :: FastString -> Char Source #
tailFS :: FastString -> FastString Source #
concatFS :: [FastString] -> FastString Source #
consFS :: Char -> FastString -> FastString Source #
nilFS :: FastString Source #
isUnderscoreFS :: FastString -> Bool Source #
Outputing
hPutFS :: Handle -> FastString -> IO () Source #
Outputs a FastString with no decoding at all, that is, you
 get the actual bytes in the FastString written to the Handle.
Internal
getFastStringTable :: IO [[[FastString]]] Source #
PtrStrings
A PtrString is a pointer to some array of Latin-1 encoded chars.
Construction
mkPtrString :: String -> PtrString Source #
Deconstruction
unpackPtrString :: PtrString -> String Source #