mirror of
https://github.com/markdavidlong/AppleSAWS.git
synced 2024-09-27 13:55:21 +00:00
55 lines
1.2 KiB
C++
55 lines
1.2 KiB
C++
#ifndef APPLESOFTFILE_H
|
|
#define APPLESOFTFILE_H
|
|
|
|
#include <QByteArray>
|
|
#include <QStringList>
|
|
#include <QMap>
|
|
#include <QVector>
|
|
|
|
#include "genericfile.h"
|
|
#include "applesofttoken.h"
|
|
|
|
struct ApplesoftLine {
|
|
qint16 address;
|
|
quint16 next_address;
|
|
quint16 linenum;
|
|
QVector<ApplesoftToken> tokens;
|
|
// QString detokenized_line;
|
|
};
|
|
|
|
|
|
class ApplesoftFile : public GenericFile
|
|
{
|
|
public:
|
|
ApplesoftFile(QByteArray data = QByteArray());
|
|
void setData(QByteArray data);
|
|
void setFilename(QString filename) { m_filename = filename; }
|
|
QByteArray extraData();
|
|
// QList<ApplesoftLine> detokenized() { return m_detokenized; }
|
|
QStringList extraDataHexValues();
|
|
|
|
QVector<ApplesoftLine> getLines() const { return m_lines; }
|
|
|
|
QString filename() const { return m_filename; }
|
|
|
|
private:
|
|
void parse(quint16 start_address = 0x0801);
|
|
|
|
QVector<ApplesoftLine> m_lines;
|
|
int m_data_end;
|
|
quint16 m_length;
|
|
QString m_filename;
|
|
// QList<ApplesoftLine> m_detokenized;
|
|
|
|
friend class Retokenizer;
|
|
};
|
|
|
|
class Retokenizer {
|
|
public:
|
|
static void retokenize(ApplesoftLine &line);
|
|
private:
|
|
QByteArray retokenizePart(QByteArray part);
|
|
};
|
|
|
|
#endif // APPLESOFTFILE_H
|