21#include "safestring.h"
23#include <QtCore/QStringList>
28 : m_nestedString(this), m_safety(
IsNotSafe), m_needsescape(false)
33 : m_nestedString(safeString.
get(), this), m_safety(safeString.m_safety),
34 m_needsescape(safeString.m_needsescape)
45 : m_nestedString(str, this), m_safety(safety), m_needsescape(false)
51void SafeString::setNeedsEscape(
bool needsEscape)
65SafeString::NestedString::NestedString(
SafeString *safeString)
66 : m_safeString(safeString)
70SafeString::NestedString::NestedString(
const QString &content,
72 :
QString(content), m_safeString(safeString)
80 m_nestedString = str.m_nestedString;
81 m_nestedString.m_safeString =
this;
82 m_safety = str.m_safety;
83 m_needsescape = str.m_needsescape;
107 m_nestedString += str;
116 m_nestedString += str.
get();
124 return m_nestedString == other.
get();
129 return m_nestedString == other;
134 QString::append(str.
get());
138 return *m_safeString;
143 QString::append(str);
145 return *m_safeString;
148SafeString &SafeString::NestedString::append(QStringView reference)
150 QString::append(reference);
152 return *m_safeString;
155SafeString &SafeString::NestedString::append(QLatin1String str)
157 QString::append(str);
159 return *m_safeString;
162SafeString &SafeString::NestedString::append(
const QChar ch)
166 return *m_safeString;
169void SafeString::NestedString::chop(
int n)
175SafeString &SafeString::NestedString::fill(QChar ch,
int size)
177 QString::fill(ch, size);
179 return *m_safeString;
182SafeString &SafeString::NestedString::insert(
int position,
183 const Cutelee::SafeString &str)
185 QString::insert(position, str.
get());
189 return *m_safeString;
192SafeString &SafeString::NestedString::insert(
int position,
const QString &str)
194 QString::insert(position, str);
195 return *m_safeString;
198SafeString &SafeString::NestedString::insert(
int position,
201 QString::insert(position, str);
202 return *m_safeString;
205SafeString &SafeString::NestedString::insert(
int position,
const QChar *unicode,
208 QString::insert(position, unicode, size);
209 return *m_safeString;
212SafeString &SafeString::NestedString::insert(
int position, QChar ch)
214 QString::insert(position, ch);
215 return *m_safeString;
218SafeString SafeString::NestedString::left(
int n)
const
220 return SafeString(QString::left(n), m_safeString->m_safety);
223SafeString SafeString::NestedString::leftJustified(
int width, QChar fill,
226 return SafeString(QString::leftJustified(width, fill, truncate),
227 m_safeString->m_safety);
230SafeString SafeString::NestedString::mid(
int position,
int n)
const
232 return SafeString(QString::mid(position, n), m_safeString->m_safety);
236SafeString::NestedString::normalized(QString::NormalizationForm mode)
const
238 return SafeString(QString::normalized(mode), m_safeString->m_safety);
242SafeString::NestedString::normalized(QString::NormalizationForm mode,
243 QChar::UnicodeVersion version)
const
245 return SafeString(QString::normalized(mode, version), m_safeString->m_safety);
248SafeString &SafeString::NestedString::prepend(
const Cutelee::SafeString &str)
250 QString::prepend(str.
get());
254 return *m_safeString;
257SafeString &SafeString::NestedString::prepend(
const QString &str)
259 QString::prepend(str);
261 return *m_safeString;
264SafeString &SafeString::NestedString::prepend(QLatin1String str)
266 QString::prepend(str);
268 return *m_safeString;
271SafeString &SafeString::NestedString::prepend(QChar ch)
273 QString::prepend(ch);
275 return *m_safeString;
278void SafeString::NestedString::push_back(
const Cutelee::SafeString &other)
280 QString::push_back(other.
get());
281 m_safeString->m_safety = other.m_safety;
284void SafeString::NestedString::push_front(
const Cutelee::SafeString &other)
286 QString::push_front(other.
get());
287 m_safeString->m_safety = other.m_safety;
290SafeString &SafeString::NestedString::remove(
int position,
int n)
292 QString::remove(position, n);
294 return *m_safeString;
297SafeString &SafeString::NestedString::remove(QChar ch, Qt::CaseSensitivity cs)
299 QString::remove(ch, cs);
301 return *m_safeString;
304SafeString &SafeString::NestedString::remove(
const Cutelee::SafeString &str,
305 Qt::CaseSensitivity cs)
307 QString::remove(str, cs);
309 return *m_safeString;
312SafeString &SafeString::NestedString::remove(
const QString &str,
313 Qt::CaseSensitivity cs)
315 QString::remove(str, cs);
317 return *m_safeString;
320SafeString &SafeString::NestedString::remove(
const QRegularExpression &rx)
324 return *m_safeString;
327SafeString SafeString::NestedString::repeated(
int times)
const
329 return SafeString(QString::repeated(times), m_safeString->m_safety);
332SafeString &SafeString::NestedString::replace(
int position,
int n,
333 const Cutelee::SafeString &after)
335 QString::replace(position, n, after.
get());
336 m_safeString->m_safety = after.m_safety;
337 return *m_safeString;
340SafeString &SafeString::NestedString::replace(
int position,
int n,
341 const QString &after)
343 QString::replace(position, n, after);
345 return *m_safeString;
348SafeString &SafeString::NestedString::replace(
int position,
int n,
349 const QChar *unicode,
int size)
351 QString::replace(position, n, unicode, size);
353 return *m_safeString;
356SafeString &SafeString::NestedString::replace(
int position,
int n, QChar after)
358 QString::replace(position, n, after);
360 return *m_safeString;
364SafeString::NestedString::replace(
const Cutelee::SafeString &before,
365 const Cutelee::SafeString &after,
366 Qt::CaseSensitivity cs)
368 QString::replace(before.
get(), after.
get(), cs);
369 m_safeString->m_safety = after.m_safety;
370 return *m_safeString;
373SafeString &SafeString::NestedString::replace(
const QString &before,
374 const Cutelee::SafeString &after,
375 Qt::CaseSensitivity cs)
377 QString::replace(before, after.
get(), cs);
379 return *m_safeString;
383SafeString::NestedString::replace(
const Cutelee::SafeString &before,
384 const QString &after, Qt::CaseSensitivity cs)
386 QString::replace(before.
get(), after, cs);
388 return *m_safeString;
391SafeString &SafeString::NestedString::replace(
const QString &before,
392 const QString &after,
393 Qt::CaseSensitivity cs)
395 QString::replace(before, after, cs);
397 return *m_safeString;
400SafeString &SafeString::NestedString::replace(
const QChar *before,
int blen,
401 const QChar *after,
int alen,
402 Qt::CaseSensitivity cs)
404 QString::replace(before, blen, after, alen, cs);
406 return *m_safeString;
410 Qt::CaseSensitivity cs)
412 QString::replace(ch, after.
get(), cs);
413 m_safeString->m_safety = after.m_safety;
414 return *m_safeString;
417SafeString &SafeString::NestedString::replace(QChar ch,
const QString &after,
418 Qt::CaseSensitivity cs)
420 QString::replace(ch, after, cs);
422 return *m_safeString;
425SafeString &SafeString::NestedString::replace(QChar before, QChar after,
426 Qt::CaseSensitivity cs)
428 QString::replace(before, after, cs);
430 return *m_safeString;
433SafeString &SafeString::NestedString::replace(QLatin1String before,
435 Qt::CaseSensitivity cs)
437 QString::replace(before, after, cs);
439 return *m_safeString;
442SafeString &SafeString::NestedString::replace(QLatin1String before,
443 const Cutelee::SafeString &after,
444 Qt::CaseSensitivity cs)
446 QString::replace(before, after.
get(), cs);
447 m_safeString->m_safety = after.m_safety;
448 return *m_safeString;
451SafeString &SafeString::NestedString::replace(QLatin1String before,
452 const QString &after,
453 Qt::CaseSensitivity cs)
455 QString::replace(before, after, cs);
457 return *m_safeString;
461SafeString::NestedString::replace(
const Cutelee::SafeString &before,
463 Qt::CaseSensitivity cs)
465 QString::replace(before.
get(), after, cs);
466 m_safeString->m_safety = before.m_safety;
467 return *m_safeString;
470SafeString &SafeString::NestedString::replace(
const QString &before,
472 Qt::CaseSensitivity cs)
474 QString::replace(before, after, cs);
476 return *m_safeString;
479SafeString &SafeString::NestedString::replace(QChar c,
481 Qt::CaseSensitivity cs)
483 QString::replace(c, after, cs);
485 return *m_safeString;
488SafeString &SafeString::NestedString::replace(
const QRegularExpression &rx,
489 const Cutelee::SafeString &after)
491 QString::replace(rx, after.
get());
492 m_safeString->m_safety = after.m_safety;
493 return *m_safeString;
496SafeString &SafeString::NestedString::replace(
const QRegularExpression &rx,
497 const QString &after)
499 QString::replace(rx, after);
501 return *m_safeString;
504SafeString SafeString::NestedString::right(
int n)
const
506 return SafeString(QString::right(n), m_safeString->m_safety);
509SafeString SafeString::NestedString::rightJustified(
int width, QChar fill,
512 return SafeString(QString::rightJustified(width, fill, truncate),
513 m_safeString->m_safety);
516SafeString SafeString::NestedString::section(
const QRegularExpression ®,
518 QString::SectionFlags flags)
const
520 return SafeString(QString::section(reg, start, end, flags),
521 m_safeString->m_safety);
524SafeString SafeString::NestedString::section(QChar sep,
int start,
int end,
525 QString::SectionFlags flags)
const
527 return SafeString(QString::section(sep, start, end, flags),
528 m_safeString->m_safety);
531SafeString SafeString::NestedString::section(
const Cutelee::SafeString &sep,
533 QString::SectionFlags flags)
const
535 return SafeString(QString::section(sep, start, end, flags),
536 m_safeString->m_safety);
539SafeString SafeString::NestedString::section(
const QString &sep,
int start,
541 QString::SectionFlags flags)
const
543 return SafeString(QString::section(sep, start, end, flags),
544 m_safeString->m_safety);
547SafeString &SafeString::NestedString::setNum(
int n,
int base)
549 QString::setNum(n, base);
551 return *m_safeString;
554SafeString &SafeString::NestedString::setNum(uint n,
int base)
556 QString::setNum(n, base);
558 return *m_safeString;
561SafeString &SafeString::NestedString::setNum(
long int n,
int base)
563 QString::setNum(n, base);
565 return *m_safeString;
568SafeString &SafeString::NestedString::setNum(ulong n,
int base)
570 QString::setNum(n, base);
572 return *m_safeString;
575SafeString &SafeString::NestedString::setNum(qlonglong n,
int base)
577 QString::setNum(n, base);
579 return *m_safeString;
582SafeString &SafeString::NestedString::setNum(qulonglong n,
int base)
584 QString::setNum(n, base);
586 return *m_safeString;
589SafeString &SafeString::NestedString::setNum(
short int n,
int base)
591 QString::setNum(n, base);
593 return *m_safeString;
596SafeString &SafeString::NestedString::setNum(ushort n,
int base)
598 QString::setNum(n, base);
600 return *m_safeString;
603SafeString &SafeString::NestedString::setNum(
double n,
char format,
606 QString::setNum(n, format, precision);
608 return *m_safeString;
611SafeString &SafeString::NestedString::setNum(
float n,
char format,
614 QString::setNum(n, format, precision);
616 return *m_safeString;
619SafeString &SafeString::NestedString::setUnicode(
const QChar *unicode,
int size)
621 QString::setUnicode(unicode, size);
623 return *m_safeString;
626SafeString &SafeString::NestedString::setUtf16(
const ushort *unicode,
int size)
628 QString::setUtf16(unicode, size);
630 return *m_safeString;
633SafeString SafeString::NestedString::simplified()
const
635 return SafeString(QString::simplified(), m_safeString->m_safety);
638QStringList SafeString::NestedString::split(
const Cutelee::SafeString &sep,
639 Qt::SplitBehavior behavior,
640 Qt::CaseSensitivity cs)
const
642 return QString::split(sep.
get(), behavior, cs);
645QStringList SafeString::NestedString::split(
const QString &sep,
646 Qt::SplitBehavior behavior,
647 Qt::CaseSensitivity cs)
const
649 return QString::split(sep, behavior, cs);
652QStringList SafeString::NestedString::split(
const QChar &sep,
653 Qt::SplitBehavior behavior,
654 Qt::CaseSensitivity cs)
const
656 return QString::split(sep, behavior, cs);
660SafeString::NestedString::split(
const QRegularExpression &rx,
661 Qt::SplitBehavior behavior)
const
663 return QString::split(rx, behavior);
666SafeString SafeString::NestedString::toLower()
const
671SafeString SafeString::NestedString::toUpper()
const
676SafeString SafeString::NestedString::trimmed()
const
678 return SafeString(QString::trimmed(), m_safeString->m_safety);
A QString wrapper class for containing whether a string is safe or needs to be escaped.
const NestedString & get() const
SafeString & operator+=(const QString &str)
SafeString operator+(const QString &str)
SafeString & operator=(const SafeString &str)
bool operator==(const SafeString &other) const
@ IsSafe
The string is safe and requires no further escaping.
The Cutelee namespace holds all public Cutelee API.