====== 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.