ghc-lib-parser-0.20190523: The GHC API, decoupled from GHC versions

Safe HaskellNone
LanguageHaskell2010

FastString

Description

There are two principal string types used internally by GHC:

FastString
  • A compact, hash-consed, representation of character strings.
  • Comparison is O(1), and you can get a Unique from them.
  • Generated by fsLit .
  • Turn into SDoc with ftext .
PtrString
  • Pointer and size of a Latin-1 encoded string.
  • Practically no operations.
  • Outputing them is fast.
  • Generated by sLit .
  • Turn into SDoc with ptext
  • 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

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.

fastZStringToByteString :: FastZString -> ByteString Source #

unsafeMkByteString :: String -> ByteString Source #

FastZString

data FastZString Source #

Instances
Instance details

Defined in FastString

Methods

rnf :: FastZString -> () #

hPutFZS :: Handle -> FastZString -> IO () Source #

zString :: FastZString -> String Source #

lengthFZS :: FastZString -> Int Source #

FastStrings

data FastString Source #

A FastString is an array of bytes, hashed to support fast O(1) comparison. It is also associated with a character encoding, so that we know how to convert a FastString to the local encoding, or to the Z-encoding used by the compiler internally.

FastString s support a memoized conversion to the Z-encoding via zEncodeFS.

Constructors

Instances
Instance details

Defined in FastString

Instance details

Defined in FastString

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> FastString -> c FastString #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c FastString #

toConstr :: FastString -> Constr #

dataTypeOf :: FastString -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c FastString) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c FastString) #

gmapT :: (forall b. Data b => b -> b) -> FastString -> FastString #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> FastString -> r #

gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> FastString -> r #

gmapQ :: (forall d. Data d => d -> u) -> FastString -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> FastString -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> FastString -> m FastString #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> FastString -> m FastString #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> FastString -> m FastString #

Instance details

Defined in FastString

Instance details

Defined in FastString

Instance details

Defined in FastString

Instance details

Defined in FastString

Instance details

Defined in Outputable

Instance details

Defined in Unique

Instance details

Defined in Binary

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 #

hasZEncoding :: FastString -> Bool Source #

Returns True if this FastString is not Z-encoded but already has a Z-encoding cached (used in producing stats).

PtrStrings

data PtrString Source #

A PtrString is a pointer to some array of Latin-1 encoded chars.

Constructors

Construction

sLit :: String -> PtrString Source #

mkPtrString# :: Addr# -> PtrString Source #

Wrap an unboxed address into a PtrString .

mkPtrString :: String -> PtrString Source #

Encode a String into a newly allocated PtrString using Latin-1 encoding. The original string must not contain non-Latin-1 characters (above codepoint 0xff).

Deconstruction

unpackPtrString :: PtrString -> String Source #

Decode a PtrString back into a String using Latin-1 encoding. This does not free the memory associated with PtrString .

Operations

lengthPS :: PtrString -> Int Source #

Return the length of a PtrString

AltStyle によって変換されたページ (->オリジナル) /