h2jvm
Safe HaskellNone
LanguageGHC2021

JVM.Data.Abstract.Builder

Description

Provides a monadic interface for building class files in a high-level format.

Synopsis

Documentation

data ClassBuilder (m :: k) a where Source #

Constructors

ModifyClass :: forall {k} (m :: k). (ClassFile -> ClassFile) -> ClassBuilder m () 
GetClass :: forall {k} (m :: k). ClassBuilder m ClassFile 

Instances

Instances details
type DispatchOf (ClassBuilder :: (Type -> Type) -> Type -> Type) Source # 
Instance details

Defined in JVM.Data.Abstract.Builder

type DispatchOf (ClassBuilder :: (Type -> Type) -> Type -> Type) = 'Dynamic

getClass :: forall {k} (es :: [Effect]). (HasCallStack, (ClassBuilder :: (Type -> Type) -> Type -> Type) :> es) => Eff es ClassFile Source #

Perform the operation GetClass.

modifyClass :: forall {k} (es :: [Effect]). (HasCallStack, (ClassBuilder :: (Type -> Type) -> Type -> Type) :> es) => (ClassFile -> ClassFile) -> Eff es () Source #

Perform the operation ModifyClass.

addAccessFlag :: forall (r :: [Effect]). (ClassBuilder :: (Type -> Type) -> Type -> Type) :> r => ClassAccessFlag -> Eff r () Source #

setName :: forall (r :: [Effect]). (ClassBuilder :: (Type -> Type) -> Type -> Type) :> r => QualifiedClassName -> Eff r () Source #

getName :: forall (r :: [Effect]). (ClassBuilder :: (Type -> Type) -> Type -> Type) :> r => Eff r QualifiedClassName Source #

setVersion :: forall (r :: [Effect]). (ClassBuilder :: (Type -> Type) -> Type -> Type) :> r => JVMVersion -> Eff r () Source #

setSuperClass :: forall (r :: [Effect]). (ClassBuilder :: (Type -> Type) -> Type -> Type) :> r => QualifiedClassName -> Eff r () Source #

addInterface :: forall (r :: [Effect]). (ClassBuilder :: (Type -> Type) -> Type -> Type) :> r => QualifiedClassName -> Eff r () Source #

addField :: forall (r :: [Effect]). (ClassBuilder :: (Type -> Type) -> Type -> Type) :> r => ClassFileField -> Eff r () Source #

addMethod :: forall (r :: [Effect]). (ClassBuilder :: (Type -> Type) -> Type -> Type) :> r => ClassFileMethod -> Eff r () Source #

addAttribute :: forall (r :: [Effect]). (ClassBuilder :: (Type -> Type) -> Type -> Type) :> r => ClassFileAttribute -> Eff r () Source #

addBootstrapMethod :: forall (r :: [Effect]). (ClassBuilder :: (Type -> Type) -> Type -> Type) :> r => BootstrapMethod -> Eff r () Source #

classBuilderToState :: forall (r :: [Effect]) a. State ClassFile :> r => Eff ((ClassBuilder :: (Type -> Type) -> Type -> Type) ': r) a -> Eff r a Source #

runClassBuilder :: forall (r :: [(Type -> Type) -> Type -> Type]) a. QualifiedClassName -> JVMVersion -> Eff ((ClassBuilder :: (Type -> Type) -> Type -> Type) ': r) a -> Eff r (ClassFile, a) Source #