aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/ftbsc/lll/mapper/writer/impl/TinyV2Writer.java
blob: 981ea2fef2751e7b56f02370ffc76c552e0e59cb (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
package ftbsc.lll.mapper.writer.impl;

import com.google.auto.service.AutoService;
import ftbsc.lll.mapper.IMapper;
import ftbsc.lll.mapper.writer.IWriter;

import java.io.PrintWriter;
import java.util.Optional;

/**
 * An {@link IWriter} that writes in the Tiny v2 format.
 */
@AutoService(IWriter.class)
public class TinyV2Writer implements IWriter {
   @Override
   public String uniqueId() {
      return "tinyv2";
   }

   @Override
   public void write(IMapper mapper, PrintWriter writer, String... args) {
      writer.printf("tiny\t2\t0\t%s\t%s", args[0], args[1]);
      mapper.getRawMappings().forEach((name, data) -> {
         writer.printf("c\t%s\t%s\n", name, data.nameMapped);
         data.getFields().forEach((fieldName, fieldData) ->
            writer.printf("\tf\t%s\t%s\t%s\n",
               Optional.ofNullable(fieldData.descriptor).orElse("?"),
               fieldName, fieldData.nameMapped));
         data.getMethods().forEach(((methodSignature, methodData) ->
            writer.printf("\tm\t%s\t%s\t%s\n", methodSignature.descriptor,
               methodSignature.name, methodData.nameMapped)));
      });
   }
}