2025-08-14 17:30:25 -04:00
|
|
|
#include "xstring.h"
|
|
|
|
|
|
2025-09-07 12:36:08 -04:00
|
|
|
#include <QDebug>
|
|
|
|
|
#include <QIODevice>
|
|
|
|
|
|
2025-08-14 17:30:25 -04:00
|
|
|
XString::XString()
|
|
|
|
|
: XAsset()
|
|
|
|
|
, mString("")
|
2025-09-07 23:12:12 -04:00
|
|
|
, mRemoveString("")
|
|
|
|
|
, mContentLength(-1)
|
2025-08-14 17:30:25 -04:00
|
|
|
{
|
2025-09-07 12:36:08 -04:00
|
|
|
SetName("String");
|
2025-08-14 17:30:25 -04:00
|
|
|
}
|
|
|
|
|
|
2025-08-17 13:14:17 -04:00
|
|
|
XString::XString(const QString aString)
|
|
|
|
|
: XAsset()
|
|
|
|
|
, mString(aString)
|
2025-09-07 23:12:12 -04:00
|
|
|
, mRemoveString("")
|
|
|
|
|
, mContentLength(-1)
|
2025-08-17 13:14:17 -04:00
|
|
|
{
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
2025-08-14 17:30:25 -04:00
|
|
|
XString::~XString()
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
QString XString::GetString() const
|
|
|
|
|
{
|
|
|
|
|
return mString;
|
|
|
|
|
}
|
|
|
|
|
|
2025-09-07 23:12:12 -04:00
|
|
|
void XString::SetRemoveString(const QString aRemoveString)
|
|
|
|
|
{
|
|
|
|
|
mRemoveString = aRemoveString;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void XString::SetContentLength(int aContentLength)
|
|
|
|
|
{
|
|
|
|
|
mContentLength = aContentLength;
|
|
|
|
|
}
|
|
|
|
|
|
2025-08-14 17:30:25 -04:00
|
|
|
void XString::SetString(const QString& aString)
|
|
|
|
|
{
|
|
|
|
|
mString = aString;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
QString XString::ParseCustom(QDataStream *aStream)
|
|
|
|
|
{
|
|
|
|
|
QString result;
|
|
|
|
|
char currentChar;
|
|
|
|
|
|
|
|
|
|
*aStream >> currentChar;
|
|
|
|
|
while (currentChar != '\0')
|
|
|
|
|
{
|
|
|
|
|
result += currentChar;
|
|
|
|
|
|
|
|
|
|
*aStream >> currentChar;
|
|
|
|
|
}
|
|
|
|
|
return result;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
XStringArray* XString::ParseArray(QDataStream *aStream, int aCount)
|
|
|
|
|
{
|
|
|
|
|
XStringArray* result = new XStringArray();
|
|
|
|
|
|
|
|
|
|
for (int i = 0; i < aCount; i++)
|
|
|
|
|
{
|
|
|
|
|
XString* string = new XString();
|
|
|
|
|
string->ParseCustom(aStream);
|
|
|
|
|
|
|
|
|
|
result->append(string);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return result;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void XString::Clear()
|
|
|
|
|
{
|
|
|
|
|
mString = "";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void XString::ParseData(QDataStream *aStream)
|
|
|
|
|
{
|
|
|
|
|
if (GetPtr() == -1)
|
|
|
|
|
{
|
2025-09-07 23:12:12 -04:00
|
|
|
if (mContentLength == -1)
|
|
|
|
|
{
|
|
|
|
|
mString = ParseCustom(aStream);
|
|
|
|
|
}
|
|
|
|
|
else if (mContentLength != 0)
|
|
|
|
|
{
|
|
|
|
|
QByteArray rawString(mContentLength, Qt::Uninitialized);
|
|
|
|
|
aStream->readRawData(rawString.data(), mContentLength);
|
|
|
|
|
mString = QString::fromUtf8(rawString);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (!mRemoveString.isEmpty())
|
2025-09-07 12:36:08 -04:00
|
|
|
{
|
2025-09-07 23:12:12 -04:00
|
|
|
mString = mString.replace(mRemoveString, "");
|
2025-09-07 12:36:08 -04:00
|
|
|
}
|
2025-09-07 23:12:12 -04:00
|
|
|
|
2025-09-07 12:36:08 -04:00
|
|
|
if (IsDebug())
|
|
|
|
|
{
|
|
|
|
|
qDebug() << QString("[%1] mString = %2").arg(aStream->device()->pos(), 10, 10, QChar('0')).arg(mString);
|
|
|
|
|
}
|
2025-08-14 17:30:25 -04:00
|
|
|
}
|
|
|
|
|
}
|