Update XString parsing logic

This commit is contained in:
njohnson 2025-09-07 23:12:12 -04:00
parent 0374410315
commit 333de659ed

View File

@ -6,6 +6,8 @@
XString::XString() XString::XString()
: XAsset() : XAsset()
, mString("") , mString("")
, mRemoveString("")
, mContentLength(-1)
{ {
SetName("String"); SetName("String");
} }
@ -13,6 +15,8 @@ XString::XString()
XString::XString(const QString aString) XString::XString(const QString aString)
: XAsset() : XAsset()
, mString(aString) , mString(aString)
, mRemoveString("")
, mContentLength(-1)
{ {
} }
@ -27,6 +31,16 @@ QString XString::GetString() const
return mString; return mString;
} }
void XString::SetRemoveString(const QString aRemoveString)
{
mRemoveString = aRemoveString;
}
void XString::SetContentLength(int aContentLength)
{
mContentLength = aContentLength;
}
void XString::SetString(const QString& aString) void XString::SetString(const QString& aString)
{ {
mString = aString; mString = aString;
@ -68,23 +82,28 @@ void XString::Clear()
} }
void XString::ParseData(QDataStream *aStream) void XString::ParseData(QDataStream *aStream)
{
ParseData(aStream, "");
}
void XString::ParseData(QDataStream *aStream, QString aRemoveStr)
{ {
if (GetPtr() == -1) if (GetPtr() == -1)
{ {
mString = ParseCustom(aStream); if (mContentLength == -1)
if (!aRemoveStr.isEmpty())
{ {
mString = mString.replace(aRemoveStr, ""); mString = ParseCustom(aStream);
} }
else if (mContentLength != 0)
{
QByteArray rawString(mContentLength, Qt::Uninitialized);
aStream->readRawData(rawString.data(), mContentLength);
mString = QString::fromUtf8(rawString);
}
if (!mRemoveString.isEmpty())
{
mString = mString.replace(mRemoveString, "");
}
if (IsDebug()) if (IsDebug())
{ {
qDebug() << QString("[%1] mString = %2").arg(aStream->device()->pos(), 10, 10, QChar('0')).arg(mString); qDebug() << QString("[%1] mString = %2").arg(aStream->device()->pos(), 10, 10, QChar('0')).arg(mString);
} }
} }
} }