void AbstractModule::AddLibrary(RefPtr<DartValue> library, TextPosition position) { libraries_.append(LibraryEntry(library, position)); }
void Resources::loadLibraryIndex(const Common::String &libFilename, Common::SeekableReadStream *stream, bool isNewStyle) { uint32 offset, nextOffset; // Create an index entry _indexes[libFilename] = LibraryIndex(); LibraryIndex &index = _indexes[libFilename]; // Read in the number of resources stream->seek(4); int count = 0; if (_vm->getPlatform() != Common::kPlatform3DO) { count = stream->readUint16LE(); if (isNewStyle) stream->seek((count + 1) * 8, SEEK_CUR); // Loop through reading in the entries for (int idx = 0; idx < count; ++idx) { // Read the name of the resource char resName[13]; stream->read(resName, 13); resName[12] = '\0'; // Read the offset offset = stream->readUint32LE(); if (idx == (count - 1)) { nextOffset = stream->size(); } else { // Read the size by jumping forward to read the next entry's offset stream->seek(13, SEEK_CUR); nextOffset = stream->readUint32LE(); stream->seek(-17, SEEK_CUR); } // Add the entry to the index index[resName] = LibraryEntry(idx, offset, nextOffset - offset); } } else { count = stream->readUint16BE(); // 3DO header // Loop through reading in the entries for (int idx = 0; idx < count; ++idx) { // Read the offset offset = stream->readUint32BE(); // Read the name of the resource char resName[13]; stream->read(resName, 13); resName[12] = '\0'; if (idx == (count - 1)) { nextOffset = stream->size(); } else { // Read the size by jumping forward to read the next entry's offset stream->seek(13, SEEK_CUR); nextOffset = stream->readUint32BE(); stream->seek(-17, SEEK_CUR); } // Add the entry to the index index[resName] = LibraryEntry(idx, offset, nextOffset - offset); } } }
void Resources::loadLibraryIndex(const Common::String &libFilename, Common::SeekableReadStream *stream, bool isNewStyle) { uint32 offset, nextOffset; // Return immediately if the library has already been loaded if (_indexes.contains(libFilename)) return; // Create an index entry _indexes[libFilename] = LibraryIndex(); LibraryIndex &index = _indexes[libFilename]; // Read in the number of resources stream->seek(4); int count = 0; if (!IS_3DO) { // PC count = stream->readUint16LE(); if (isNewStyle) stream->seek((count + 1) * 8, SEEK_CUR); // Loop through reading in the entries for (int idx = 0; idx < count; ++idx) { // Read the name of the resource char resName[13]; stream->read(resName, 13); resName[12] = '\0'; // Read the offset offset = stream->readUint32LE(); if (idx == (count - 1)) { nextOffset = stream->size(); } else { // Read the size by jumping forward to read the next entry's offset stream->seek(13, SEEK_CUR); nextOffset = stream->readUint32LE(); stream->seek(-17, SEEK_CUR); } // Add the entry to the index index[resName] = LibraryEntry(idx, offset, nextOffset - offset); } } else { // 3DO count = stream->readUint16BE(); // 3DO header // Loop through reading in the entries // Read offset of first entry offset = stream->readUint32BE(); for (int idx = 0; idx < count; ++idx) { // Read the name of the resource char resName[13]; stream->read(resName, 13); resName[12] = '\0'; stream->skip(3); // filler if (idx == (count - 1)) { nextOffset = stream->size(); } else { // Read the offset of the next entry nextOffset = stream->readUint32BE(); } // Add the entry to the index index[resName] = LibraryEntry(idx, offset, nextOffset - offset); // use next offset as current offset offset = nextOffset; } } }