diff --git a/src/main/java/com/falsepattern/lib/turboasm/BytePatternMatcher.java b/src/main/java/com/falsepattern/lib/turboasm/BytePatternMatcher.java index db2ae26..cc6838e 100644 --- a/src/main/java/com/falsepattern/lib/turboasm/BytePatternMatcher.java +++ b/src/main/java/com/falsepattern/lib/turboasm/BytePatternMatcher.java @@ -1,8 +1,11 @@ package com.falsepattern.lib.turboasm; +import org.jetbrains.annotations.ApiStatus; + import java.nio.charset.StandardCharsets; import java.util.Arrays; +@ApiStatus.AvailableSince("1.12.0") public class BytePatternMatcher { final Mode mode; // first byte -> matched patterns diff --git a/src/main/java/com/falsepattern/lib/turboasm/ClassHeaderMetadata.java b/src/main/java/com/falsepattern/lib/turboasm/ClassHeaderMetadata.java index 5699062..d585b1a 100644 --- a/src/main/java/com/falsepattern/lib/turboasm/ClassHeaderMetadata.java +++ b/src/main/java/com/falsepattern/lib/turboasm/ClassHeaderMetadata.java @@ -22,6 +22,7 @@ package com.falsepattern.lib.turboasm; +import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.Contract; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -50,6 +51,7 @@ public final class ClassHeaderMetadata implements FastClassAccessor { public final ConstantPoolEntryTypes @NotNull [] constantPoolEntryTypes; /** Approximately only half of the entries are utf-8, so this array can be used to iterate over them more quickly */ + @ApiStatus.AvailableSince("1.12.0") public final int @NotNull [] constantPoolUtf8EntryOffsets; public final int constantPoolEndOffset; @@ -57,10 +59,12 @@ public final class ClassHeaderMetadata implements FastClassAccessor { public final int thisClassIndex; public final int superClassIndex; public final int interfacesCount; + @ApiStatus.AvailableSince("1.12.0") public final int @NotNull [] interfaceIndices; public final @NotNull String binaryThisName; public final @Nullable String binarySuperName; /** List is unmodifiable */ + @ApiStatus.AvailableSince("1.12.0") public final @NotNull List<@NotNull String> binaryInterfaceNames; /** @@ -227,6 +231,7 @@ public final class ClassHeaderMetadata implements FastClassAccessor { /** The value of the interfaces_count item gives the number of direct superinterfaces of this class or interface type */ public static final int pastCpInterfacesCountU16 = pastCpSuperClassU16 + 2; + @ApiStatus.AvailableSince("1.12.0") public static final int pastCpInterfacesList = pastCpInterfacesCountU16 + 2; } @@ -327,6 +332,7 @@ public final class ClassHeaderMetadata implements FastClassAccessor { * @param matcher A configured byte matcher with patterns to search for. * @return {@code true} if there is a match for at least one constant pool entry. */ + @ApiStatus.AvailableSince("1.12.0") public boolean matchesBytes(final BytePatternMatcher matcher) { for (final int offset : constantPoolUtf8EntryOffsets) { // first byte is entry type, second and third bytes are length @@ -341,7 +347,11 @@ public final class ClassHeaderMetadata implements FastClassAccessor { return false; } - /** @deprecated This method is very slow, use {@link #matchesBytes} instead */ + /** + * @deprecated since 1.12.0 + *

+ * This method is very slow, use {@link #matchesBytes} instead + * */ @Deprecated public static boolean hasSubstring(final byte @Nullable [] classBytes, final byte @NotNull [] substring) { if (classBytes == null) { diff --git a/src/main/java/com/falsepattern/lib/turboasm/FastClassAccessor.java b/src/main/java/com/falsepattern/lib/turboasm/FastClassAccessor.java index e79cceb..4c9185c 100644 --- a/src/main/java/com/falsepattern/lib/turboasm/FastClassAccessor.java +++ b/src/main/java/com/falsepattern/lib/turboasm/FastClassAccessor.java @@ -22,6 +22,7 @@ package com.falsepattern.lib.turboasm; +import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.objectweb.asm.Opcodes; @@ -55,6 +56,7 @@ public interface FastClassAccessor { @Nullable String binarySuperName(); /** Binary (slash-separated packages) names of the implemented interfaces, list is unmodifiable */ + @ApiStatus.AvailableSince("1.12.0") @NotNull List<@NotNull String> binaryInterfaceNames();