2009-09-17 13:06:04 +00:00
|
|
|
#ifndef MACHOFILE_H
|
|
|
|
#define MACHOFILE_H
|
|
|
|
|
|
|
|
#include "macho_global.h"
|
|
|
|
|
|
|
|
class InternalFile;
|
|
|
|
class MachOFile
|
|
|
|
{
|
|
|
|
public:
|
2016-11-19 16:23:39 +01:00
|
|
|
MachOFile(const std::string& filename, const MachOFile* parent, bool reversedByteOrder = false);
|
|
|
|
MachOFile(const MachOFile& file, bool reversedByteOrder);
|
|
|
|
~MachOFile();
|
|
|
|
|
|
|
|
uint32_t readUint32();
|
|
|
|
uint32_t readUint32LE();
|
|
|
|
uint32_t readUint32BE();
|
|
|
|
|
|
|
|
void readBytes(char* result, size_t size);
|
|
|
|
|
|
|
|
uint32_t getUint32(unsigned int data) const {return (reversedByteOrder?reverseByteOrder(data):data);}
|
|
|
|
static uint32_t getUint32LE(uint32_t data);
|
|
|
|
static uint32_t getUint32BE(uint32_t data);
|
|
|
|
std::string getPath() const;
|
|
|
|
std::string getName() const;
|
|
|
|
std::string getTitle() const;
|
|
|
|
unsigned long long getSize() const;
|
|
|
|
void seek(long long int offset) { position = offset; }
|
|
|
|
long long int getPosition() const { return position; }
|
|
|
|
const std::string& getExecutablePath() const { return executablePath; }
|
|
|
|
time_t getLastModificationTime() const;
|
|
|
|
|
|
|
|
private:
|
|
|
|
static unsigned int convertByteOrder(char* data, bool isBigEndian, unsigned int numberOfBytes);
|
|
|
|
static unsigned int reverseByteOrder(unsigned int data);
|
|
|
|
|
|
|
|
InternalFile* file;
|
|
|
|
long long int position;
|
|
|
|
const bool reversedByteOrder;
|
|
|
|
const MachOFile* parent;
|
|
|
|
std::string executablePath;
|
2009-09-17 13:06:04 +00:00
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
#endif // MACHOFILE_H
|