11package xyz.wagyourtail.unimined.internal.mapping.at
2-
3- import net.fabricmc.accesswidener.AccessWidenerReader
4- import net.fabricmc.accesswidener.AccessWidenerVisitor
5- import java.io.BufferedWriter
6-
7- class AccessTransformerWriter (private val output : BufferedWriter ): AccessWidenerVisitor, AutoCloseable {
8- private val classes = mutableMapOf<String , MutableSet <AccessType >>()
9- private val fields = mutableMapOf<String , MutableSet <AccessType >>()
10- private val methods = mutableMapOf<String , MutableSet <AccessType >>()
11-
12- override fun visitClass (name : String , access : AccessWidenerReader .AccessType , transitive : Boolean ) {
13- classes.getOrPut(name.replace(" /" , " ." )) { mutableSetOf () }.addAll(
14- when (access) {
15- AccessWidenerReader .AccessType .ACCESSIBLE -> setOf (AccessType .PUBLIC )
16- AccessWidenerReader .AccessType .EXTENDABLE -> setOf (AccessType .PUBLIC , AccessType .UNFINAL )
17- AccessWidenerReader .AccessType .MUTABLE -> throw UnsupportedOperationException (" AccessWidenerReader.AccessType.MUTABLE is not supported for classes" )
18- }
19- )
20- }
21-
22- override fun visitField (
23- owner : String ,
24- name : String ,
25- descriptor : String ,
26- access : AccessWidenerReader .AccessType ,
27- transitive : Boolean
28- ) {
29- val desc = " ${owner.replace(" /" , " ." )} $name "
30- fields.getOrPut(desc) { mutableSetOf () }.addAll(
31- when (access) {
32- AccessWidenerReader .AccessType .ACCESSIBLE -> setOf (AccessType .PUBLIC )
33- AccessWidenerReader .AccessType .EXTENDABLE -> throw UnsupportedOperationException (" AccessWidenerReader.AccessType.EXTENDABLE is not supported for fields" )
34- AccessWidenerReader .AccessType .MUTABLE -> setOf (AccessType .UNFINAL )
35- }
36- )
37- }
38-
39- override fun visitMethod (
40- owner : String ,
41- name : String ,
42- descriptor : String ,
43- access : AccessWidenerReader .AccessType ,
44- transitive : Boolean
45- ) {
46- val desc = " ${owner.replace(" /" , " ." )} $name$descriptor "
47- methods.getOrPut(desc) { mutableSetOf () }.addAll(
48- when (access) {
49- AccessWidenerReader .AccessType .ACCESSIBLE -> setOf (AccessType .PUBLIC )
50- AccessWidenerReader .AccessType .EXTENDABLE -> setOf (AccessType .PROTECTED , AccessType .UNFINAL )
51- AccessWidenerReader .AccessType .MUTABLE -> throw UnsupportedOperationException (" AccessWidenerReader.AccessType.MUTABLE is not supported for methods" )
52- }
53- )
54- }
55-
56- enum class AccessType (val str : String ) {
57- PUBLIC (" public" ),
58- PROTECTED (" protected" ),
59- UNFINAL (" -f" ),
60- }
61-
62- override fun close () {
63- classes.forEach { (name, access) ->
64- if (access == setOf (AccessType .UNFINAL )) access.add(AccessType .PUBLIC )
65- if (access.containsAll(setOf (AccessType .PUBLIC , AccessType .PROTECTED ))) access.remove(AccessType .PROTECTED )
66- output.write(access.sortedBy { it.ordinal }.joinToString(" " ) { it.str } + " $name \n " )
67- }
68- fields.forEach { (desc, access) ->
69- if (access == setOf (AccessType .UNFINAL )) access.add(AccessType .PUBLIC )
70- if (access.containsAll(setOf (AccessType .PUBLIC , AccessType .PROTECTED ))) access.remove(AccessType .PROTECTED )
71- output.write(access.sortedBy { it.ordinal }.joinToString(" " ) { it.str } + " $desc \n " )
72- }
73- methods.forEach { (desc, access) ->
74- if (access == setOf (AccessType .UNFINAL )) access.add(AccessType .PUBLIC )
75- if (access.containsAll(setOf (AccessType .PUBLIC , AccessType .PROTECTED ))) access.remove(AccessType .PROTECTED )
76- output.write(access.sortedBy { it.ordinal }.joinToString(" " ) { it.str } + " $desc \n " )
77- }
78- output.close()
79- }
80- }
2+ //
3+ // import net.fabricmc.accesswidener.AccessWidenerReader
4+ // import net.fabricmc.accesswidener.AccessWidenerVisitor
5+ // import java.io.BufferedWriter
6+ //
7+ // class AccessTransformerWriter(private val output: BufferedWriter): AccessWidenerVisitor, AutoCloseable {
8+ // private val classes = mutableMapOf<String, MutableSet<AccessType>>()
9+ // private val fields = mutableMapOf<String, MutableSet<AccessType>>()
10+ // private val methods = mutableMapOf<String, MutableSet<AccessType>>()
11+ //
12+ // override fun visitClass(name: String, access: AccessWidenerReader.AccessType, transitive: Boolean) {
13+ // classes.getOrPut(name.replace("/", ".")) { mutableSetOf() }.addAll(
14+ // when (access) {
15+ // AccessWidenerReader.AccessType.ACCESSIBLE -> setOf(AccessType.PUBLIC)
16+ // AccessWidenerReader.AccessType.EXTENDABLE -> setOf(AccessType.PUBLIC, AccessType.UNFINAL)
17+ // AccessWidenerReader.AccessType.MUTABLE -> throw UnsupportedOperationException("AccessWidenerReader.AccessType.MUTABLE is not supported for classes")
18+ // }
19+ // )
20+ // }
21+ //
22+ // override fun visitField(
23+ // owner: String,
24+ // name: String,
25+ // descriptor: String,
26+ // access: AccessWidenerReader.AccessType,
27+ // transitive: Boolean
28+ // ) {
29+ // val desc = "${owner.replace("/", ".")} $name"
30+ // fields.getOrPut(desc) { mutableSetOf() }.addAll(
31+ // when (access) {
32+ // AccessWidenerReader.AccessType.ACCESSIBLE -> setOf(AccessType.PUBLIC)
33+ // AccessWidenerReader.AccessType.EXTENDABLE -> throw UnsupportedOperationException("AccessWidenerReader.AccessType.EXTENDABLE is not supported for fields")
34+ // AccessWidenerReader.AccessType.MUTABLE -> setOf(AccessType.UNFINAL)
35+ // }
36+ // )
37+ // }
38+ //
39+ // override fun visitMethod(
40+ // owner: String,
41+ // name: String,
42+ // descriptor: String,
43+ // access: AccessWidenerReader.AccessType,
44+ // transitive: Boolean
45+ // ) {
46+ // val desc = "${owner.replace("/", ".")} $name$descriptor"
47+ // methods.getOrPut(desc) { mutableSetOf() }.addAll(
48+ // when (access) {
49+ // AccessWidenerReader.AccessType.ACCESSIBLE -> setOf(AccessType.PUBLIC)
50+ // AccessWidenerReader.AccessType.EXTENDABLE -> setOf(AccessType.PROTECTED, AccessType.UNFINAL)
51+ // AccessWidenerReader.AccessType.MUTABLE -> throw UnsupportedOperationException("AccessWidenerReader.AccessType.MUTABLE is not supported for methods")
52+ // }
53+ // )
54+ // }
55+ //
56+ // enum class AccessType(val str: String) {
57+ // PUBLIC("public"),
58+ // PROTECTED("protected"),
59+ // UNFINAL("-f"),
60+ // }
61+ //
62+ // override fun close() {
63+ // classes.forEach { (name, access) ->
64+ // if (access == setOf(AccessType.UNFINAL)) access.add(AccessType.PUBLIC)
65+ // if (access.containsAll(setOf(AccessType.PUBLIC, AccessType.PROTECTED))) access.remove(AccessType.PROTECTED)
66+ // output.write(access.sortedBy { it.ordinal }.joinToString("") { it.str } + " $name\n")
67+ // }
68+ // fields.forEach { (desc, access) ->
69+ // if (access == setOf(AccessType.UNFINAL)) access.add(AccessType.PUBLIC)
70+ // if (access.containsAll(setOf(AccessType.PUBLIC, AccessType.PROTECTED))) access.remove(AccessType.PROTECTED)
71+ // output.write(access.sortedBy { it.ordinal }.joinToString("") { it.str } + " $desc\n")
72+ // }
73+ // methods.forEach { (desc, access) ->
74+ // if (access == setOf(AccessType.UNFINAL)) access.add(AccessType.PUBLIC)
75+ // if (access.containsAll(setOf(AccessType.PUBLIC, AccessType.PROTECTED))) access.remove(AccessType.PROTECTED)
76+ // output.write(access.sortedBy { it.ordinal }.joinToString("") { it.str } + " $desc\n")
77+ // }
78+ // output.close()
79+ // }
80+ // }
0 commit comments