All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.github.dmlloyd.classfile.Attributes Maven / Gradle / Ivy

/*
 * Copyright (c) 2022, Oracle and/or its affiliates. All rights reserved.
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 *
 * This code is free software; you can redistribute it and/or modify it
 * under the terms of the GNU General Public License version 2 only, as
 * published by the Free Software Foundation.  Oracle designates this
 * particular file as subject to the "Classpath" exception as provided
 * by Oracle in the LICENSE file that accompanied this code.
 *
 * This code is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
 * version 2 for more details (a copy is included in the LICENSE file that
 * accompanied this code).
 *
 * You should have received a copy of the GNU General Public License version
 * 2 along with this work; if not, write to the Free Software Foundation,
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
 *
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
 * or visit www.oracle.com if you need additional information or have any
 * questions.
 */
package io.github.dmlloyd.classfile;

import io.github.dmlloyd.classfile.AttributeMapper.AttributeStability;
import io.github.dmlloyd.classfile.attribute.*;
import io.github.dmlloyd.classfile.impl.AbstractAttributeMapper.*;
import io.github.dmlloyd.classfile.extras.PreviewFeature;

/**
 * Attribute mappers for standard classfile attributes.
 * 

* Unless otherwise specified, mappers returned by each method * do not permit multiple attribute instances in a given location. *

* The most stable {@link AttributeStability#STATELESS STATELESS} mappers are: *

    *
  • {@link #deprecated()} *
  • {@link #moduleResolution()} *
  • {@link #sourceDebugExtension()} *
  • {@link #synthetic()} *
* * The mappers with {@link AttributeStability#CP_REFS CP_REFS} stability are: *
    *
  • {@link #annotationDefault()} *
  • {@link #bootstrapMethods()} *
  • {@link #code()} *
  • {@link #compilationId()} *
  • {@link #constantValue()} *
  • {@link #enclosingMethod()} *
  • {@link #exceptions()} *
  • {@link #innerClasses()} *
  • {@link #methodParameters()} *
  • {@link #module()} *
  • {@link #moduleHashes()} *
  • {@link #moduleMainClass()} *
  • {@link #modulePackages()} *
  • {@link #moduleTarget()} *
  • {@link #nestHost()} *
  • {@link #nestMembers()} *
  • {@link #permittedSubclasses()} *
  • {@link #record()} *
  • {@link #runtimeInvisibleAnnotations()} *
  • {@link #runtimeInvisibleParameterAnnotations()} *
  • {@link #runtimeVisibleAnnotations()} *
  • {@link #runtimeVisibleParameterAnnotations()} *
  • {@link #signature()} *
  • {@link #sourceFile()} *
  • {@link #sourceId()} *
* * The mappers with {@link AttributeStability#LABELS LABELS} stability are: *
    *
  • {@link #characterRangeTable()} *
  • {@link #lineNumberTable()} *
  • {@link #localVariableTable()} *
  • {@link #localVariableTypeTable()} *
* * The {@link AttributeStability#UNSTABLE UNSTABLE} mappers are: *
    *
  • {@link #runtimeInvisibleTypeAnnotations()} *
  • {@link #runtimeVisibleTypeAnnotations()} *
* * @see AttributeMapper * * @since 22 */ @PreviewFeature(feature = PreviewFeature.Feature.CLASSFILE_API) public final class Attributes { /** AnnotationDefault */ public static final String NAME_ANNOTATION_DEFAULT = "AnnotationDefault"; /** BootstrapMethods */ public static final String NAME_BOOTSTRAP_METHODS = "BootstrapMethods"; /** CharacterRangeTable */ public static final String NAME_CHARACTER_RANGE_TABLE = "CharacterRangeTable"; /** Code */ public static final String NAME_CODE = "Code"; /** CompilationID */ public static final String NAME_COMPILATION_ID = "CompilationID"; /** ConstantValue */ public static final String NAME_CONSTANT_VALUE = "ConstantValue"; /** Deprecated */ public static final String NAME_DEPRECATED = "Deprecated"; /** EnclosingMethod */ public static final String NAME_ENCLOSING_METHOD = "EnclosingMethod"; /** Exceptions */ public static final String NAME_EXCEPTIONS = "Exceptions"; /** InnerClasses */ public static final String NAME_INNER_CLASSES = "InnerClasses"; /** LineNumberTable */ public static final String NAME_LINE_NUMBER_TABLE = "LineNumberTable"; /** LocalVariableTable */ public static final String NAME_LOCAL_VARIABLE_TABLE = "LocalVariableTable"; /** LocalVariableTypeTable */ public static final String NAME_LOCAL_VARIABLE_TYPE_TABLE = "LocalVariableTypeTable"; /** MethodParameters */ public static final String NAME_METHOD_PARAMETERS = "MethodParameters"; /** Module */ public static final String NAME_MODULE = "Module"; /** ModuleHashes */ public static final String NAME_MODULE_HASHES = "ModuleHashes"; /** ModuleMainClass */ public static final String NAME_MODULE_MAIN_CLASS = "ModuleMainClass"; /** ModulePackages */ public static final String NAME_MODULE_PACKAGES = "ModulePackages"; /** ModuleResolution */ public static final String NAME_MODULE_RESOLUTION = "ModuleResolution"; /** ModuleTarget */ public static final String NAME_MODULE_TARGET = "ModuleTarget"; /** NestHost */ public static final String NAME_NEST_HOST = "NestHost"; /** NestMembers */ public static final String NAME_NEST_MEMBERS = "NestMembers"; /** PermittedSubclasses */ public static final String NAME_PERMITTED_SUBCLASSES = "PermittedSubclasses"; /** Record */ public static final String NAME_RECORD = "Record"; /** RuntimeInvisibleAnnotations */ public static final String NAME_RUNTIME_INVISIBLE_ANNOTATIONS = "RuntimeInvisibleAnnotations"; /** RuntimeInvisibleParameterAnnotations */ public static final String NAME_RUNTIME_INVISIBLE_PARAMETER_ANNOTATIONS = "RuntimeInvisibleParameterAnnotations"; /** RuntimeInvisibleTypeAnnotations */ public static final String NAME_RUNTIME_INVISIBLE_TYPE_ANNOTATIONS = "RuntimeInvisibleTypeAnnotations"; /** RuntimeVisibleAnnotations */ public static final String NAME_RUNTIME_VISIBLE_ANNOTATIONS = "RuntimeVisibleAnnotations"; /** RuntimeVisibleParameterAnnotations */ public static final String NAME_RUNTIME_VISIBLE_PARAMETER_ANNOTATIONS = "RuntimeVisibleParameterAnnotations"; /** RuntimeVisibleTypeAnnotations */ public static final String NAME_RUNTIME_VISIBLE_TYPE_ANNOTATIONS = "RuntimeVisibleTypeAnnotations"; /** Signature */ public static final String NAME_SIGNATURE = "Signature"; /** SourceDebugExtension */ public static final String NAME_SOURCE_DEBUG_EXTENSION = "SourceDebugExtension"; /** SourceFile */ public static final String NAME_SOURCE_FILE = "SourceFile"; /** SourceID */ public static final String NAME_SOURCE_ID = "SourceID"; /** StackMapTable */ public static final String NAME_STACK_MAP_TABLE = "StackMapTable"; /** Synthetic */ public static final String NAME_SYNTHETIC = "Synthetic"; private Attributes() { } /** * {@return Attribute mapper for the {@code AnnotationDefault} attribute} * @since 23 */ public static AttributeMapper annotationDefault() { return AnnotationDefaultMapper.INSTANCE; } /** * {@return Attribute mapper for the {@code BootstrapMethods} attribute} * @since 23 */ public static AttributeMapper bootstrapMethods() { return BootstrapMethodsMapper.INSTANCE; } /** * {@return Attribute mapper for the {@code CharacterRangeTable} attribute} * The mapper permits multiple instances in a given location. * @since 23 */ public static AttributeMapper characterRangeTable() { return CharacterRangeTableMapper.INSTANCE; } /** * {@return Attribute mapper for the {@code Code} attribute} * @since 23 */ public static AttributeMapper code() { return CodeMapper.INSTANCE; } /** * {@return Attribute mapper for the {@code CompilationID} attribute} * @since 23 */ public static AttributeMapper compilationId() { return CompilationIDMapper.INSTANCE; } /** * {@return Attribute mapper for the {@code ConstantValue} attribute} * @since 23 */ public static AttributeMapper constantValue() { return ConstantValueMapper.INSTANCE; } /** * {@return Attribute mapper for the {@code Deprecated} attribute} * The mapper permits multiple instances in a given location. * @since 23 */ public static AttributeMapper deprecated() { return DeprecatedMapper.INSTANCE; } /** * {@return Attribute mapper for the {@code EnclosingMethod} attribute} * @since 23 */ public static AttributeMapper enclosingMethod() { return EnclosingMethodMapper.INSTANCE; } /** * {@return Attribute mapper for the {@code Exceptions} attribute} * @since 23 */ public static AttributeMapper exceptions() { return ExceptionsMapper.INSTANCE; } /** * {@return Attribute mapper for the {@code InnerClasses} attribute} * @since 23 */ public static AttributeMapper innerClasses() { return InnerClassesMapper.INSTANCE; } /** * {@return Attribute mapper for the {@code LineNumberTable} attribute} * The mapper permits multiple instances in a given location. * @since 23 */ public static AttributeMapper lineNumberTable() { return LineNumberTableMapper.INSTANCE; } /** * {@return Attribute mapper for the {@code LocalVariableTable} attribute} * The mapper permits multiple instances in a given location. * @since 23 */ public static AttributeMapper localVariableTable() { return LocalVariableTableMapper.INSTANCE; } /** * {@return Attribute mapper for the {@code LocalVariableTypeTable} attribute} * The mapper permits multiple instances in a given location. * @since 23 */ public static AttributeMapper localVariableTypeTable() { return LocalVariableTypeTableMapper.INSTANCE; } /** * {@return Attribute mapper for the {@code MethodParameters} attribute} * @since 23 */ public static AttributeMapper methodParameters() { return MethodParametersMapper.INSTANCE; } /** * {@return Attribute mapper for the {@code Module} attribute} * @since 23 */ public static AttributeMapper module() { return ModuleMapper.INSTANCE; } /** * {@return Attribute mapper for the {@code ModuleHashes} attribute} * @since 23 */ public static AttributeMapper moduleHashes() { return ModuleHashesMapper.INSTANCE; } /** * {@return Attribute mapper for the {@code ModuleMainClass} attribute} * @since 23 */ public static AttributeMapper moduleMainClass() { return ModuleMainClassMapper.INSTANCE; } /** * {@return Attribute mapper for the {@code ModulePackages} attribute} * @since 23 */ public static AttributeMapper modulePackages() { return ModulePackagesMapper.INSTANCE; } /** * {@return Attribute mapper for the {@code ModuleResolution} attribute} * @since 23 */ public static AttributeMapper moduleResolution() { return ModuleResolutionMapper.INSTANCE; } /** * {@return Attribute mapper for the {@code ModuleTarget} attribute} * @since 23 */ public static AttributeMapper moduleTarget() { return ModuleTargetMapper.INSTANCE; } /** * {@return Attribute mapper for the {@code NestHost} attribute} * @since 23 */ public static AttributeMapper nestHost() { return NestHostMapper.INSTANCE; } /** * {@return Attribute mapper for the {@code NestMembers} attribute} * @since 23 */ public static AttributeMapper nestMembers() { return NestMembersMapper.INSTANCE; } /** * {@return Attribute mapper for the {@code PermittedSubclasses} attribute} * @since 23 */ public static AttributeMapper permittedSubclasses() { return PermittedSubclassesMapper.INSTANCE; } /** * {@return Attribute mapper for the {@code Record} attribute} * @since 23 */ public static AttributeMapper record() { return RecordMapper.INSTANCE; } /** * {@return Attribute mapper for the {@code RuntimeInvisibleAnnotations} attribute} * @since 23 */ public static AttributeMapper runtimeInvisibleAnnotations() { return RuntimeInvisibleAnnotationsMapper.INSTANCE; } /** * {@return Attribute mapper for the {@code RuntimeInvisibleParameterAnnotations} attribute} * @since 23 */ public static AttributeMapper runtimeInvisibleParameterAnnotations() { return RuntimeInvisibleParameterAnnotationsMapper.INSTANCE; } /** * {@return Attribute mapper for the {@code RuntimeInvisibleTypeAnnotations} attribute} * @since 23 */ public static AttributeMapper runtimeInvisibleTypeAnnotations() { return RuntimeInvisibleTypeAnnotationsMapper.INSTANCE; } /** * {@return Attribute mapper for the {@code RuntimeVisibleAnnotations} attribute} * @since 23 */ public static AttributeMapper runtimeVisibleAnnotations() { return RuntimeVisibleAnnotationsMapper.INSTANCE; } /** * {@return Attribute mapper for the {@code RuntimeVisibleParameterAnnotations} attribute} * @since 23 */ public static AttributeMapper runtimeVisibleParameterAnnotations() { return RuntimeVisibleParameterAnnotationsMapper.INSTANCE; } /** * {@return Attribute mapper for the {@code RuntimeVisibleTypeAnnotations} attribute} * @since 23 */ public static AttributeMapper runtimeVisibleTypeAnnotations() { return RuntimeVisibleTypeAnnotationsMapper.INSTANCE; } /** * {@return Attribute mapper for the {@code Signature} attribute} * @since 23 */ public static AttributeMapper signature() { return SignatureMapper.INSTANCE; } /** * {@return Attribute mapper for the {@code SourceDebugExtension} attribute} * @since 23 */ public static AttributeMapper sourceDebugExtension() { return SourceDebugExtensionMapper.INSTANCE; } /** * {@return Attribute mapper for the {@code SourceFile} attribute} * @since 23 */ public static AttributeMapper sourceFile() { return SourceFileMapper.INSTANCE; } /** * {@return Attribute mapper for the {@code SourceID} attribute} * @since 23 */ public static AttributeMapper sourceId() { return SourceIDMapper.INSTANCE; } /** * {@return Attribute mapper for the {@code StackMapTable} attribute} * @since 23 */ public static AttributeMapper stackMapTable() { return StackMapTableMapper.INSTANCE; } /** * {@return Attribute mapper for the {@code Synthetic} attribute} * The mapper permits multiple instances in a given location. * @since 23 */ public static AttributeMapper synthetic() { return SyntheticMapper.INSTANCE; } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy