54 lines
1.1 KiB
C++

#pragma once
#include "HexRecord.h"
#include <QString>
#include <QList>
#include <QFile>
class CHexFile
{
enum eHexFileStatus
{
STATUS_OK,
STATUS_OK_LAST_INDEX,
ERR_INDEX_OUT_OF_BOUND
};
public:
CHexFile(void);
~CHexFile(void);
int OpenDataFile(QString FilePath, bool CloseIfAlreadyParsed = true);
int CloseOpenedHexFile();
int ParseData(void);
unsigned int GetNBRecords(void);
unsigned long GetFileSize(void);
unsigned long GetFirmwareSize(void){return mFirmwareDataSize;}
bool HexFileLoaded(void){return mFileOpened;}
bool HexDataValid(void){return mFileParsed;}
unsigned long GetTotalParsedRecords(void){return mTotalParsedRecords;}
CHexRecord * GetRecord(int RecordIndex, int &Status);
unsigned long mDiscardedRecords;
unsigned long mTotalParsedRecords;
private:
QFile *mHexfileHandle;
bool mFileOpened;
bool mFileParsed;
bool mRecordsListValid;
//CArray<CHexRecord*,CHexRecord*> mRecordsList;
QList<CHexRecord*> mRecordsList;
// CHexRecord* mRecordsTable[0x3000];
unsigned int mRecordsTableSize;
unsigned int mHighAddress;
unsigned long mHexFileSize;
unsigned long mFirmwareDataSize;
};