Start writing AST to parse script rather than JSON.
This commit is contained in:
parent
e5f6f6e31c
commit
7e0898d484
243
libs/script/script.cpp
Normal file
243
libs/script/script.cpp
Normal file
@ -0,0 +1,243 @@
|
||||
#include "xdatastream.h"
|
||||
|
||||
#include <QIODevice>
|
||||
#include <QDebug>
|
||||
|
||||
XDataStream::XDataStream(QIODevice *aDevice)
|
||||
: QDataStream(aDevice)
|
||||
, mDebug(false)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
XDataStream::XDataStream()
|
||||
: QDataStream()
|
||||
, mDebug(false)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
XDataStream::XDataStream(const QByteArray &aData)
|
||||
: QDataStream(aData)
|
||||
, mDebug(false)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
XDataStream::XDataStream(QByteArray *aData, OpenMode aFlags)
|
||||
: QDataStream(aData, aFlags)
|
||||
, mDebug(false)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
XDataStream::~XDataStream()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void XDataStream::SetDebug(bool aDebug)
|
||||
{
|
||||
mDebug = aDebug;
|
||||
}
|
||||
|
||||
qint8 XDataStream::ParseInt8(const QString& aDebugString)
|
||||
{
|
||||
qint64 start = this->device()->pos();
|
||||
|
||||
qint8 val;
|
||||
*this >> val;
|
||||
|
||||
if (mDebug)
|
||||
{
|
||||
qDebug() << QString("[%1-%2] Parsed %3: %4")
|
||||
.arg(start, 10, 10, QChar('0'))
|
||||
.arg(this->device()->pos(), 10, 10, QChar('0'))
|
||||
.arg(aDebugString)
|
||||
.arg(val);
|
||||
}
|
||||
return val;
|
||||
}
|
||||
|
||||
quint8 XDataStream::ParseUInt8(const QString& aDebugString)
|
||||
{
|
||||
qint64 start = this->device()->pos();
|
||||
|
||||
quint8 val;
|
||||
*this >> val;
|
||||
|
||||
if (mDebug)
|
||||
{
|
||||
qDebug() << QString("[%1-%2] Parsed %3: %4")
|
||||
.arg(start, 10, 10, QChar('0'))
|
||||
.arg(this->device()->pos(), 10, 10, QChar('0'))
|
||||
.arg(aDebugString)
|
||||
.arg(val);
|
||||
}
|
||||
return val;
|
||||
}
|
||||
|
||||
qint16 XDataStream::ParseInt16(const QString& aDebugString)
|
||||
{
|
||||
qint64 start = this->device()->pos();
|
||||
|
||||
qint16 val;
|
||||
*this >> val;
|
||||
|
||||
if (mDebug)
|
||||
{
|
||||
qDebug() << QString("[%1-%2] Parsed %3: %4")
|
||||
.arg(start, 10, 10, QChar('0'))
|
||||
.arg(this->device()->pos(), 10, 10, QChar('0'))
|
||||
.arg(aDebugString)
|
||||
.arg(val);
|
||||
}
|
||||
return val;
|
||||
}
|
||||
|
||||
quint16 XDataStream::ParseUInt16(const QString& aDebugString)
|
||||
{
|
||||
qint64 start = this->device()->pos();
|
||||
|
||||
quint16 val;
|
||||
*this >> val;
|
||||
|
||||
if (mDebug)
|
||||
{
|
||||
qDebug() << QString("[%1-%2] Parsed %3: %4")
|
||||
.arg(start, 10, 10, QChar('0'))
|
||||
.arg(this->device()->pos(), 10, 10, QChar('0'))
|
||||
.arg(aDebugString)
|
||||
.arg(val);
|
||||
}
|
||||
return val;
|
||||
}
|
||||
|
||||
qint32 XDataStream::ParseInt32(const QString& aDebugString)
|
||||
{
|
||||
qint64 start = this->device()->pos();
|
||||
|
||||
qint32 val;
|
||||
*this >> val;
|
||||
|
||||
if (mDebug)
|
||||
{
|
||||
qDebug() << QString("[%1-%2] Parsed %3: %4")
|
||||
.arg(start, 10, 10, QChar('0'))
|
||||
.arg(this->device()->pos(), 10, 10, QChar('0'))
|
||||
.arg(aDebugString)
|
||||
.arg(val);
|
||||
}
|
||||
return val;
|
||||
}
|
||||
|
||||
quint32 XDataStream::ParseUInt32(const QString& aDebugString)
|
||||
{
|
||||
qint64 start = this->device()->pos();
|
||||
|
||||
quint32 val;
|
||||
*this >> val;
|
||||
|
||||
if (mDebug)
|
||||
{
|
||||
qDebug() << QString("[%1-%2] Parsed %3: %4")
|
||||
.arg(start, 10, 10, QChar('0'))
|
||||
.arg(this->device()->pos(), 10, 10, QChar('0'))
|
||||
.arg(aDebugString)
|
||||
.arg(val);
|
||||
}
|
||||
return val;
|
||||
}
|
||||
|
||||
qint64 XDataStream::ParseInt64(const QString& aDebugString)
|
||||
{
|
||||
qint64 start = this->device()->pos();
|
||||
|
||||
qint64 val;
|
||||
*this >> val;
|
||||
|
||||
if (mDebug)
|
||||
{
|
||||
qDebug() << QString("[%1-%2] Parsed %3: %4")
|
||||
.arg(start, 10, 10, QChar('0'))
|
||||
.arg(this->device()->pos(), 10, 10, QChar('0'))
|
||||
.arg(aDebugString)
|
||||
.arg(val);
|
||||
}
|
||||
return val;
|
||||
}
|
||||
|
||||
quint64 XDataStream::ParseUInt64(const QString& aDebugString)
|
||||
{
|
||||
qint64 start = this->device()->pos();
|
||||
|
||||
quint64 val;
|
||||
*this >> val;
|
||||
|
||||
if (mDebug)
|
||||
{
|
||||
qDebug() << QString("[%1-%2] Parsed %3: %4")
|
||||
.arg(start, 10, 10, QChar('0'))
|
||||
.arg(this->device()->pos(), 10, 10, QChar('0'))
|
||||
.arg(aDebugString)
|
||||
.arg(val);
|
||||
}
|
||||
return val;
|
||||
}
|
||||
|
||||
float XDataStream::ParseSingle(const QString& aDebugString)
|
||||
{
|
||||
qint64 start = this->device()->pos();
|
||||
|
||||
|
||||
float val;
|
||||
quint32 rawVal;
|
||||
*this >> rawVal;
|
||||
memcpy(&val, &rawVal, sizeof(val));
|
||||
|
||||
if (mDebug)
|
||||
{
|
||||
qDebug() << QString("[%1-%2] Parsed %3: %4")
|
||||
.arg(start, 10, 10, QChar('0'))
|
||||
.arg(this->device()->pos(), 10, 10, QChar('0'))
|
||||
.arg(aDebugString)
|
||||
.arg(val);
|
||||
}
|
||||
return val;
|
||||
}
|
||||
|
||||
double XDataStream::ParseDouble(const QString& aDebugString)
|
||||
{
|
||||
qint64 start = this->device()->pos();
|
||||
|
||||
float val;
|
||||
*this >> val;
|
||||
|
||||
if (mDebug)
|
||||
{
|
||||
qDebug() << QString("[%1-%2] Parsed %3: %4")
|
||||
.arg(start, 10, 10, QChar('0'))
|
||||
.arg(this->device()->pos(), 10, 10, QChar('0'))
|
||||
.arg(aDebugString)
|
||||
.arg(val);
|
||||
}
|
||||
return val;
|
||||
}
|
||||
|
||||
bool XDataStream::ParseBool(const QString &aDebugString)
|
||||
{
|
||||
qint64 start = this->device()->pos();
|
||||
|
||||
char val;
|
||||
*this >> val;
|
||||
|
||||
if (mDebug)
|
||||
{
|
||||
qDebug() << QString("[%1-%2] Parsed %3: %4")
|
||||
.arg(start, 10, 10, QChar('0'))
|
||||
.arg(this->device()->pos(), 10, 10, QChar('0'))
|
||||
.arg(aDebugString)
|
||||
.arg(val);
|
||||
}
|
||||
return val;
|
||||
}
|
||||
34
libs/script/script.h
Normal file
34
libs/script/script.h
Normal file
@ -0,0 +1,34 @@
|
||||
#ifndef SCRIPT_H
|
||||
#define SCRIPT_H
|
||||
|
||||
#include <QDataStream>
|
||||
#include <QString>
|
||||
|
||||
class XDataStream : public QDataStream
|
||||
{
|
||||
public:
|
||||
explicit XDataStream(QIODevice* aDevice);
|
||||
XDataStream();
|
||||
XDataStream(const QByteArray& aData);
|
||||
XDataStream(QByteArray* aData, OpenMode aFlags);
|
||||
~XDataStream();
|
||||
|
||||
void SetDebug(bool aDebug = true);
|
||||
|
||||
qint8 ParseInt8(const QString& aDebugString = "");
|
||||
quint8 ParseUInt8(const QString& aDebugString = "");
|
||||
qint16 ParseInt16(const QString& aDebugString = "");
|
||||
quint16 ParseUInt16(const QString& aDebugString = "");
|
||||
qint32 ParseInt32(const QString& aDebugString = "");
|
||||
quint32 ParseUInt32(const QString& aDebugString = "");
|
||||
qint64 ParseInt64(const QString& aDebugString = "");
|
||||
quint64 ParseUInt64(const QString& aDebugString = "");
|
||||
float ParseSingle(const QString& aDebugString = "");
|
||||
double ParseDouble(const QString& aDebugString = "");
|
||||
bool ParseBool(const QString& aDebugString = "");
|
||||
|
||||
private:
|
||||
bool mDebug;
|
||||
};
|
||||
|
||||
#endif // SCRIPT_H
|
||||
8
libs/script/script.pro
Normal file
8
libs/script/script.pro
Normal file
@ -0,0 +1,8 @@
|
||||
QT += core widgets
|
||||
TEMPLATE = lib
|
||||
CONFIG += staticlib c++17
|
||||
|
||||
SOURCES += $$files($$PWD/*.cpp, true)
|
||||
HEADERS += $$files($$PWD/*.h, true)
|
||||
|
||||
DESTDIR = $$OUT_PWD/../
|
||||
Loading…
x
Reference in New Issue
Block a user