blob: f08dba3208d5500db905e0d56d72461db3a66cc8 [file] [log] [blame] [raw]
package li.cil.oc.common.asm;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* This interface is kind of the opposite to FML's Optional annotations.
* <p/>
* Instead of stripping interfaces if they are not present, it will inject them
* when they <em>are</em> present. This helps with some strange cases where
* stripping does not work as it should.
*/
public final class Injectable {
/**
* Not constructable.
*/
private Injectable() {
}
/**
* Mark a list of interfaces as injectable.
*/
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface InterfaceList {
public Interface[] value();
}
/**
* Used to inject optional interfaces.
*/
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface Interface {
/**
* The fully qualified name of the interface to inject.
*/
public String value();
/**
* The modid that is required to be present for the injecting to occur.
* <p/>
* Note that injection will not occur if the interface is not fully
* implemented.
*/
public String modid();
}
}