diff --git a/src/dev/w1zzrd/asm/AsmAnnotation.java b/src/dev/w1zzrd/asm/AsmAnnotation.java new file mode 100644 index 0000000..990ad74 --- /dev/null +++ b/src/dev/w1zzrd/asm/AsmAnnotation.java @@ -0,0 +1,28 @@ +package dev.w1zzrd.asm; + +import com.sun.istack.internal.Nullable; + +import java.util.Map; + +public final class AsmAnnotation { + private final String annotationType; + private final Map entries; + + public AsmAnnotation(String annotationType, Map entries) { + this.annotationType = annotationType; + this.entries = entries; + } + + public String getAnnotationType() { + return annotationType; + } + + @Nullable + public T getEntry(String name, Class type) { + return hasEntry(name) ? (T)entries.get(name) : null; + } + + public boolean hasEntry(String name) { + return entries.containsKey(name); + } +} diff --git a/src/dev/w1zzrd/asm/Inject.java b/src/dev/w1zzrd/asm/Inject.java new file mode 100644 index 0000000..5e6a147 --- /dev/null +++ b/src/dev/w1zzrd/asm/Inject.java @@ -0,0 +1,10 @@ +package dev.w1zzrd.asm; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Retention(RetentionPolicy.RUNTIME) +@Target({ElementType.CONSTRUCTOR, ElementType.METHOD}) +public @interface Inject { } diff --git a/src/dev/w1zzrd/asm/InjectClass.java b/src/dev/w1zzrd/asm/InjectClass.java new file mode 100644 index 0000000..c5c2182 --- /dev/null +++ b/src/dev/w1zzrd/asm/InjectClass.java @@ -0,0 +1,13 @@ +package dev.w1zzrd.asm; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Retention(RetentionPolicy.RUNTIME) +@Target({ElementType.TYPE}) +public @interface InjectClass { + Class value(); + boolean injectInterfaces() default true; +}