XPlor/libs/xassets/xstring.cpp

110 lines
2.0 KiB
C++
Raw Normal View History

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-09-10 21:58:26 -04:00
SetName("String");
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;
}
2025-09-10 21:58:26 -04:00
QString XString::ParseCustom(XDataStream *aStream)
2025-08-14 17:30:25 -04:00
{
QString result;
char currentChar;
*aStream >> currentChar;
while (currentChar != '\0')
{
result += currentChar;
*aStream >> currentChar;
}
return result;
}
2025-09-10 21:58:26 -04:00
XStringArray* XString::ParseArray(XDataStream *aStream, int aCount)
2025-08-14 17:30:25 -04:00
{
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 = "";
}
2025-09-10 21:58:26 -04:00
void XString::ParseData(XDataStream *aStream)
2025-08-14 17:30:25 -04:00
{
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
}
}