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)
39 : m_nestedString(str, this), m_safety(safe ? IsSafe : IsNotSafe),
45 : m_nestedString(str, this), m_safety(safety), m_needsescape(false)
51 void SafeString::setNeedsEscape(
bool needsEscape)
65 SafeString::NestedString::NestedString(
SafeString *safeString)
66 : m_safeString(safeString)
70 SafeString::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;
148 #if QT_VERSION >= QT_VERSION_CHECK(5, 15, 2)
149 SafeString &SafeString::NestedString::append(QStringView reference)
151 QString::append(reference);
153 return *m_safeString;
157 SafeString &SafeString::NestedString::append(QLatin1String str)
159 QString::append(str);
161 return *m_safeString;
164 SafeString &SafeString::NestedString::append(
const QChar ch)
168 return *m_safeString;
171 void SafeString::NestedString::chop(
int n)
177 SafeString &SafeString::NestedString::fill(QChar ch,
int size)
179 QString::fill(ch, size);
181 return *m_safeString;
184 SafeString &SafeString::NestedString::insert(
int position,
187 QString::insert(position, str.
get());
191 return *m_safeString;
196 QString::insert(position, str);
197 return *m_safeString;
200 SafeString &SafeString::NestedString::insert(
int position,
203 QString::insert(position, str);
204 return *m_safeString;
207 SafeString &SafeString::NestedString::insert(
int position,
const QChar *unicode,
210 QString::insert(position, unicode, size);
211 return *m_safeString;
214 SafeString &SafeString::NestedString::insert(
int position, QChar ch)
216 QString::insert(position, ch);
217 return *m_safeString;
220 SafeString SafeString::NestedString::left(
int n)
const
222 return SafeString(QString::left(n), m_safeString->m_safety);
225 SafeString SafeString::NestedString::leftJustified(
int width, QChar fill,
228 return SafeString(QString::leftJustified(width, fill, truncate),
229 m_safeString->m_safety);
232 SafeString SafeString::NestedString::mid(
int position,
int n)
const
234 return SafeString(QString::mid(position, n), m_safeString->m_safety);
238 SafeString::NestedString::normalized(QString::NormalizationForm mode)
const
240 return SafeString(QString::normalized(mode), m_safeString->m_safety);
244 SafeString::NestedString::normalized(QString::NormalizationForm mode,
245 QChar::UnicodeVersion version)
const
247 return SafeString(QString::normalized(mode, version), m_safeString->m_safety);
252 QString::prepend(str.
get());
256 return *m_safeString;
261 QString::prepend(str);
263 return *m_safeString;
266 SafeString &SafeString::NestedString::prepend(QLatin1String str)
268 QString::prepend(str);
270 return *m_safeString;
273 SafeString &SafeString::NestedString::prepend(QChar ch)
275 QString::prepend(ch);
277 return *m_safeString;
282 QString::push_back(other.
get());
283 m_safeString->m_safety = other.m_safety;
288 QString::push_front(other.
get());
289 m_safeString->m_safety = other.m_safety;
292 SafeString &SafeString::NestedString::remove(
int position,
int n)
294 QString::remove(position, n);
296 return *m_safeString;
299 SafeString &SafeString::NestedString::remove(QChar ch, Qt::CaseSensitivity cs)
301 QString::remove(ch, cs);
303 return *m_safeString;
307 Qt::CaseSensitivity cs)
309 QString::remove(str, cs);
311 return *m_safeString;
315 Qt::CaseSensitivity cs)
317 QString::remove(str, cs);
319 return *m_safeString;
322 SafeString &SafeString::NestedString::remove(
const QRegularExpression &rx)
326 return *m_safeString;
329 SafeString SafeString::NestedString::repeated(
int times)
const
331 return SafeString(QString::repeated(times), m_safeString->m_safety);
334 SafeString &SafeString::NestedString::replace(
int position,
int n,
337 QString::replace(position, n, after.
get());
338 m_safeString->m_safety = after.m_safety;
339 return *m_safeString;
342 SafeString &SafeString::NestedString::replace(
int position,
int n,
345 QString::replace(position, n, after);
347 return *m_safeString;
350 SafeString &SafeString::NestedString::replace(
int position,
int n,
351 const QChar *unicode,
int size)
353 QString::replace(position, n, unicode, size);
355 return *m_safeString;
358 SafeString &SafeString::NestedString::replace(
int position,
int n, QChar after)
360 QString::replace(position, n, after);
362 return *m_safeString;
368 Qt::CaseSensitivity cs)
370 QString::replace(before.
get(), after.
get(), cs);
371 m_safeString->m_safety = after.m_safety;
372 return *m_safeString;
377 Qt::CaseSensitivity cs)
379 QString::replace(before, after.
get(), cs);
381 return *m_safeString;
386 const QString &after, Qt::CaseSensitivity cs)
388 QString::replace(before.
get(), after, cs);
390 return *m_safeString;
395 Qt::CaseSensitivity cs)
397 QString::replace(before, after, cs);
399 return *m_safeString;
402 SafeString &SafeString::NestedString::replace(
const QChar *before,
int blen,
403 const QChar *after,
int alen,
404 Qt::CaseSensitivity cs)
406 QString::replace(before, blen, after, alen, cs);
408 return *m_safeString;
412 Qt::CaseSensitivity cs)
414 QString::replace(ch, after.
get(), cs);
415 m_safeString->m_safety = after.m_safety;
416 return *m_safeString;
420 Qt::CaseSensitivity cs)
422 QString::replace(ch, after, cs);
424 return *m_safeString;
427 SafeString &SafeString::NestedString::replace(QChar before, QChar after,
428 Qt::CaseSensitivity cs)
430 QString::replace(before, after, cs);
432 return *m_safeString;
435 SafeString &SafeString::NestedString::replace(QLatin1String before,
437 Qt::CaseSensitivity cs)
439 QString::replace(before, after, cs);
441 return *m_safeString;
444 SafeString &SafeString::NestedString::replace(QLatin1String before,
446 Qt::CaseSensitivity cs)
448 QString::replace(before, after.
get(), cs);
449 m_safeString->m_safety = after.m_safety;
450 return *m_safeString;
453 SafeString &SafeString::NestedString::replace(QLatin1String before,
455 Qt::CaseSensitivity cs)
457 QString::replace(before, after, cs);
459 return *m_safeString;
465 Qt::CaseSensitivity cs)
467 QString::replace(before.
get(), after, cs);
468 m_safeString->m_safety = before.m_safety;
469 return *m_safeString;
474 Qt::CaseSensitivity cs)
476 QString::replace(before, after, cs);
478 return *m_safeString;
481 SafeString &SafeString::NestedString::replace(QChar c,
483 Qt::CaseSensitivity cs)
485 QString::replace(c, after, cs);
487 return *m_safeString;
490 SafeString &SafeString::NestedString::replace(
const QRegularExpression &rx,
493 QString::replace(rx, after.
get());
494 m_safeString->m_safety = after.m_safety;
495 return *m_safeString;
498 SafeString &SafeString::NestedString::replace(
const QRegularExpression &rx,
501 QString::replace(rx, after);
503 return *m_safeString;
506 SafeString SafeString::NestedString::right(
int n)
const
508 return SafeString(QString::right(n), m_safeString->m_safety);
511 SafeString SafeString::NestedString::rightJustified(
int width, QChar fill,
514 return SafeString(QString::rightJustified(width, fill, truncate),
515 m_safeString->m_safety);
518 SafeString SafeString::NestedString::section(
const QRegularExpression ®,
520 QString::SectionFlags flags)
const
522 return SafeString(QString::section(reg, start, end, flags),
523 m_safeString->m_safety);
526 SafeString SafeString::NestedString::section(QChar sep,
int start,
int end,
527 QString::SectionFlags flags)
const
529 return SafeString(QString::section(sep, start, end, flags),
530 m_safeString->m_safety);
535 QString::SectionFlags flags)
const
537 return SafeString(QString::section(sep, start, end, flags),
538 m_safeString->m_safety);
543 QString::SectionFlags flags)
const
545 return SafeString(QString::section(sep, start, end, flags),
546 m_safeString->m_safety);
549 SafeString &SafeString::NestedString::setNum(
int n,
int base)
551 QString::setNum(n, base);
553 return *m_safeString;
556 SafeString &SafeString::NestedString::setNum(uint n,
int base)
558 QString::setNum(n, base);
560 return *m_safeString;
563 SafeString &SafeString::NestedString::setNum(
long int n,
int base)
565 QString::setNum(n, base);
567 return *m_safeString;
570 SafeString &SafeString::NestedString::setNum(ulong n,
int base)
572 QString::setNum(n, base);
574 return *m_safeString;
577 SafeString &SafeString::NestedString::setNum(qlonglong n,
int base)
579 QString::setNum(n, base);
581 return *m_safeString;
584 SafeString &SafeString::NestedString::setNum(qulonglong n,
int base)
586 QString::setNum(n, base);
588 return *m_safeString;
591 SafeString &SafeString::NestedString::setNum(
short int n,
int base)
593 QString::setNum(n, base);
595 return *m_safeString;
598 SafeString &SafeString::NestedString::setNum(ushort n,
int base)
600 QString::setNum(n, base);
602 return *m_safeString;
605 SafeString &SafeString::NestedString::setNum(
double n,
char format,
608 QString::setNum(n, format, precision);
610 return *m_safeString;
613 SafeString &SafeString::NestedString::setNum(
float n,
char format,
616 QString::setNum(n, format, precision);
618 return *m_safeString;
621 SafeString &SafeString::NestedString::setUnicode(
const QChar *unicode,
int size)
623 QString::setUnicode(unicode, size);
625 return *m_safeString;
628 SafeString &SafeString::NestedString::setUtf16(
const ushort *unicode,
int size)
630 QString::setUtf16(unicode, size);
632 return *m_safeString;
635 SafeString SafeString::NestedString::simplified()
const
637 return SafeString(QString::simplified(), m_safeString->m_safety);
640 #if QT_VERSION < QT_VERSION_CHECK(5, 14, 0)
642 QString::SplitBehavior behavior,
643 Qt::CaseSensitivity cs)
const
645 return QString::split(sep.
get(), behavior, cs);
648 QStringList SafeString::NestedString::split(
const QString &sep,
649 QString::SplitBehavior behavior,
650 Qt::CaseSensitivity cs)
const
652 return QString::split(sep, behavior, cs);
655 QStringList SafeString::NestedString::split(
const QChar &sep,
656 QString::SplitBehavior behavior,
657 Qt::CaseSensitivity cs)
const
659 return QString::split(sep, behavior, cs);
663 SafeString::NestedString::split(
const QRegularExpression &rx,
664 QString::SplitBehavior behavior)
const
666 return QString::split(rx, behavior);
670 Qt::SplitBehavior behavior,
671 Qt::CaseSensitivity cs)
const
673 return QString::split(sep.
get(), behavior, cs);
676 QStringList SafeString::NestedString::split(
const QString &sep,
677 Qt::SplitBehavior behavior,
678 Qt::CaseSensitivity cs)
const
680 return QString::split(sep, behavior, cs);
683 QStringList SafeString::NestedString::split(
const QChar &sep,
684 Qt::SplitBehavior behavior,
685 Qt::CaseSensitivity cs)
const
687 return QString::split(sep, behavior, cs);
691 SafeString::NestedString::split(
const QRegularExpression &rx,
692 Qt::SplitBehavior behavior)
const
694 return QString::split(rx, behavior);
698 SafeString SafeString::NestedString::toLower()
const
703 SafeString SafeString::NestedString::toUpper()
const
708 SafeString SafeString::NestedString::trimmed()
const
710 return SafeString(QString::trimmed(), m_safeString->m_safety);
A QString wrapper class for containing whether a string is safe or needs to be escaped.
SafeString & operator+=(const QString &str)
const NestedString & get() const
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.