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
    Constructor | Description
    --- | ---
    `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
    Modifier and Type | Method | Description
    --- | --- | ---
    `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