-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/


-- | Code Coverage Library for Haskell
--   
--   This package provides the code coverage library for Haskell.
--   
--   See <a>http://www.haskell.org/haskellwiki/Haskell_program_coverage</a>
--   for more information.
@package hpc
@version 0.6.2.0


-- | Minor utilities for the HPC tools.
module Trace.Hpc.Util

-- | <a>HpcPos</a> is an Hpc local rendition of a Span.
data HpcPos

-- | <a>fromHpcPos</a> explodes the HpcPos into
--   <i>line:column</i>-<i>line:column</i>
fromHpcPos :: HpcPos -> (Int, Int, Int, Int)

-- | <a>toHpcPos</a> implodes to HpcPos, from
--   <i>line:column</i>-<i>line:column</i>
toHpcPos :: (Int, Int, Int, Int) -> HpcPos

-- | Predicate determining whether the first argument is inside the second
--   argument.
insideHpcPos :: HpcPos -> HpcPos -> Bool
class HpcHash a
toHash :: HpcHash a => a -> Hash
data Hash
catchIO :: IO a -> (IOException -> IO a) -> IO a

-- | Read a file strictly, as opposed to how <a>readFile</a> does it using
--   lazy IO, but also disregard system locale and assume that the file is
--   encoded in UTF-8. Haskell source files are expected to be encoded in
--   UTF-8 by GHC.
readFileUtf8 :: FilePath -> IO String

-- | Write file in UTF-8 encoding. Parent directory will be created if
--   missing.
writeFileUtf8 :: FilePath -> String -> IO ()
instance GHC.Classes.Ord Trace.Hpc.Util.HpcPos
instance GHC.Classes.Eq Trace.Hpc.Util.HpcPos
instance GHC.Classes.Eq Trace.Hpc.Util.Hash
instance GHC.Generics.Generic Trace.Hpc.Util.Hash
instance Trace.Hpc.Util.HpcHash GHC.Types.Int
instance Trace.Hpc.Util.HpcHash GHC.Num.Integer.Integer
instance Trace.Hpc.Util.HpcHash GHC.Types.Char
instance Trace.Hpc.Util.HpcHash GHC.Types.Bool
instance Trace.Hpc.Util.HpcHash a => Trace.Hpc.Util.HpcHash [a]
instance (Trace.Hpc.Util.HpcHash a, Trace.Hpc.Util.HpcHash b) => Trace.Hpc.Util.HpcHash (a, b)
instance Trace.Hpc.Util.HpcHash Trace.Hpc.Util.HpcPos
instance Control.DeepSeq.NFData Trace.Hpc.Util.Hash
instance GHC.Read.Read Trace.Hpc.Util.Hash
instance GHC.Show.Show Trace.Hpc.Util.Hash
instance GHC.Num.Num Trace.Hpc.Util.Hash
instance GHC.Show.Show Trace.Hpc.Util.HpcPos
instance GHC.Read.Read Trace.Hpc.Util.HpcPos


-- | Datatypes and file-access routines for the tick data file
--   (<tt>.tix</tt>) used by Hpc.
module Trace.Hpc.Tix

-- | <a>Tix</a> is the storage format for our dynamic information about
--   what boxes are ticked.
data Tix
Tix :: [TixModule] -> Tix
data TixModule
TixModule :: String -> Hash -> Int -> [Integer] -> TixModule
tixModuleName :: TixModule -> String
tixModuleHash :: TixModule -> Hash
tixModuleTixs :: TixModule -> [Integer]

-- | Read a <tt>.tix</tt> File.
readTix :: String -> IO (Maybe Tix)

-- | Write a <tt>.tix</tt> File.
writeTix :: String -> Tix -> IO ()

-- | <tt>getTixFullName</tt> takes a binary or <tt>.tix</tt>-file name, and
--   normalizes it into a <tt>.tix</tt>-file name.
getTixFileName :: String -> String
instance GHC.Classes.Eq Trace.Hpc.Tix.TixModule
instance GHC.Show.Show Trace.Hpc.Tix.TixModule
instance GHC.Read.Read Trace.Hpc.Tix.TixModule
instance GHC.Classes.Eq Trace.Hpc.Tix.Tix
instance GHC.Show.Show Trace.Hpc.Tix.Tix
instance GHC.Read.Read Trace.Hpc.Tix.Tix
instance GHC.Generics.Generic Trace.Hpc.Tix.Tix
instance GHC.Generics.Generic Trace.Hpc.Tix.TixModule
instance Control.DeepSeq.NFData Trace.Hpc.Tix.Tix
instance Control.DeepSeq.NFData Trace.Hpc.Tix.TixModule

module Trace.Hpc.Reflect
clearTix :: IO ()
examineTix :: IO Tix
updateTix :: Tix -> IO ()


-- | Datatypes and file-access routines for the per-module (<tt>.mix</tt>)
--   indexes used by Hpc.
module Trace.Hpc.Mix

-- | <a>Mix</a> is the information about a modules static properties, like
--   location of Tix's in a file.
--   
--   Tab stops are the size of a tab in the provided <i>line:column</i>
--   values.
--   
--   <ul>
--   <li>In GHC, this is 1 (a tab is just a character)</li>
--   <li>With <tt>hpc-tracer</tt>, this is 8 (a tab represents several
--   spaces).</li>
--   </ul>
data Mix
Mix :: FilePath -> UTCTime -> Hash -> Int -> [MixEntry] -> Mix
type MixEntry = (HpcPos, BoxLabel)
data BoxLabel
ExpBox :: Bool -> BoxLabel
TopLevelBox :: [String] -> BoxLabel
LocalBox :: [String] -> BoxLabel
BinBox :: CondBox -> Bool -> BoxLabel
data CondBox
GuardBinBox :: CondBox
CondBinBox :: CondBox
QualBinBox :: CondBox

-- | Create is mix file.
mixCreate :: String -> String -> Mix -> IO ()

-- | Read a mix file.
readMix :: [String] -> Either String TixModule -> IO Mix
createMixEntryDom :: Show a => [(HpcPos, a)] -> [MixEntryDom [a]]
type MixEntryDom a = Tree (HpcPos, a)
instance GHC.Classes.Ord Trace.Hpc.Mix.CondBox
instance GHC.Classes.Eq Trace.Hpc.Mix.CondBox
instance GHC.Show.Show Trace.Hpc.Mix.CondBox
instance GHC.Read.Read Trace.Hpc.Mix.CondBox
instance GHC.Classes.Ord Trace.Hpc.Mix.BoxLabel
instance GHC.Classes.Eq Trace.Hpc.Mix.BoxLabel
instance GHC.Show.Show Trace.Hpc.Mix.BoxLabel
instance GHC.Read.Read Trace.Hpc.Mix.BoxLabel
instance GHC.Classes.Eq Trace.Hpc.Mix.Mix
instance GHC.Read.Read Trace.Hpc.Mix.Mix
instance GHC.Show.Show Trace.Hpc.Mix.Mix
instance Trace.Hpc.Util.HpcHash Trace.Hpc.Mix.BoxLabel
instance Trace.Hpc.Util.HpcHash Trace.Hpc.Mix.CondBox
