-void Loader::LoadHeader(LoadedObjectFile &object) {
- ObjectFileHeader *header(object.fileHeader);
- char *charHeader(reinterpret_cast<char *>(header));
-
- object.typeOffsetsBegin = reinterpret_cast<TypeOffset *>(charHeader + sizeof(ObjectFileHeader));
- for (object.typeOffsetsEnd = object.typeOffsetsBegin; object.typeOffsetsEnd->begin != 0 && object.typeOffsetsEnd->end != 0; ++object.typeOffsetsEnd);
-
- object.exportsBegin = reinterpret_cast<Export *>(charHeader + header->exportsBegin);
- object.exportsEnd = reinterpret_cast<Export *>(charHeader + header->exportsEnd);
-
- object.externalsBegin = reinterpret_cast<External *>(charHeader + header->externalsBegin);
- object.externalsEnd = reinterpret_cast<External *>(charHeader + header->externalsEnd);
-
- object.exportStringsBegin = charHeader + header->exportStringsBegin;
- object.exportStringsEnd = charHeader + header->exportStringsEnd;
-
- object.externalStringsBegin = charHeader + header->externalStringsBegin;
- object.externalStringsEnd = charHeader + header->externalStringsEnd;
-
- object.imagesBegin = charHeader + header->imagesBegin;
- object.imagesEnd = charHeader + header->imagesEnd;
-
- object.objectsBegin = charHeader + header->objectsBegin;
- object.objectsEnd = charHeader + header->objectsEnd;
-}
-
-void Loader::LoadExports(LoadedObjectFile &object) {
- for (Export *i(object.exportsBegin); i != object.exportsEnd; ++i) {
- string identifier(object.At(i->nameOffset));
+void Loader::LoadExports(char *src, Export *begin, Export *end) {
+ for (Export *i = begin; i < end; ++i) {
+ string identifier(src + i->nameOffset);