Class VisitOrderVerifier
java.lang.Object
net.fabricmc.mappingio.adapter.ForwardingMappingVisitor
net.fabricmc.mappingio.adapter.VisitOrderVerifier
- All Implemented Interfaces:
MappingVisitor
Visitor which verifies on each visit call that the invoked visits were in accordance
with the expected order of visitation, as defined in
MappingVisitor's Javadocs.
Experimental feature, may be removed or changed without further notice.
-
Field Summary
Fields inherited from class ForwardingMappingVisitor
next -
Constructor Summary
ConstructorsConstructorDescriptionVisitOrderVerifier(MappingVisitor next, boolean allowConsecutiveDuplicateElementVisits) -
Method Summary
Modifier and TypeMethodDescriptionvoidreset()Reset the visitor, including any chained visitors, to allow for another independent visit (excluding visitEnd=false).booleanvisitClass(String srcName) Visit a class.voidvisitComment(MappedElementKind targetKind, String comment) Comment for the specified element (last content-visited or any parent).booleanDetermine whether the mapping content (classes and anything below, metadata if not part of the header) should be visited.voidvisitDstDesc(MappedElementKind targetKind, int namespace, String desc) voidvisitDstName(MappedElementKind targetKind, int namespace, String name) Destination name for the current element.booleanvisitElementContent(MappedElementKind targetKind) Determine whether the element content (comment, sub-elements) should be visited.booleanvisitEnd()Finish the visitation pass.booleanvisitField(String srcName, @Nullable String srcDesc) booleanDetermine whether the header (namespaces, metadata if part of the header) should be visited.voidvisitMetadata(String key, @Nullable String value) booleanvisitMethod(String srcName, @Nullable String srcDesc) booleanvisitMethodArg(int argPosition, int lvIndex, @Nullable String srcName) Visit a parameter.booleanvisitMethodVar(int lvtRowIndex, int lvIndex, int startOpIdx, int endOpIdx, @Nullable String srcName) Visit a variable.voidvisitNamespaces(String srcNamespace, List<String> dstNamespaces) Methods inherited from class ForwardingMappingVisitor
getFlags
-
Constructor Details
-
VisitOrderVerifier
-
VisitOrderVerifier
-
-
Method Details
-
reset
public void reset()Description copied from interface:MappingVisitorReset the visitor, including any chained visitors, to allow for another independent visit (excluding visitEnd=false).- Specified by:
resetin interfaceMappingVisitor- Overrides:
resetin classForwardingMappingVisitor
-
visitHeader
Description copied from interface:MappingVisitorDetermine whether the header (namespaces, metadata if part of the header) should be visited.- Specified by:
visitHeaderin interfaceMappingVisitor- Overrides:
visitHeaderin classForwardingMappingVisitor- Returns:
trueif the header is to be visited,falseotherwise.- Throws:
IOException
-
visitNamespaces
- Specified by:
visitNamespacesin interfaceMappingVisitor- Overrides:
visitNamespacesin classForwardingMappingVisitor- Throws:
IOException
-
visitMetadata
- Specified by:
visitMetadatain interfaceMappingVisitor- Overrides:
visitMetadatain classForwardingMappingVisitor- Throws:
IOException
-
visitContent
Description copied from interface:MappingVisitorDetermine whether the mapping content (classes and anything below, metadata if not part of the header) should be visited.- Specified by:
visitContentin interfaceMappingVisitor- Overrides:
visitContentin classForwardingMappingVisitor- Returns:
trueif content is to be visited,falseotherwise.- Throws:
IOException
-
visitClass
Description copied from interface:MappingVisitorVisit a class.- Specified by:
visitClassin interfaceMappingVisitor- Overrides:
visitClassin classForwardingMappingVisitor- Parameters:
srcName- The fully qualified source name of the class, in internal form (slashes instead of dots, dollar signs for delimiting inner classes).- Returns:
- Whether the class's content should be visited too.
- Throws:
IOException
-
visitField
- Specified by:
visitFieldin interfaceMappingVisitor- Overrides:
visitFieldin classForwardingMappingVisitor- Throws:
IOException
-
visitMethod
- Specified by:
visitMethodin interfaceMappingVisitor- Overrides:
visitMethodin classForwardingMappingVisitor- Throws:
IOException
-
visitMethodArg
public boolean visitMethodArg(int argPosition, int lvIndex, @Nullable @Nullable String srcName) throws IOException Description copied from interface:MappingVisitorVisit a parameter.- Specified by:
visitMethodArgin interfaceMappingVisitor- Overrides:
visitMethodArgin classForwardingMappingVisitor- Parameters:
argPosition- Always starts at 0 and gets incremented by 1 for each additional parameter.lvIndex- The parameter's local variable index in the current method, also known asslot. Starts at 0 for static methods, 1 otherwise. For each additional parameter, it gets incremented by 1, or by 2 if it's a double-wide primitive (longordouble).srcName- The optional source name of the parameter.- Returns:
- Whether the arg's content should be visited too.
- Throws:
IOException
-
visitMethodVar
public boolean visitMethodVar(int lvtRowIndex, int lvIndex, int startOpIdx, int endOpIdx, @Nullable @Nullable String srcName) throws IOException Description copied from interface:MappingVisitorVisit a variable.- Specified by:
visitMethodVarin interfaceMappingVisitor- Overrides:
visitMethodVarin classForwardingMappingVisitor- Parameters:
lvtRowIndex- The variable's index in the method's LVT (local variable table). It is optional, so -1 can be passed instead. This is the case since LVTs themselves are optional debug information, see JVMS 4.7.13.lvIndex- The var's local variable index in the current method, also known asslot. For each additional variable, it gets incremented by 1, or by 2 if it's a double-wide primitive (longordouble). The first variable starts at the last parameter's slot plus wideness.startOpIdx- Required for cases when the lvIndex alone doesn't uniquely identify a local variable. This is the case when variables get re-defined later on, in which case most decompilers opt to not re-define the existing var, but instead generate a new one (with both sharing the same lvIndex).endOpIdx- Counterpart to startOpIdx. Exclusive.srcName- The optional source name of the variable.- Returns:
- Whether the var's content should be visited too.
- Throws:
IOException
-
visitDstName
public void visitDstName(MappedElementKind targetKind, int namespace, String name) throws IOException Description copied from interface:MappingVisitorDestination name for the current element.- Specified by:
visitDstNamein interfaceMappingVisitor- Overrides:
visitDstNamein classForwardingMappingVisitor- Parameters:
namespace- Namespace index (index into the dstNamespaces list inMappingVisitor.visitNamespaces(String, List)).name- Destination name.- Throws:
IOException
-
visitDstDesc
public void visitDstDesc(MappedElementKind targetKind, int namespace, String desc) throws IOException - Specified by:
visitDstDescin interfaceMappingVisitor- Overrides:
visitDstDescin classForwardingMappingVisitor- Throws:
IOException
-
visitElementContent
Description copied from interface:MappingVisitorDetermine whether the element content (comment, sub-elements) should be visited.Called after visiting the target itself (e.g. visitClass for targetKind=class), its dst names and descs, but before any child elements or the comment.
This is also a notification about all available dst names having been passed on.
- Specified by:
visitElementContentin interfaceMappingVisitor- Overrides:
visitElementContentin classForwardingMappingVisitor- Returns:
trueif the contents are to be visited,falseotherwise- Throws:
IOException
-
visitComment
Description copied from interface:MappingVisitorComment for the specified element (last content-visited or any parent).- Specified by:
visitCommentin interfaceMappingVisitor- Overrides:
visitCommentin classForwardingMappingVisitor- Parameters:
comment- Comment as a potentially multi-line string.- Throws:
IOException
-
visitEnd
Description copied from interface:MappingVisitorFinish the visitation pass.Implementors may throw an exception if a second pass is requested without the
NEEDS_MULTIPLE_PASSESflag having been passed beforehand, but only if that behavior is documented.- Specified by:
visitEndin interfaceMappingVisitor- Overrides:
visitEndin classForwardingMappingVisitor- Returns:
trueif the visitation pass is final,falseif it should be started over.- Throws:
IOException
-