Class RecordComponentWriter

    • Field Detail

      • symbolTable

        private final SymbolTable symbolTable
        Where the constants used in this RecordComponentWriter must be stored.
      • nameIndex

        private final int nameIndex
        The name_index field of the Record attribute.
      • descriptorIndex

        private final int descriptorIndex
        The descriptor_index field of the the Record attribute.
      • signatureIndex

        private int signatureIndex
        The signature_index field of the Signature attribute of this record component, or 0 if there is no Signature attribute.
      • lastRuntimeVisibleTypeAnnotation

        private AnnotationWriter lastRuntimeVisibleTypeAnnotation
        The last runtime visible type annotation of this record component. The previous ones can be accessed with the AnnotationWriter.previousAnnotation field. May be null.
      • lastRuntimeInvisibleTypeAnnotation

        private AnnotationWriter lastRuntimeInvisibleTypeAnnotation
        The last runtime invisible type annotation of this record component. The previous ones can be accessed with the AnnotationWriter.previousAnnotation field. May be null.
      • firstAttribute

        private Attribute firstAttribute
        The first non standard attribute of this record component. The next ones can be accessed with the Attribute.nextAttribute field. May be null.

        WARNING: this list stores the attributes in the reverse order of their visit. firstAttribute is actually the last attribute visited in visitAttribute(Attribute). The putRecordComponentInfo(ByteVector) method writes the attributes in the order defined by this list, i.e. in the reverse order specified by the user.

    • Constructor Detail

      • RecordComponentWriter

        RecordComponentWriter​(SymbolTable symbolTable,
                              java.lang.String name,
                              java.lang.String descriptor,
                              java.lang.String signature)
        Constructs a new RecordComponentWriter.
        Parameters:
        symbolTable - where the constants used in this RecordComponentWriter must be stored.
        name - the record component name.
        descriptor - the record component descriptor (see Type).
        signature - the record component signature. May be null.
    • Method Detail

      • visitAnnotation

        public AnnotationVisitor visitAnnotation​(java.lang.String descriptor,
                                                 boolean visible)
        Description copied from class: RecordComponentVisitor
        Visits an annotation of the record component.
        Overrides:
        visitAnnotation in class RecordComponentVisitor
        Parameters:
        descriptor - the class descriptor of the annotation class.
        visible - true if the annotation is visible at runtime.
        Returns:
        a visitor to visit the annotation values, or null if this visitor is not interested in visiting this annotation.
      • visitEnd

        public void visitEnd()
        Description copied from class: RecordComponentVisitor
        Visits the end of the record component. This method, which is the last one to be called, is used to inform the visitor that everything have been visited.
        Overrides:
        visitEnd in class RecordComponentVisitor
      • computeRecordComponentInfoSize

        int computeRecordComponentInfoSize()
        Returns the size of the record component JVMS structure generated by this RecordComponentWriter. Also adds the names of the attributes of this record component in the constant pool.
        Returns:
        the size in bytes of the record_component_info of the Record attribute.
      • putRecordComponentInfo

        void putRecordComponentInfo​(ByteVector output)
        Puts the content of the record component generated by this RecordComponentWriter into the given ByteVector.
        Parameters:
        output - where the record_component_info structure must be put.
      • collectAttributePrototypes

        final void collectAttributePrototypes​(Attribute.Set attributePrototypes)
        Collects the attributes of this record component into the given set of attribute prototypes.
        Parameters:
        attributePrototypes - a set of attribute prototypes.