/// Offset of the identifier in the file.
unsigned int nameOffset;
/// Type ID of referenced object.
- unsigned int typeId;
+ int typeId;
/// File-offset of the object's actual data.
unsigned int dataOffset;
};
unsigned int nameOffset;
/// Target position for linking/inlining.
unsigned int referenceOffset;
- /// Nonzero if the object should be copied rather that
+ /// Target type.
+ int typeId;
+ /// True if the object should be copied rather that
/// just writing a reference.
- unsigned int inlined;
+ bool inlined;
};
struct Image {
};
struct Object {
- unsigned int typeId;
+ int typeId;
unsigned int size;
+
char *RawObject();
Object *Next();
};
struct Array {
- unsigned int typeId;
+ int typeId;
unsigned int size;
bool ref;
+
char *Data();
Array *Next();
};
+struct Script {
+ unsigned int size;
+
+ char *Text();
+ Script *Next();
+};
+
struct ObjectFileHeader {
/// Has to be "L2E\n"
char ident[4];
unsigned int arraysBegin;
unsigned int arraysEnd;
+ /// File-relative offsets of the script section's begin
+ /// and end respectively.
+ /// Each script is an unsigned int with the length in
+ /// bytes followed by the script text.
+ unsigned int scriptsBegin;
+ unsigned int scriptsEnd;
+
ObjectFileHeader();
/// Check if there are any problems with the file header.
Object *ObjectsEnd();
Array *ArraysBegin();
Array *ArraysEnd();
+ Script *ScriptsBegin();
+ Script *ScriptsEnd();
private:
bool CheckSection(