====== Tiny v1 ====== :!: //This write-up isn't finalized yet and may contain errors!// Tiny v1 consists of a list of flat (non-hierarchical) mapping entries. Every line in the content section corresponds to a new entry. Supported elements are classes, fields and methods; for parameters, variables, comments and a generally more space-efficient format, it's recommended to use its successor, [[documentation:tiny2|Tiny v2]]. **Example:** v1 official intermediary named # INTERMEDIARY-COUNTER class 289 # INTERMEDIARY-COUNTER field 945 # INTERMEDIARY-COUNTER method 1204 CLASS a class_123 pkg/SomeClass FIELD a [I a field_789 someField FIELD a Lyj; b field_790 someField2 METHOD a (III)V a method_456 someMethod METHOD a ()F b method_479 someMethod2 CLASS b class_234 pkg/xy/AnotherClass METHOD b (Ljava/lang/String;)I a method_567 anotherMethod ===== Grammar ===== ::=
|
::= 'v1' ::= ::= ::= '' | ::= ::= '' | '#' ::= | ::= ::= ::= '' | ::= | | ::= 'CLASS' ::= ::= ::= '' | ::= '' | ::= ::= 'FIELD' ::= ::= ::= '' | ::= '' | ::= ::= ::= ::= 'METHOD' ::= ::= ::= '' | ::= '' | ::= ::= ::= ==== Notes ==== * ''%%%%'' is ''\t''. * ''%%%%'' is the space character (''U+0020''). * ''%%%%'' is ''\n'' or ''\r\n''. * ''%%%%'' is a non-empty string that must not contain: * ''\'', * ''\n'', * ''\r'', * ''\t'' or * ''\0''. * ''%%%%'' is the same as ''%%%%'', but in addition mustn't contain ''%%%%'' as well. * ''%%%%'' are either in the ''%%
%%'' or at the bottom of the file, //not// scattered across both locations. * ''%%%%'' is the binary name of a class as specified in JVMS SE 8 §4.2.1. Nested class identifiers are typically separated with ''$'' (e.g. ''some/package/class$nested$subnested''). Outer names must not be omitted for any namespace. * ''%%%%'' is the ''%%%%'' of the entry's parent (owning) class. * ''%%%%''/''%%%%'' is the unqualified name of a field/method specified in JVMS SE 8 §4.2.2. * ''%%%%'' is a field descriptor as specified in JVMS SE 8 §4.3.2. * ''%%%%'' is a method descriptor as specified in JVMS SE 8 §4.3.3. ===== Miscellaneous Notes ===== * The encoding for the entire file is UTF-8. * Properties with unknown keys should be skipped without generating an error. * The amount of extra namespaces defined in the header and the amount of names in every ''%%extra-ns-*-names%%'' definition have to match. They are associated by their relative position, like the mandatory namespaces ''a'' and ''b'' that are associated by the suffix, e.g. ''%%namespace-a%%'' covers ''%%class-name-a%%'', ''%%field-name-a%%'', ''%%field-desc-a%%'', ''%%method-name-a%%'' and ''%%method-desc-a%%''. * Entries representing the same element should not be repeated, so there can be only one entry for a specific class, member or property. * Mappings without any (useful) names should be omitted. * Entries without any (useful) mappings should be omitted.