28#include "ff7tkformats_export.h"
30#define LGP_COMPANY_NAME_SIZE 12
31#define LGP_PRODUCT_NAME_SIZE 14
33#define LOOKUP_VALUE_MAX 30
34#define LOOKUP_TABLE_ENTRIES LOOKUP_VALUE_MAX * LOOKUP_VALUE_MAX
36#define MAX_CONFLICTS 4096
39# define PACK(structure) \
40 __pragma(pack(push, 1)) \
44# define PACK(structure) structure Q_PACKED
48struct FF7TKFORMATS_EXPORT LgpLookupTableEntry {
56 fileDir(fileDir), tocIndex(tocIndex) {}
64 conflict(conflict), tocIndex(tocIndex) {}
74 const QString &fileName()
const;
75 const QString &fileDir()
const;
76 QString filePath()
const;
77 quint32 filePosition()
const;
78 qint64 fileSize()
const;
79 void setFileName(
const QString &fileName);
80 void setFileDir(
const QString &fileDir);
81 void setFilePath(
const QString &filePath);
82 void setFilePosition(quint32 filePosition);
83 void setFileSize(quint32 fileSize);
84 QIODevice *file(QIODevice *lgp);
85 QIODevice *modifiedFile(QIODevice *lgp);
86 void setFile(QIODevice *io);
87 void setModifiedFile(QIODevice *io);
89 QIODevice *createFile(QIODevice *lgp);
92 quint32 _filePosition;
99class FF7TKFORMATS_EXPORT
LgpIO :
public QIODevice
103 bool open(OpenMode mode)
override;
104 qint64 size()
const override;
105 bool canReadLine()
const override;
107 qint64 readData(
char *data, qint64 maxSize)
override;
108 qint64 writeData(
const char *data, qint64 maxSize)
override;
124 QList<LgpHeaderEntry *> entries(quint16
id)
const;
125 const QMultiHash<quint16, LgpHeaderEntry *> &table()
const;
126 bool hasEntries(quint16
id)
const;
127 bool removeEntry(
const QString &filePath);
128 static bool isNameValid(
const QString &filePath);
129 bool renameEntry(
const QString &filePath,
const QString &newFilePath);
130 bool contains(
const QString &filePath)
const;
132 bool isEmpty()
const;
134 QList<const LgpHeaderEntry *> filesSortedByPosition()
const;
138 static qint32 lookupValue(
const QString &filePath);
139 static quint8 lookupValue(
const QChar &qc);
140 QMultiHash<quint16, LgpHeaderEntry *> _header;
#define PACK(structure)
Definition: Lgp_p.h:44
LgpConflictEntry(const QString &fileDir, quint16 tocIndex=0)
Definition: Lgp_p.h:55
QString fileDir
Definition: Lgp_p.h:57
LgpConflictEntry()
Definition: Lgp_p.h:54
quint16 tocIndex
Definition: Lgp_p.h:58
quint16 tocIndex
Definition: Lgp_p.h:66
quint16 conflict
Definition: Lgp_p.h:65
LgpTocEntry(quint16 tocIndex, quint16 conflict=0)
Definition: Lgp_p.h:63
LgpTocEntry()
Definition: Lgp_p.h:62