llvm-pretty-0.14.0.0: src/Text/LLVM/Lens.hs
{-# LANGUAGE TemplateHaskell #-}
module Text.LLVM.Lens where
import Text.LLVM
import Lens.Micro.TH
import Lens.Micro
import Language.Haskell.TH.Syntax (mkName, nameBase)
concat <$> mapM (makeLensesWith (lensRules & lensField .~ (\_ _ n -> [TopName $ mkName $ nameBase n ++ "Lens"])))
[ ''Module
, ''LayoutSpec
, ''TypeDecl
, ''GlobalAlias
, ''ConstExpr'
, ''Type'
, ''Mangling
, ''NamedMd
, ''Value'
, ''BlockLabel
, ''UnnamedMd
, ''Typed
, ''Global
, ''Declare
, ''Clause'
, ''FunAttr
, ''GlobalAttrs
, ''BasicBlock'
, ''Stmt'
, ''Linkage
, ''DebugLoc'
, ''DebugInfo'
, ''DIFile
, ''DISubrange'
, ''DIBasicType'
, ''DIExpression
, ''DISubprogram'
, ''DISubroutineType'
, ''DILocalVariable'
, ''DIGlobalVariableExpression'
, ''DIGlobalVariable'
, ''DICompileUnit'
, ''DICompositeType'
, ''DIDerivedType'
, ''DILexicalBlock'
, ''DILexicalBlockFile'
, ''DIArgList'
, ''Instr'
, ''ValMd'
, ''ConvOp
, ''BitOp
, ''ArithOp
, ''FCmpOp
, ''ICmpOp
, ''GC
, ''Define
, ''PrimType
]