Package org.spongepowered.asm.mixin.injection.callback

## Class CallbackInjector

- java.lang.Object
- - org.spongepowered.asm.mixin.injection.code.Injector
  - - org.spongepowered.asm.mixin.injection.callback.CallbackInjector

    public class CallbackInjector
    extends Injector

This class is responsible for generating the bytecode for injected callbacks, for details of usage see `@Inject`.

### Nested Class Summary

### Nested classes/interfaces inherited from class org.spongepowered.asm.mixin.injection.code.Injector

`Injector.InjectorData, Injector.TargetNode`

### Field Summary

### Fields inherited from class org.spongepowered.asm.mixin.injection.code.Injector

`annotationType, classNode, info, isInterface, isStatic, logger, methodArgs, methodNode, returnType`

### Constructor Summary

Constructors
`CallbackInjector​(InjectionInfo info, boolean cancellable, LocalCapture localCapture, java.lang.String identifier)` Make a new CallbackInjector with the supplied args

### Method Summary

All Methods Instance Methods Concrete Methods
`protected void` `addTargetNode​(InjectorTarget injectorTarget, java.util.List<InjectionNodes.InjectionNode> myNodes, org.objectweb.asm.tree.AbstractInsnNode node, java.util.Set<InjectionPoint> nominators)`
`protected void` `inject​(Target target, InjectionNodes.InjectionNode node)`
`protected void` `injectCancellationCode​(org.spongepowered.asm.mixin.injection.callback.CallbackInjector.Callback callback)` if (e.isCancelled()) return e.getReturnValue();
`protected void` `injectReturnCode​(org.spongepowered.asm.mixin.injection.callback.CallbackInjector.Callback callback)` Inject the appropriate return code for the method type
`protected void` `instanceCallbackInfo​(org.spongepowered.asm.mixin.injection.callback.CallbackInjector.Callback callback, java.lang.String id, java.lang.String desc, boolean store)`
`protected boolean` `isStatic()` Explicit to avoid creation of synthetic accessor
`protected void` `preInject​(Target target, InjectionNodes.InjectionNode node)`
`protected void` `sanityCheck​(Target target, java.util.List<InjectionPoint> injectionPoints)`

### Methods inherited from class org.spongepowered.asm.mixin.injection.code.Injector

`addTargetNode, canCoerce, canCoerce, canCoerce, checkCoerce, checkTargetForNode, checkTargetModifiers, find, findTargetNodes, inject, invokeHandler, invokeHandler, invokeHandlerWithArgs, invokeHandlerWithArgs, postInject, preInject, pushArgs, pushArgs, storeArgs, storeArgs, storeArgs, storeArgs, throwException, toString, validateParams`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

### Constructor Detail

#### CallbackInjector

    public CallbackInjector​(InjectionInfo info,
                            boolean cancellable,
                            LocalCapture localCapture,
                            java.lang.String identifier)

Make a new CallbackInjector with the supplied args

Parameters:
  `info` - information about this injector
  `cancellable` - True if injections performed by this injector should be cancellable
  `localCapture` - Local variable capture behaviour

### Method Detail

#### sanityCheck

    protected void sanityCheck​(Target target,
                               java.util.List<InjectionPoint> injectionPoints)

Overrides:
  `sanityCheck` in class `Injector`

#### addTargetNode

    protected void addTargetNode​(InjectorTarget injectorTarget,
                                 java.util.List<InjectionNodes.InjectionNode> myNodes,
                                 org.objectweb.asm.tree.AbstractInsnNode node,
                                 java.util.Set<InjectionPoint> nominators)

Overrides:
  `addTargetNode` in class `Injector`

#### preInject

    protected void preInject​(Target target,
                             InjectionNodes.InjectionNode node)

Overrides:
  `preInject` in class `Injector`

#### inject

    protected void inject​(Target target,
                          InjectionNodes.InjectionNode node)

Specified by:
  `inject` in class `Injector`

#### instanceCallbackInfo

    protected void instanceCallbackInfo​(org.spongepowered.asm.mixin.injection.callback.CallbackInjector.Callback callback,
                                        java.lang.String id,
                                        java.lang.String desc,
                                        boolean store)

Parameters:
  `callback` - callback handle
  `id` - callback id
  `desc` - constructor descriptor
  `store` - true if storing in a local, false if this is happening at an invoke

#### injectCancellationCode

    protected void injectCancellationCode​(org.spongepowered.asm.mixin.injection.callback.CallbackInjector.Callback callback)

if (e.isCancelled()) return e.getReturnValue();

Parameters:
  `callback` - callback handle

#### injectReturnCode

    protected void injectReturnCode​(org.spongepowered.asm.mixin.injection.callback.CallbackInjector.Callback callback)

Inject the appropriate return code for the method type

Parameters:
  `callback` - callback handle

#### isStatic

    protected boolean isStatic()

Explicit to avoid creation of synthetic accessor

Returns:
  true if the target method is static