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


-- | 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:colunm</i>
fromHpcPos :: HpcPos -> (Int, Int, Int, Int)

-- | <a>toHpcPos</a> implodes to HpcPos, from
--   <i>line:column</i>-<i>line:colunm</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 HpcPos
instance [safe] Ord HpcPos
instance [safe] Eq Hash
instance [safe] HpcHash HpcPos
instance [safe] (HpcHash a, HpcHash b) => HpcHash (a, b)
instance [safe] HpcHash a => HpcHash [a]
instance [safe] HpcHash Bool
instance [safe] HpcHash Char
instance [safe] HpcHash Integer
instance [safe] HpcHash Int
instance [safe] Num Hash
instance [safe] Show Hash
instance [safe] Read Hash
instance [safe] Read HpcPos
instance [safe] Show 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 imformation 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] Read TixModule
instance [safe] Show TixModule
instance [safe] Eq TixModule
instance [safe] Read Tix
instance [safe] Show Tix
instance [safe] Eq Tix


-- | 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:colunm</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 Read CondBox
instance Show CondBox
instance Eq CondBox
instance Ord CondBox
instance Read BoxLabel
instance Show BoxLabel
instance Eq BoxLabel
instance Ord BoxLabel
instance Show Mix
instance Read Mix
instance HpcHash CondBox
instance HpcHash BoxLabel

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