-- | -- Analysis functions over the Cil AST. -- module Language.Cil.Analysis ( instructions ) where import Language.Cil.Syntax class Ast a where -- A concatenated list of all instructions. instructions :: a -> [Instr] instance Ast Assembly where instructions (Assembly _ _ td) = concatMap instructions td instance Ast TypeDef where instructions (Class _ _ _ _ cd) = concatMap instructions cd instructions (GenericClass _ _ _ cd) = concatMap instructions cd instance Ast ClassDecl where instructions (FieldDef _) = [] instructions (MethodDef md) = instructions md instructions (TypeDef td) = instructions td instance Ast MethodDef where instructions (Constructor _ _ _ md) = [ i | Instr i <- md ] instructions (Method _ _ _ _ md) = [ i | Instr i <- md ]