@@ -0,0 +1,1336 @@
+package nsis.format;%0A%0Aimport java.io.IOException;%0A%0Aimport ghidra.app.util.bin.BinaryReader;%0Aimport ghidra.app.util.bin.StructConverter;%0Aimport ghidra.program.model.data.ArrayDataType;%0Aimport ghidra.program.model.data.DataType;%0Aimport ghidra.program.model.data.Structure;%0Aimport ghidra.program.model.data.StructureDataType;%0Aimport ghidra.util.exception.DuplicateNameException;%0A%0Apublic class NsisEntry implements StructConverter %7B%0A%09private final static int MAX_ENTRY_OFFSETS = 6;%0A%0A%09private int which;%0A%09private int%5B%5D offsets = new int%5BMAX_ENTRY_OFFSETS%5D;%0A%0A%09private final static Structure STRUCTURE;%0A%0A%09static %7B%0A%09%09STRUCTURE = new StructureDataType(%22Entry%22, 0);%0A%09%09STRUCTURE.add(DWORD, DWORD.getLength(), %22which%22,%0A%09%09%09%09%22EW_* enum.  Look at the enum values to see what offsets mean%22);%0A%09%09STRUCTURE.add(new ArrayDataType(DWORD, MAX_ENTRY_OFFSETS, DWORD.getLength()), 0, %22offsets%22,%0A%09%09%09%09%22count and meaning of offsets depend on 'which'.%22%0A%09%09%09%09%09%09+ %22 Sometimes they are just straight int values or bool values and sometimes they are %22%0A%09%09%09%09%09%09+ %22indices into string tables.%22);%0A%09%7D%0A%0A%09public NsisEntry(BinaryReader reader) throws IOException %7B%0A%09%09this.which = reader.readNextInt();%0A%09%09this.offsets = reader.readNextIntArray(MAX_ENTRY_OFFSETS);%0A%09%7D%0A%0A%09@Override%0A%09public DataType toDataType() throws DuplicateNameException, IOException %7B%0A%09%09return STRUCTURE;%0A%09%7D%0A%0A%7D%0A

Add entry structure (#35)