language-cil-0.3.1: src/Language/Cil/Analysis.hs
-- |
-- Analysis functions over the Cil AST.
--
module Language.Cil.Analysis (
opcodes
) where
import Language.Cil.Syntax
class Ast a where
-- A concatenated list of all opcodes.
opcodes :: a -> [OpCode]
instance Ast Assembly where
opcodes (Assembly _ _ td) = concatMap opcodes td
instance Ast TypeDef where
opcodes (Class _ _ _ _ cd) = concatMap opcodes cd
opcodes (GenericClass _ _ _ cd) = concatMap opcodes cd
instance Ast ClassDecl where
opcodes (FieldDef _) = []
opcodes (MethodDef md) = opcodes md
opcodes (TypeDef td) = opcodes td
instance Ast MethodDef where
opcodes (Constructor _ _ _ md) = [ o | OpCode o <- md ]
opcodes (Method _ _ _ _ md) = [ o | OpCode o <- md ]