-- 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.0.2


-- | 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
instance [safe] Eq Hash
instance [safe] Ord HpcPos
instance [safe] Eq HpcPos
instance [safe] Show HpcPos
instance [safe] Read HpcPos
instance [safe] Read Hash
instance [safe] Show Hash
instance [safe] Num Hash
instance [safe] HpcHash Int
instance [safe] HpcHash Integer
instance [safe] HpcHash Char
instance [safe] HpcHash Bool
instance [safe] HpcHash a => HpcHash [a]
instance [safe] (HpcHash a, HpcHash b) => HpcHash (a, b)
instance [safe] HpcHash 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 [safe] Eq Tix
instance [safe] Show Tix
instance [safe] Read Tix
instance [safe] Eq TixModule
instance [safe] Show TixModule
instance [safe] Read TixModule


-- | 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 [safe] Eq Mix
instance [safe] Read Mix
instance [safe] Show Mix
instance [safe] Ord BoxLabel
instance [safe] Eq BoxLabel
instance [safe] Show BoxLabel
instance [safe] Read BoxLabel
instance [safe] Ord CondBox
instance [safe] Eq CondBox
instance [safe] Show CondBox
instance [safe] Read CondBox
instance [safe] HpcHash BoxLabel
instance [safe] HpcHash CondBox

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