/** * Read the version table for an MVD from a byte array * * @param data the byte array containing the version definitions * @param p the start offset of the versions within data * @param mvd an mvd to add the version definitions to */ private static void readVersionTable(byte[] data, int p, MVD mvd) throws Exception { short nVersions = readShort(data, p); p += 2; if (nVersions < 0) throw new MVDException("Invalid number of versions: " + nVersions); short setSize = readShort(data, p); p += 2; mvd.setVersionSetSize(setSize); for (short i = 0; i < nVersions; i++) { short group = readShort(data, p); p += 2; short backup = readShort(data, p); p += 2; short len = readShort(data, p); String shortName = readUtf8String(data, p); p += 2 + len; len = readShort(data, p); String longName = readUtf8String(data, p); p += 2 + len; mvd.addVersion(new Version(group, backup, shortName, longName)); } }