Skip to content

Commit ab1f0b5

Browse files
committed
Add per-element-metadata
1 parent 6137657 commit ab1f0b5

20 files changed

+725
-117
lines changed

src/main/java/net/fabricmc/mappingio/FlatMappingVisitor.java

Lines changed: 85 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -57,23 +57,34 @@ default boolean visitContent() throws IOException {
5757
}
5858

5959
boolean visitClass(String srcName, String[] dstNames) throws IOException;
60+
void visitClassMetadata(String srcName, String[] dstNames, String propertyKey, String[] propertyValues) throws IOException;
6061
void visitClassComment(String srcName, String[] dstNames, String comment) throws IOException;
6162

6263
boolean visitField(String srcClsName, String srcName, String srcDesc,
6364
String[] dstClsNames, String[] dstNames, String[] dstDescs) throws IOException;
65+
void visitFieldMetadata(String srcClsName, String srcName, String srcDesc,
66+
String[] dstClsNames, String[] dstNames, String[] dstDescs,
67+
String propertyKey, String[] propertyValues) throws IOException;
6468
void visitFieldComment(String srcClsName, String srcName, String srcDesc,
6569
String[] dstClsNames, String[] dstNames, String[] dstDescs,
6670
String comment) throws IOException;
6771

6872
boolean visitMethod(String srcClsName, String srcName, String srcDesc,
6973
String[] dstClsNames, String[] dstNames, String[] dstDescs) throws IOException;
74+
void visitMethodMetadata(String srcClsName, String srcName, String srcDesc,
75+
String[] dstClsNames, String[] dstNames, String[] dstDescs,
76+
String propertyKey, String[] propertyValues) throws IOException;
7077
void visitMethodComment(String srcClsName, String srcName, String srcDesc,
7178
String[] dstClsNames, String[] dstNames, String[] dstDescs,
7279
String comment) throws IOException;
7380

7481
boolean visitMethodArg(String srcClsName, String srcMethodName, String srcMethodDesc,
7582
int argPosition, int lvIndex, String srcArgName,
7683
String[] dstClsNames, String[] dstMethodNames, String[] dstMethodDescs, String[] dstArgNames) throws IOException;
84+
void visitMethodArgMetadata(String srcClsName, String srcMethodName, String srcMethodDesc,
85+
int argPosition, int lvIndex, String srcArgName,
86+
String[] dstClsNames, String[] dstMethodNames, String[] dstMethodDescs, String[] dstArgNames,
87+
String propertyKey, String[] propertyValues) throws IOException;
7788
void visitMethodArgComment(String srcClsName, String srcMethodName, String srcMethodDesc,
7889
int argPosition, int lvIndex, String srcArgName,
7990
String[] dstClsNames, String[] dstMethodNames, String[] dstMethodDescs, String[] dstArgNames,
@@ -82,6 +93,10 @@ void visitMethodArgComment(String srcClsName, String srcMethodName, String srcMe
8293
boolean visitMethodVar(String srcClsName, String srcMethodName, String srcMethodDesc,
8394
int lvtRowIndex, int lvIndex, int startOpIdx, int endOpIdx, String srcVarName,
8495
String[] dstClsNames, String[] dstMethodNames, String[] dstMethodDescs, String[] dstVarNames) throws IOException;
96+
void visitMethodVarMetadata(String srcClsName, String srcMethodName, String srcMethodDesc,
97+
int lvtRowIndex, int lvIndex, int startOpIdx, int endOpIdx, String srcVarName,
98+
String[] dstClsNames, String[] dstMethodNames, String[] dstMethodDescs, String[] dstVarNames,
99+
String propertyKey, String[] propertyValues) throws IOException;
85100
void visitMethodVarComment(String srcClsName, String srcMethodName, String srcMethodDesc,
86101
int lvtRowIndex, int lvIndex, int startOpIdx, int endOpIdx, String srcVarName,
87102
String[] dstClsNames, String[] dstMethodNames, String[] dstMethodDescs, String[] dstVarNames,
@@ -135,37 +150,53 @@ default boolean visitMethodVar(String srcClsName, String srcMethodName, String s
135150

136151
// convenience / potentially higher efficiency visit methods for only one dst name
137152

153+
// Class
138154
default boolean visitClass(String srcName, String dstName) throws IOException {
139155
return visitClass(srcName, toArray(dstName));
140156
}
141-
157+
default void visitClassMetadata(String srcName, String propertyKey, String[] propertyValues) throws IOException {
158+
visitClassMetadata(srcName, (String) null, propertyKey, propertyValues);
159+
}
160+
default void visitClassMetadata(String srcName, String dstName, String propertyKey, String[] propertyValues) throws IOException {
161+
visitClassMetadata(srcName, toArray(dstName), propertyKey, propertyValues);
162+
}
142163
default void visitClassComment(String srcName, String comment) throws IOException {
143164
visitClassComment(srcName, (String) null, comment);
144165
}
145-
146166
default void visitClassComment(String srcName, String dstName, String comment) throws IOException {
147167
visitClassComment(srcName, toArray(dstName), comment);
148168
}
149169

170+
// Field
150171
default boolean visitField(String srcClsName, String srcName, String srcDesc,
151172
String dstName) throws IOException {
152173
return visitField(srcClsName, srcName, srcDesc,
153174
null, dstName, null);
154175
}
155-
156176
default boolean visitField(String srcClsName, String srcName, String srcDesc,
157177
String dstClsName, String dstName, String dstDesc) throws IOException {
158178
return visitField(srcClsName, srcName, srcDesc,
159179
toArray(dstClsName), toArray(dstName), toArray(dstDesc));
160180
}
161-
181+
default void visitFieldMetadata(String srcClsName, String srcName, String srcDesc,
182+
String propertyKey, String[] propertyValues) throws IOException {
183+
visitFieldMetadata(srcClsName, srcName, srcDesc,
184+
(String) null, null, null,
185+
propertyKey, propertyValues);
186+
}
187+
default void visitFieldMetadata(String srcClsName, String srcName, String srcDesc,
188+
String dstClsName, String dstName, String dstDesc,
189+
String propertyKey, String[] propertyValues) throws IOException {
190+
visitFieldMetadata(srcClsName, srcName, srcDesc,
191+
toArray(dstClsName), toArray(dstName), toArray(dstDesc),
192+
propertyKey, propertyValues);
193+
}
162194
default void visitFieldComment(String srcClsName, String srcName, String srcDesc,
163195
String comment) throws IOException {
164196
visitFieldComment(srcClsName, srcName, srcDesc,
165197
(String) null, null, null,
166198
comment);
167199
}
168-
169200
default void visitFieldComment(String srcClsName, String srcName, String srcDesc,
170201
String dstClsName, String dstName, String dstDesc,
171202
String comment) throws IOException {
@@ -174,25 +205,36 @@ default void visitFieldComment(String srcClsName, String srcName, String srcDesc
174205
comment);
175206
}
176207

208+
// Method
177209
default boolean visitMethod(String srcClsName, String srcName, String srcDesc,
178210
String dstName) throws IOException {
179211
return visitMethod(srcClsName, srcName, srcDesc,
180212
null, dstName, null);
181213
}
182-
183214
default boolean visitMethod(String srcClsName, String srcName, String srcDesc,
184215
String dstClsName, String dstName, String dstDesc) throws IOException {
185216
return visitMethod(srcClsName, srcName, srcDesc,
186217
toArray(dstClsName), toArray(dstName), toArray(dstDesc));
187218
}
188-
219+
default void visitMethodMetadata(String srcClsName, String srcName, String srcDesc,
220+
String propertyKey, String[] propertyValues) throws IOException {
221+
visitMethodMetadata(srcClsName, srcName, srcDesc,
222+
(String) null, null, null,
223+
propertyKey, propertyValues);
224+
}
225+
default void visitMethodMetadata(String srcClsName, String srcName, String srcDesc,
226+
String dstClsName, String dstName, String dstDesc,
227+
String propertyKey, String[] propertyValues) throws IOException {
228+
visitMethodMetadata(srcClsName, srcName, srcDesc,
229+
toArray(dstClsName), toArray(dstName), toArray(dstDesc),
230+
propertyKey, propertyValues);
231+
}
189232
default void visitMethodComment(String srcClsName, String srcName, String srcDesc,
190233
String comment) throws IOException {
191234
visitMethodComment(srcClsName, srcName, srcDesc,
192235
(String) null, null, null,
193236
comment);
194237
}
195-
196238
default void visitMethodComment(String srcClsName, String srcName, String srcDesc,
197239
String dstClsName, String dstName, String dstDesc,
198240
String comment) throws IOException {
@@ -201,22 +243,37 @@ default void visitMethodComment(String srcClsName, String srcName, String srcDes
201243
comment);
202244
}
203245

246+
// Method Arg
204247
default boolean visitMethodArg(String srcClsName, String srcMethodName, String srcMethodDesc,
205248
int argPosition, int lvIndex, String srcArgName,
206249
String dstArgName) throws IOException {
207250
return visitMethodArg(srcClsName, srcMethodName, srcMethodDesc,
208251
argPosition, lvIndex, srcArgName,
209252
null, null, null, dstArgName);
210253
}
211-
212254
default boolean visitMethodArg(String srcClsName, String srcMethodName, String srcMethodDesc,
213255
int argPosition, int lvIndex, String srcArgName,
214256
String dstClsName, String dstMethodName, String dstMethodDesc, String dstArgName) throws IOException {
215257
return visitMethodArg(srcClsName, srcMethodName, srcMethodDesc,
216258
argPosition, lvIndex, srcArgName,
217259
toArray(dstClsName), toArray(dstMethodName), toArray(dstMethodDesc), toArray(dstArgName));
218260
}
219-
261+
default void visitMethodArgMetadata(String srcClsName, String srcMethodName, String srcMethodDesc,
262+
int argPosition, int lvIndex, String srcArgName,
263+
String propertyKey, String[] propertyValues) throws IOException {
264+
visitMethodArgMetadata(srcClsName, srcMethodName, srcMethodDesc,
265+
argPosition, lvIndex, srcArgName,
266+
(String) null, null, null, null,
267+
propertyKey, propertyValues);
268+
}
269+
default void visitMethodArgMetadata(String srcClsName, String srcMethodName, String srcMethodDesc,
270+
int argPosition, int lvIndex, String srcArgName,
271+
String dstClsName, String dstMethodName, String dstMethodDesc, String dstArgName,
272+
String propertyKey, String[] propertyValues) throws IOException {
273+
visitMethodArgMetadata(srcClsName, srcMethodName, srcMethodDesc, argPosition, lvIndex, srcArgName,
274+
toArray(dstClsName), toArray(dstMethodName), toArray(dstMethodDesc), toArray(dstArgName),
275+
propertyKey, propertyValues);
276+
}
220277
default void visitMethodArgComment(String srcClsName, String srcMethodName, String srcMethodDesc,
221278
int argPosition, int lvIndex, String srcArgName,
222279
String comment) throws IOException {
@@ -225,7 +282,6 @@ default void visitMethodArgComment(String srcClsName, String srcMethodName, Stri
225282
(String) null, null, null, null,
226283
comment);
227284
}
228-
229285
default void visitMethodArgComment(String srcClsName, String srcMethodName, String srcMethodDesc,
230286
int argPosition, int lvIndex, String srcArgName,
231287
String dstClsName, String dstMethodName, String dstMethodDesc, String dstArgName,
@@ -235,22 +291,38 @@ default void visitMethodArgComment(String srcClsName, String srcMethodName, Stri
235291
comment);
236292
}
237293

294+
// Method Var
238295
default boolean visitMethodVar(String srcClsName, String srcMethodName, String srcMethodDesc,
239296
int lvtRowIndex, int lvIndex, int startOpIdx, int endOpIdx, String srcVarName,
240297
String dstVarName) throws IOException {
241298
return visitMethodVar(srcClsName, srcMethodName, srcMethodDesc,
242299
lvtRowIndex, lvIndex, startOpIdx, endOpIdx, srcVarName,
243300
null, null, null, dstVarName);
244301
}
245-
246302
default boolean visitMethodVar(String srcClsName, String srcMethodName, String srcMethodDesc,
247303
int lvtRowIndex, int lvIndex, int startOpIdx, int endOpIdx, String srcVarName,
248304
String dstClsName, String dstMethodName, String dstMethodDesc, String dstVarName) throws IOException {
249305
return visitMethodVar(srcClsName, srcMethodName, srcMethodDesc,
250306
lvtRowIndex, lvIndex, startOpIdx, endOpIdx, srcVarName,
251307
toArray(dstClsName), toArray(dstMethodName), toArray(dstMethodDesc), toArray(dstVarName));
252308
}
253-
309+
default void visitMethodVarMetadata(String srcClsName, String srcMethodName, String srcMethodDesc,
310+
int lvtRowIndex, int lvIndex, int startOpIdx, int endOpIdx, String srcVarName,
311+
String propertyKey, String[] propertyValues) throws IOException {
312+
visitMethodVarMetadata(srcClsName, srcMethodName, srcMethodDesc,
313+
lvtRowIndex, lvIndex, startOpIdx, endOpIdx, srcVarName,
314+
(String) null, null, null, null,
315+
propertyKey, propertyValues);
316+
}
317+
default void visitMethodVarMetadata(String srcClsName, String srcMethodName, String srcMethodDesc,
318+
int lvtRowIndex, int lvIndex, int startOpIdx, int endOpIdx, String srcVarName,
319+
String dstClsName, String dstMethodName, String dstMethodDesc, String dstVarName,
320+
String propertyKey, String[] propertyValues) throws IOException {
321+
visitMethodVarMetadata(srcClsName, srcMethodName, srcMethodDesc,
322+
lvtRowIndex, lvIndex, startOpIdx, endOpIdx, srcVarName,
323+
toArray(dstClsName), toArray(dstMethodName), toArray(dstMethodDesc), toArray(dstVarName),
324+
propertyKey, propertyValues);
325+
}
254326
default void visitMethodVarComment(String srcClsName, String srcMethodName, String srcMethodDesc,
255327
int lvtRowIndex, int lvIndex, int startOpIdx, int endOpIdx, String srcVarName,
256328
String comment) throws IOException {
@@ -259,7 +331,6 @@ default void visitMethodVarComment(String srcClsName, String srcMethodName, Stri
259331
(String) null, null, null, null,
260332
comment);
261333
}
262-
263334
default void visitMethodVarComment(String srcClsName, String srcMethodName, String srcMethodDesc,
264335
int lvtRowIndex, int lvIndex, int startOpIdx, int endOpIdx, String srcVarName,
265336
String dstClsName, String dstMethodName, String dstMethodDesc, String dstVarName,

src/main/java/net/fabricmc/mappingio/MappingVisitor.java

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -27,11 +27,11 @@
2727
* <ul><li>overall: header -> content -> End -> overall
2828
* <li>header: Header -> Namespaces [-> Metadata]*
2929
* <li>content: Content [-> class|Metadata]*
30-
* <li>class: Class [-> DstName]* -> ElementContent [-> field|method|Comment]*
31-
* <li>field: Field [-> DstName|DstDesc]* -> ElementContent [-> Comment]
32-
* <li>method: Method [-> DstName|DstDesc]* -> ElementContent [-> arg|var|Comment]*
33-
* <li>arg: Arg [-> DstName]* -> ElementContent [-> Comment]
34-
* <li>var: Var [-> DstName]* -> ElementContent [-> Comment]
30+
* <li>class: Class [-> DstName]* -> ElementContent [-> ElementMetadata|field|method|Comment]*
31+
* <li>field: Field [-> DstName|DstDesc]* -> ElementContent [-> ElementMetadata|Comment]*
32+
* <li>method: Method [-> DstName|DstDesc]* -> ElementContent [-> ElementMetadata|arg|var|Comment]*
33+
* <li>arg: Arg [-> DstName]* -> ElementContent [-> ElementMetadata|Comment]*
34+
* <li>var: Var [-> DstName]* -> ElementContent [-> ElementMetadata|Comment]*
3535
* </ul>
3636
*
3737
* <p>The elements with a skip-return (Header/Content/Class/Field/Method/Arg/Var/ElementContent) abort processing the
@@ -118,6 +118,11 @@ default boolean visitElementContent(MappedElementKind targetKind) throws IOExcep
118118
return true;
119119
}
120120

121+
/**
122+
* Metadata for the specified element (last content-visited or any parent).
123+
*/
124+
default void visitElementMetadata(MappedElementKind targetKind, String key, int namespace, String value) throws IOException { }
125+
121126
/**
122127
* Comment for the specified element (last content-visited or any parent).
123128
*

0 commit comments

Comments
 (0)