| Qore Programming Language - C/C++ Library 1.12.2

QoreString.h
1 /* -*- mode: c++; indent-tabs-mode: nil -*- */
2 /*
3 QoreString.h
4
5 QoreString Class Definition
6
7 Qore Programming Language
8
9 Copyright (C) 2003 - 2022 Qore Technologies, s.r.o.
10
11 Permission is hereby granted, free of charge, to any person obtaining a
12 copy of this software and associated documentation files (the "Software"),
13 to deal in the Software without restriction, including without limitation
14 the rights to use, copy, modify, merge, publish, distribute, sublicense,
15 and/or sell copies of the Software, and to permit persons to whom the
16 Software is furnished to do so, subject to the following conditions:
17
18 The above copyright notice and this permission notice shall be included in
19 all copies or substantial portions of the Software.
20
21 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
22 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
23 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
24 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
25 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
26 FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
27 DEALINGS IN THE SOFTWARE.
28
29 Note that the Qore library is released under a choice of three open-source
30 licenses: MIT (as above), LGPL 2+, or GPL 2+; see README-LICENSE for more
31 information.
32 */
33
34 #ifndef _QORE_QORESTRING_H
35
36 #define _QORE_QORESTRING_H
37
38 #include <cstdarg>
39 #include <string>
40
41 class DateTime;
42 class BinaryNode;
43
45
49 #define CE_HTML (1 << 0)
51 #define CE_XML (1 << 1)
53 #define CE_NONASCII (1 << 2)
55 #define CE_XHTML (CE_HTML | CE_XML)
57 #define CE_ALL (CE_XHTML | CE_NONASCII)
59
61
65 #define CD_HTML (1 << 0)
67 #define CD_XML (1 << 1)
69 #define CD_NUM_REF (1 << 2)
71 #define CD_XHTML (CD_HTML | CD_XML)
73 #define CD_ALL (CD_XHTML | CD_NUM_REF)
75
77
81 #define QS_RE_GLOBAL (1 << 0)
82 #define QS_RE_CASELESS (1 << 1)
83 #define QS_RE_DOTALL (1 << 2)
84 #define QS_RE_EXTENDED (1 << 3)
85 #define QS_RE_MULTILINE (1 << 4)
87
89
93 class QoreString {
94 friend struct qore_string_private;
95
96 public:
98 DLLEXPORT QoreString();
99
101 DLLEXPORT QoreString(bool b);
102
104 DLLEXPORT QoreString(const char* str);
105
107 DLLEXPORT QoreString(const char* str, const QoreEncoding* new_qorecharset);
108
110 DLLEXPORT QoreString(const QoreEncoding* new_qorecharset);
111
113 DLLEXPORT QoreString(const char* str, size_t len, const QoreEncoding* new_qorecharset = QCS_DEFAULT);
114
116 DLLEXPORT QoreString(const std::string& str, const QoreEncoding* new_encoding = QCS_DEFAULT);
117
119 DLLEXPORT QoreString(char c);
120
122 DLLEXPORT QoreString(const QoreString& str);
123
125 DLLEXPORT QoreString(const QoreString* str);
126
128 DLLEXPORT QoreString(const QoreString* str, size_t len);
129
131 DLLEXPORT QoreString(int64 i);
132
134 DLLEXPORT QoreString(double f);
135
137 DLLEXPORT QoreString(const DateTime* date);
138
140 DLLEXPORT QoreString(const BinaryNode* bin);
141
143 DLLEXPORT QoreString(const BinaryNode* bin, size_t maxlinelen);
144
146 DLLEXPORT QoreString(char* nbuf, size_t nlen, size_t nallocated, const QoreEncoding* enc);
147
149 DLLEXPORT ~QoreString();
150
152
154 DLLEXPORT size_t length() const;
155
157 DLLEXPORT void set(const char* str, const QoreEncoding* new_qorecharset = QCS_DEFAULT);
158
160
162 DLLEXPORT void set(const char* str, size_t len);
163
165 DLLEXPORT void set(const std::string& str, const QoreEncoding* new_qorecharset = QCS_DEFAULT);
166
168 DLLEXPORT void set(const QoreString* str);
169
171 DLLEXPORT void set(const QoreString& str);
172
174 DLLEXPORT void set(char* nbuf, size_t nlen, size_t nallocated, const QoreEncoding* enc);
175
177 DLLEXPORT void setEncoding(const QoreEncoding* new_encoding);
178
180
190 DLLEXPORT int concatEncode(ExceptionSink* xsink, const QoreString& str, unsigned code = CE_XHTML);
191
193
205 DLLEXPORT int concatDecode(ExceptionSink* xsink, const QoreString& str, unsigned code = CD_ALL);
206
208
211 DLLEXPORT void concatAndHTMLEncode(const char* str);
212
214
217 DLLEXPORT void concatAndHTMLDecode(const QoreString* str);
218
220
223 DLLEXPORT void concatAndHTMLDecode(const char* str, size_t slen);
224
226
229 DLLEXPORT void concatAndHTMLDecode(const char* str);
230
232
234 DLLEXPORT void concatDecodeUrl(const char* url);
235
237 DLLEXPORT int concatDecodeUrl(const QoreString& url, ExceptionSink* xsink);
238
240
244 DLLEXPORT int concatEncodeUrl(ExceptionSink* xsink, const QoreString& url, bool encode_all = false);
245
247
250 DLLEXPORT int concatDecodeUriRequest(const QoreString& url, ExceptionSink* xsink);
251
253
258 DLLEXPORT int concatEncodeUriRequest(ExceptionSink* xsink, const QoreString& url);
259
261 DLLEXPORT void concatEscape(const QoreString* str, char c, char esc_char, ExceptionSink* xsink);
262
264 DLLEXPORT void concatEscape(const char* str, char c, char esc_char = '\\');
265
267
273 DLLEXPORT void concatAndHTMLEncode(const QoreString* str, ExceptionSink* xsink);
274
276 DLLEXPORT void concat(const QoreString* str, ExceptionSink* xsink);
277
279
285 DLLEXPORT int concat(const QoreString& str, qore_offset_t pos, ExceptionSink* xsink);
286
288
295 DLLEXPORT int concat(const QoreString& str, qore_offset_t pos, qore_offset_t len, ExceptionSink* xsink);
296
298
303 DLLEXPORT void concat(const QoreString* str, size_t size, ExceptionSink* xsink);
304
306 DLLEXPORT void concatBase64(const char* buf, size_t size);
307
309 DLLEXPORT void concatBase64(const BinaryNode* bin);
310
312 DLLEXPORT void concatBase64(const QoreString* str);
313
315 DLLEXPORT void concatBase64(const char* buf, size_t size, size_t maxlinelen);
316
318 DLLEXPORT void concatBase64(const BinaryNode* bin, size_t maxlinelen);
319
321 DLLEXPORT void concatBase64(const QoreString* str, size_t maxlinelen);
322
324
328 DLLEXPORT BinaryNode* parseBase64(ExceptionSink* xsink) const;
329
331
335 DLLEXPORT QoreString* parseBase64ToString(ExceptionSink* xsink) const;
336
338
343 DLLEXPORT QoreString* parseBase64ToString(const QoreEncoding* enc, ExceptionSink* xsink) const;
344
346
348 DLLEXPORT void concatHex(const char* buf, size_t size);
349
351 DLLEXPORT void concatHex(const BinaryNode* bin);
352
354 DLLEXPORT void concatHex(const QoreString* str);
355
357
361 DLLEXPORT BinaryNode* parseHex(ExceptionSink* xsink) const;
362
364 DLLEXPORT void concat(const DateTime* d);
365
367 DLLEXPORT void concatISO8601DateTime(const DateTime* d);
368
370 DLLEXPORT void concat(const char* str);
371
373 DLLEXPORT void concat(const std::string& str);
374
376 DLLEXPORT void concat(const char* str, size_t size);
377
379 DLLEXPORT void concat(const char c);
380
382
387 DLLEXPORT int compareSoft(const QoreString* str, ExceptionSink* xsink) const;
388
390
394 DLLEXPORT int compare(const QoreString* str) const;
395
397
401 DLLEXPORT int compare(const char* str) const;
402
404
406 DLLEXPORT bool equal(const QoreString& str) const;
407
409
411 DLLEXPORT bool equal(const char* str) const;
412
414
420 DLLEXPORT bool equalSoft(const QoreString& str, ExceptionSink* xsink) const;
421
423
425 DLLEXPORT bool equalPartial(const QoreString& str) const;
426
428
430 DLLEXPORT bool equalPartial(const char* str) const;
431
433
439 DLLEXPORT bool equalPartialSoft(const QoreString& str, ExceptionSink* xsink) const;
440
442
448 DLLEXPORT bool equalPartialPath(const QoreString& str, ExceptionSink* xsink) const;
449
451
453 DLLEXPORT bool startsWith(const char* str) const;
454
456
458 DLLEXPORT bool startsWith(const std::string& str) const;
459
461
463 DLLEXPORT bool endsWith(const char* str) const;
464
466
468 DLLEXPORT bool endsWith(const std::string& str) const;
469
471 DLLEXPORT void terminate(size_t size);
472
474
476 DLLEXPORT void reserve(size_t size);
477
479
481 DLLEXPORT int sprintf(const char* fmt, ...);
482
484
486 DLLEXPORT int vsprintf(const char* fmt, va_list args);
487
489
491 DLLEXPORT void take(char* str);
492
494 DLLEXPORT void take(char* str, const QoreEncoding* enc);
496
497 DLLEXPORT void take(char* str, size_t size);
498
500 DLLEXPORT void take(char* str, size_t size, const QoreEncoding* enc);
501
503 DLLEXPORT void takeAndTerminate(char* str, size_t size);
504
506 DLLEXPORT void takeAndTerminate(char* str, size_t size, const QoreEncoding* enc);
507
509
514 DLLEXPORT QoreString* convertEncoding(const QoreEncoding* nccs, ExceptionSink* xsink) const;
515
517
520 DLLEXPORT char* giveBuffer();
521
523 DLLEXPORT void clear();
524
526
528 DLLEXPORT void reset();
529
531
533 DLLEXPORT void replaceAll(const char* old_str, const char* new_str);
534
536
538 DLLEXPORT void replace(size_t offset, size_t len, const char* str);
539
541
543 DLLEXPORT void replace(size_t offset, size_t len, const QoreString* str, ExceptionSink* xsink);
544
546
548 DLLEXPORT void replaceChar(size_t offset, char c);
549
551
555 DLLEXPORT void splice(qore_offset_t offset, ExceptionSink* xsink);
556
558
563 DLLEXPORT void splice(qore_offset_t offset, qore_offset_t length, ExceptionSink* xsink);
564
566
572 DLLEXPORT void splice(qore_offset_t offset, qore_offset_t length, QoreValue strn, ExceptionSink* xsink);
573
575
581 DLLEXPORT void splice(qore_offset_t offset, qore_offset_t length, const QoreString& str, ExceptionSink* xsink);
582
584
589 DLLEXPORT QoreString* extract(qore_offset_t offset, ExceptionSink* xsink);
590
592
598 DLLEXPORT QoreString* extract(qore_offset_t offset, qore_offset_t length, ExceptionSink* xsink);
599
601
608 DLLEXPORT QoreString* extract(qore_offset_t offset, qore_offset_t length, QoreValue strn, ExceptionSink* xsink);
609
611
616 DLLEXPORT QoreString* substr(qore_offset_t offset, ExceptionSink* xsink) const;
617
619
627 DLLEXPORT QoreString* substr(qore_offset_t offset, qore_offset_t length, ExceptionSink* xsink) const;
628
630
639 DLLEXPORT QoreString* regexSubst(QoreString& match, QoreString& subst, int opts, ExceptionSink* xsink) const;
640
642
652 DLLEXPORT int regexSubst(QoreString& output, QoreString& match, QoreString& subst, int opts,
653 ExceptionSink* xsink) const;
654
656
666 DLLEXPORT int regexSubstInPlace(QoreString& match, QoreString& subst, int opts, ExceptionSink* xsink) const;
667
669 DLLEXPORT size_t chomp();
670
672 DLLEXPORT const QoreEncoding* getEncoding() const;
673
675 DLLEXPORT QoreString* copy() const;
676
678
680 DLLEXPORT void tolwr();
681
683
685 DLLEXPORT void toupr();
686
688 DLLEXPORT size_t strlen() const;
689
691 DLLEXPORT size_t size() const;
692
694 DLLEXPORT size_t capacity() const;
695
697 DLLEXPORT const char* getBuffer() const;
698
700 DLLEXPORT const char* c_str() const;
701
703
705 DLLEXPORT void allocate(unsigned requested_size);
706
708
714 DLLEXPORT int insertch(char c, size_t pos, unsigned times);
715
717
722 DLLEXPORT int insert(const char* str, size_t pos);
723
725 DLLEXPORT void addch(char c, unsigned times);
726
728
734 DLLEXPORT void concatUTF8FromUnicode(unsigned code);
735
737
741 DLLEXPORT int concatUnicode(unsigned code, ExceptionSink* xsink);
742
744
748 DLLEXPORT int concatUnicode(unsigned code);
749
751
754 DLLEXPORT QoreString* reverse() const;
755
757
759 DLLEXPORT void trim_trailing(const char* chars = 0);
760
762
764 DLLEXPORT void trim_leading(const char* chars = 0);
765
767
769 DLLEXPORT void trim(const char* chars = 0);
770
772
774 DLLEXPORT void trim_trailing(char c);
775
777
779 DLLEXPORT void trim_single_trailing(char c);
780
782
784 DLLEXPORT void trim_leading(char c);
785
787
789 DLLEXPORT void trim_single_leading(char c);
790
792
794 DLLEXPORT void trim(char c);
795
797
803 DLLEXPORT int trim(ExceptionSink* xsink, const QoreString* chars = nullptr);
804
806
812 DLLEXPORT int trimLeading(ExceptionSink* xsink, const QoreString* chars = nullptr);
813
815
821 DLLEXPORT int trimTrailing(ExceptionSink* xsink, const QoreString* chars = nullptr);
822
824
828 DLLEXPORT unsigned int getUnicodePointFromUTF8(qore_offset_t offset = 0) const;
829
831
836 DLLEXPORT unsigned int getUnicodePoint(qore_offset_t offset, ExceptionSink* xsink) const;
837
839
847 DLLEXPORT unsigned int getUnicodePointFromBytePos(size_t offset, unsigned& len, ExceptionSink* xsink) const;
848
850 DLLEXPORT void prepend(const char* str);
851
853 DLLEXPORT void prepend(const char* str, size_t size);
854
856 DLLEXPORT QoreString& operator=(const QoreString& other);
857
859 DLLEXPORT QoreString& operator=(const char* other);
860
862 DLLEXPORT QoreString& operator=(const std::string& other);
863
865 DLLEXPORT bool operator==(const QoreString& other) const;
866
868 DLLEXPORT bool operator==(const std::string& other) const;
869
871 DLLEXPORT bool operator==(const char* other) const;
872
874 DLLLOCAL bool operator!=(const QoreString& other) const {
875 return !(*this == other);
876 }
877
879 DLLLOCAL bool operator!=(const std::string& other) const {
880 return !(*this == other);
881 }
882
884 DLLLOCAL bool operator!=(const char* other) const {
885 return !(*this == other);
886 }
887
889
893 DLLEXPORT int operator[](qore_offset_t pos) const;
894
896 DLLEXPORT QoreString& operator+=(const char* str);
897
899 DLLEXPORT QoreString& operator+=(const std::string& str);
900
902 DLLEXPORT bool empty() const;
903
905 DLLEXPORT qore_offset_t index(const QoreString& needle, qore_offset_t pos, ExceptionSink* xsink) const;
906
908 DLLEXPORT qore_offset_t bindex(const QoreString& needle, qore_offset_t pos = 0) const;
909
911 DLLEXPORT qore_offset_t bindex(const char* needle, qore_offset_t pos = 0) const;
912
914 DLLEXPORT qore_offset_t bindex(const std::string& needle, qore_offset_t pos = 0) const;
915
917
923 DLLEXPORT qore_offset_t rindex(const QoreString& needle, qore_offset_t pos, ExceptionSink* xsink) const;
924
926 DLLEXPORT qore_offset_t brindex(const QoreString& needle, qore_offset_t pos = -1) const;
927
929 DLLEXPORT qore_offset_t brindex(const char* needle, qore_offset_t pos = -1) const;
930
932 DLLEXPORT qore_offset_t brindex(const std::string& needle, qore_offset_t pos = -1) const;
933
935 DLLEXPORT qore_offset_t find(char c, qore_offset_t pos = 0) const;
936
938 DLLEXPORT qore_offset_t rfind(char c, qore_offset_t pos = -1) const;
939
941
943 DLLEXPORT qore_offset_t find(const char* str, qore_offset_t pos = 0) const;
944
946
948 DLLEXPORT qore_offset_t rfind(const char* str, qore_offset_t pos = -1) const;
949
951
953 DLLEXPORT qore_offset_t find(const std::string& str, qore_offset_t pos = 0) const;
954
956
958 DLLEXPORT qore_offset_t rfind(const std::string& str, qore_offset_t pos = -1) const;
959
961 DLLEXPORT qore_offset_t findAny(const char *str, qore_offset_t pos = 0) const;
962
964 DLLEXPORT qore_offset_t rfindAny(const char *str, qore_offset_t pos = -1) const;
965
967
969 DLLEXPORT bool isDataPrintableAscii() const;
970
972
974 DLLEXPORT bool isDataAscii() const;
975
977 DLLEXPORT int64 toBigInt() const;
978
980
988 DLLEXPORT size_t getCharWidth(ExceptionSink* xsink) const;
989
991
996 DLLEXPORT qore_offset_t getByteOffset(size_t i, ExceptionSink* xsink) const;
997
998 // concatenates a qorestring without converting encodings - internal only
999 DLLLOCAL void concat(const QoreString* str);
1000
1001 // private constructor
1002 DLLLOCAL QoreString(struct qore_string_private* p);
1003
1004 protected:
1006 struct qore_string_private* priv = nullptr;
1007
1008 // writes a new QoreString with the characters reversed of the "this" QoreString
1009 // assumes the encoding is the same and the length is 0
1010 DLLLOCAL void concat_reverse(QoreString* targ) const;
1011
1012 DLLLOCAL int snprintf(size_t size, const char* fmt, ...);
1013 DLLLOCAL int vsnprintf(size_t size, const char* fmt, va_list args);
1014 };
1015
1016 DLLEXPORT QoreString* checkEncoding(const QoreString* str, const QoreEncoding* enc, ExceptionSink* xsink);
1017
1018 class QoreStringMaker : public QoreString {
1019 public:
1021
1023 DLLEXPORT QoreStringMaker(const char* fmt, ...);
1024
1026
1028 DLLEXPORT QoreStringMaker(const QoreEncoding* enc, const char* fmt, ...);
1029
1030 private:
1031 DLLLOCAL QoreStringMaker(const QoreStringMaker& str) = delete;
1032 DLLLOCAL QoreStringMaker& operator=(const QoreStringMaker&) = delete;
1033 };
1034
1036
1045 class TempString {
1046 public:
1048 DLLLOCAL TempString() : str(new QoreString) {
1049 }
1050
1052 DLLLOCAL TempString(const QoreEncoding* enc) : str(new QoreString(enc)) {
1053 }
1054
1056 DLLLOCAL TempString(QoreString* s) {
1057 str = s;
1058 }
1059
1061 DLLLOCAL ~TempString() {
1062 delete str;
1063 }
1064
1066 DLLLOCAL QoreString* operator->(){ return str; };
1067
1069 DLLLOCAL QoreString* operator*() { return str; };
1070
1072 DLLLOCAL operator bool() const { return str != nullptr; }
1073
1075 DLLLOCAL QoreString* release() {
1076 QoreString* rv = str;
1077 str = nullptr;
1078 return rv;
1079 }
1080
1081 private:
1082 QoreString* str;
1083
1084 TempString(const TempString&) = delete;
1085 TempString& operator=(const TempString&) = delete;
1086 void* operator new(size_t) = delete;
1087 };
1088
1090
1104 class TempEncodingHelper {
1105 public:
1107
1112 DLLLOCAL TempEncodingHelper(const QoreString& s, const QoreEncoding* qe, ExceptionSink* xsink) {
1113 set_intern(&s, qe, xsink);
1114 }
1115
1117
1122 DLLLOCAL TempEncodingHelper(const QoreString* s, const QoreEncoding* qe, ExceptionSink* xsink) {
1123 set_intern(s, qe, xsink);
1124 }
1125
1127 DLLLOCAL TempEncodingHelper() {
1128 }
1129
1131 DLLLOCAL ~TempEncodingHelper() {
1132 discard_intern();
1133 }
1134
1136
1145 DLLLOCAL int set(const QoreString* s, const QoreEncoding* qe, ExceptionSink* xsink) {
1146 discard_intern();
1147
1148 set_intern(s, qe, xsink);
1149 return str != nullptr;
1150 }
1151
1153 DLLLOCAL bool is_temp() const {
1154 return temp;
1155 }
1156
1158 DLLLOCAL void makeTemp() {
1159 if (!temp && str) {
1160 str = new QoreString(*str);
1161 temp = true;
1162 }
1163 }
1164
1166 DLLLOCAL const QoreString* operator->(){ return str; };
1167
1169 DLLLOCAL const QoreString* operator*() { return str; };
1170
1172
1175 DLLLOCAL operator bool() const { return str != 0; }
1176
1178
1181 DLLLOCAL char* giveBuffer() {
1182 if (!str)
1183 return nullptr;
1184 if (temp)
1185 return str->giveBuffer();
1186 return strdup(str->getBuffer());
1187 }
1188
1190
1192 DLLEXPORT void removeBom();
1193
1194 private:
1195 QoreString* str = nullptr;
1196 bool temp = false;
1197
1198 DLLLOCAL TempEncodingHelper(const TempEncodingHelper&) = delete;
1199 DLLLOCAL TempEncodingHelper& operator=(const TempEncodingHelper&) = delete;
1200 DLLLOCAL void* operator new(size_t) = delete;
1201
1203 DLLLOCAL void discard_intern() {
1204 if (temp && str)
1205 delete str;
1206 }
1207
1209
1214 DLLLOCAL void set_intern(const QoreString* s, const QoreEncoding* qe, ExceptionSink* xsink) {
1215 if (s->getEncoding() != qe) {
1216 str = s->convertEncoding(qe, xsink);
1217 temp = true;
1218 } else {
1219 str = const_cast<QoreString* >(s);
1220 temp = false;
1221 }
1222 }
1223 };
1224
1226
1228 DLLEXPORT size_t qore_get_unicode_character_width(int ucs);
1229
1230 #endif
QCS_DEFAULT
DLLEXPORT const QoreEncoding * QCS_DEFAULT
the default encoding for the Qore library
BinaryNode
holds arbitrary binary data
Definition: BinaryNode.h:41
DateTime
Holds absolute and relative date/time values in Qore with precision to the microsecond.
Definition: DateTime.h:93
ExceptionSink
container for holding Qore-language exception information and also for registering a "thread_exit" ca...
Definition: ExceptionSink.h:48
QoreEncoding
defines string encoding functions in Qore
Definition: QoreEncoding.h:83
QoreString
Qore's string type supported by the QoreEncoding class.
Definition: QoreString.h:93
QoreString::concatEncodeUriRequest
DLLEXPORT int concatEncodeUriRequest(ExceptionSink *xsink, const QoreString &url)
concatenates a URI-encoded version of the c-string passed
QoreString::set
DLLEXPORT void set(const char *str, const QoreEncoding *new_qorecharset=QCS_DEFAULT)
copies the c-string passed and sets the value of the string and its encoding
QoreString::capacity
DLLEXPORT size_t capacity() const
returns number of bytes allocated for the string's buffer, capacity is always >= size
QoreString::reset
DLLEXPORT void reset()
reset string to zero length; memory is deallocated; string encoding is reset to QCS_DEFAULT
QoreString::takeAndTerminate
DLLEXPORT void takeAndTerminate(char *str, size_t size)
takes ownership of the character pointer passed and assigns it to the string (frees memory previously...
QoreString::strlen
DLLEXPORT size_t strlen() const
returns number of bytes in the string (not including the null pointer)
QoreString::concatISO8601DateTime
DLLEXPORT void concatISO8601DateTime(const DateTime *d)
concatenates a DateTime value to a string in the format YYYYMMDDTHH:mm:SS <- where the "T" is a liter...
QoreString::splice
DLLEXPORT void splice(qore_offset_t offset, ExceptionSink *xsink)
removes characters from the string starting at position "offset"
QoreString::trim_single_leading
DLLEXPORT void trim_single_leading(char c)
remove a single leading character if present
QoreString::concatHex
DLLEXPORT void concatHex(const char *buf, size_t size)
concatenates hexidecimal digits corresponding to the binary data passed up to byte "len"
QoreString::insertch
DLLEXPORT int insertch(char c, size_t pos, unsigned times)
insert a character at a certain position in the string a number of times
QoreString::trim_leading
DLLEXPORT void trim_leading(const char *chars=0)
remove leading whitespace or other characters
QoreString::take
DLLEXPORT void take(char *str)
takes ownership of the character pointer passed and assigns it to the string (frees memory previously...
QoreString::compare
DLLEXPORT int compare(const QoreString *str) const
compares two strings without converting encodings (if the encodings do not match then "this" is deeme...
QoreString::operator[]
DLLEXPORT int operator[](qore_offset_t pos) const
returns the byte (not character) at the given location; if the location is invalid,...
QoreString::clear
DLLEXPORT void clear()
reset string to zero length; memory is not deallocated; string encoding does not change
QoreString::getUnicodePoint
DLLEXPORT unsigned int getUnicodePoint(qore_offset_t offset, ExceptionSink *xsink) const
return Unicode code point for the single character at the given character (not byte) offset in the st...
QoreString::equalPartial
DLLEXPORT bool equalPartial(const QoreString &str) const
returns true if the beginning of the current string matches the argument string, false if not,...
QoreString::isDataAscii
DLLEXPORT bool isDataAscii() const
returns true if the string is empty or has no characters with the high bit set (ie all characters < 1...
QoreString::equalPartialSoft
DLLEXPORT bool equalPartialSoft(const QoreString &str, ExceptionSink *xsink) const
returns true if the beginning of the current string matches the argument string, false if not,...
QoreString::index
DLLEXPORT qore_offset_t index(const QoreString &needle, qore_offset_t pos, ExceptionSink *xsink) const
returns the character position of a substring within the string or -1 if not found
QoreString::concatUTF8FromUnicode
DLLEXPORT void concatUTF8FromUnicode(unsigned code)
append a UTF-8 character sequence from a unicode code point, assumes the string is tagged with QCS_UT...
QoreString::terminate
DLLEXPORT void terminate(size_t size)
terminates the string at byte position "size", the string is reallocated if necessary
QoreString::allocate
DLLEXPORT void allocate(unsigned requested_size)
Ensure the internal buffer has at least expected size in bytes.
QoreString::replaceChar
DLLEXPORT void replaceChar(size_t offset, char c)
replaces a byte with the byte passed
QoreString::trimTrailing
DLLEXPORT int trimTrailing(ExceptionSink *xsink, const QoreString *chars=nullptr)
removes trailing whitespace or other characters
QoreString::toBigInt
DLLEXPORT int64 toBigInt() const
returns the value of the string as an int64
QoreString::getCharWidth
DLLEXPORT size_t getCharWidth(ExceptionSink *xsink) const
returns the character width of the string
QoreString::regexSubstInPlace
DLLEXPORT int regexSubstInPlace(QoreString &match, QoreString &subst, int opts, ExceptionSink *xsink) const
performs perl5-compatible regular expression substitution to the current string
QoreString::reserve
DLLEXPORT void reserve(size_t size)
ensures that at least the given size is available in the string; the string's contents are not affect...
QoreString::brindex
DLLEXPORT qore_offset_t brindex(const QoreString &needle, qore_offset_t pos=-1) const
returns the byte position of a substring within the string searching in reverse from a given position...
QoreString::concat
DLLEXPORT void concat(const QoreString *str, ExceptionSink *xsink)
concatenates a string and converts encodings if necessary
QoreString::substr
DLLEXPORT QoreString * substr(qore_offset_t offset, ExceptionSink *xsink) const
returns a new string consisting of all the characters from the current string starting with character...
QoreString::length
DLLEXPORT size_t length() const
returns the number of characters (not bytes) in the string
QoreString::find
DLLEXPORT qore_offset_t find(char c, qore_offset_t pos=0) const
returns the byte position of a character (byte) within the string or -1 if not found
QoreString::endsWith
DLLEXPORT bool endsWith(const char *str) const
returns true if the current string ends with the argument string (bytes)
QoreString::trim_trailing
DLLEXPORT void trim_trailing(const char *chars=0)
remove trailing whitespace or other characters
QoreString::findAny
DLLEXPORT qore_offset_t findAny(const char *str, qore_offset_t pos=0) const
returns the byte position of any of the given characters (bytes) within the string or -1 if not found
QoreString::concatEscape
DLLEXPORT void concatEscape(const QoreString *str, char c, char esc_char, ExceptionSink *xsink)
concatenates a string and escapes character c with esc_char (converts encodings if necessary)
QoreString::equalPartialPath
DLLEXPORT bool equalPartialPath(const QoreString &str, ExceptionSink *xsink) const
returns true if the begining of the current string matches the argument string where either both stri...
QoreString::addch
DLLEXPORT void addch(char c, unsigned times)
append a character to the string a number of times
QoreString::getUnicodePointFromBytePos
DLLEXPORT unsigned int getUnicodePointFromBytePos(size_t offset, unsigned &len, ExceptionSink *xsink) const
return Unicode code point for the given byte offset
QoreString::operator+=
DLLEXPORT QoreString & operator+=(const char *str)
concatenates the characters to the string; assumes the string to be concatenated is already in the ch...
QoreString::sprintf
DLLEXPORT int sprintf(const char *fmt,...)
this will concatentate a formatted string to the existing string according to the format string and t...
QoreString::rfindAny
DLLEXPORT qore_offset_t rfindAny(const char *str, qore_offset_t pos=-1) const
returns the last byte position of any of the given characters (bytes) within the string or -1 if not ...
QoreString::size
DLLEXPORT size_t size() const
returns number of bytes in the string (not including the null pointer)
QoreString::rindex
DLLEXPORT qore_offset_t rindex(const QoreString &needle, qore_offset_t pos, ExceptionSink *xsink) const
returns the character position of a substring searching in reverse from a given position or -1 if not...
QoreString::operator=
DLLEXPORT QoreString & operator=(const QoreString &other)
assigns the value of one string to another
QoreString::concatDecodeUriRequest
DLLEXPORT int concatDecodeUriRequest(const QoreString &url, ExceptionSink *xsink)
concatenates a URI-decoded version of the c-string passed
QoreString::startsWith
DLLEXPORT bool startsWith(const char *str) const
returns true if the current string starts with the argument string (bytes)
QoreString::concatEncode
DLLEXPORT int concatEncode(ExceptionSink *xsink, const QoreString &str, unsigned code=CE_XHTML)
concatenates a string and encodes it according to the encoding argument passed
QoreString::QoreString
DLLEXPORT QoreString()
creates an empty string and assigns the default encoding QCS_DEFAULT
QoreString::bindex
DLLEXPORT qore_offset_t bindex(const QoreString &needle, qore_offset_t pos=0) const
returns the byte position of a substring within the string or -1 if not found
QoreString::copy
DLLEXPORT QoreString * copy() const
returns an exact copy of the string
QoreString::concatAndHTMLDecode
DLLEXPORT void concatAndHTMLDecode(const QoreString *str)
concatenates HTML-decoded version of the c-string passed
QoreString::giveBuffer
DLLEXPORT char * giveBuffer()
returns the character buffer and leaves the QoreString empty, the caller owns the memory returned (mu...
QoreString::trim_single_trailing
DLLEXPORT void trim_single_trailing(char c)
remove a single trailing character if present
QoreString::replace
DLLEXPORT void replace(size_t offset, size_t len, const char *str)
replaces bytes with the string passed
QoreString::getByteOffset
DLLEXPORT qore_offset_t getByteOffset(size_t i, ExceptionSink *xsink) const
returns the byte position of the given character position in the string or -1 if the string does not ...
QoreString::compareSoft
DLLEXPORT int compareSoft(const QoreString *str, ExceptionSink *xsink) const
compares the string with another string, performing character set encoding conversion if necessary
QoreString::equal
DLLEXPORT bool equal(const QoreString &str) const
returns true if the strings are equal, false if not, if the character encodings are different,...
QoreString::reverse
DLLEXPORT QoreString * reverse() const
return a Qorestring with the characters reversed
QoreString::concatDecodeUrl
DLLEXPORT void concatDecodeUrl(const char *url)
concatenates a URL-decoded version of the c-string passed
QoreString::concatBase64
DLLEXPORT void concatBase64(const char *buf, size_t size)
concatenates the base64-encoded version of the binary data passed
QoreString::chomp
DLLEXPORT size_t chomp()
removes a single \n\r or \n from the end of the string and returns the number of characters removed
QoreString::trim
DLLEXPORT void trim(const char *chars=0)
remove leading and trailing whitespace or other characters
QoreString::toupr
DLLEXPORT void toupr()
converts the string to upper-case in place
QoreString::operator!=
DLLLOCAL bool operator!=(const QoreString &other) const
returns true if the other string is not equal to this string (encodings also must be equal)
Definition: QoreString.h:874
QoreString::parseHex
DLLEXPORT BinaryNode * parseHex(ExceptionSink *xsink) const
parses the current string data as hexadecimal-encoded data and returns it as a BinaryNode pointer (ca...
QoreString::rfind
DLLEXPORT qore_offset_t rfind(char c, qore_offset_t pos=-1) const
returns the last byte position of a character (byte) within the string or -1 if not found
QoreString::operator==
DLLEXPORT bool operator==(const QoreString &other) const
returns true if the other string is equal to this string (encodings also must be equal)
QoreString::setEncoding
DLLEXPORT void setEncoding(const QoreEncoding *new_encoding)
changes the tagged encoding to the given encoding; does not affect the actual string buffer,...
QoreString::empty
DLLEXPORT bool empty() const
returns true if the string is empty, false if not
QoreString::getUnicodePointFromUTF8
DLLEXPORT unsigned int getUnicodePointFromUTF8(qore_offset_t offset=0) const
return Unicode code point for character offset, string must be UTF-8
QoreString::parseBase64
DLLEXPORT BinaryNode * parseBase64(ExceptionSink *xsink) const
parses the current string data as base64-encoded data and returns it as a BinaryNode pointer (caller ...
QoreString::extract
DLLEXPORT QoreString * extract(qore_offset_t offset, ExceptionSink *xsink)
removes characters from the string starting at position "offset" and returns a string of the characte...
QoreString::vsprintf
DLLEXPORT int vsprintf(const char *fmt, va_list args)
this will concatentate a formatted string to the existing string according to the format string and t...
QoreString::prepend
DLLEXPORT void prepend(const char *str)
prepends the string given to the string, assumes character encoding is the same as the string's
QoreString::insert
DLLEXPORT int insert(const char *str, size_t pos)
inserts a character string at a certain position in the string
QoreString::concatEncodeUrl
DLLEXPORT int concatEncodeUrl(ExceptionSink *xsink, const QoreString &url, bool encode_all=false)
concatenates a URL-encoded version of the c-string passed
QoreString::concatAndHTMLEncode
DLLEXPORT void concatAndHTMLEncode(const char *str)
concatenates HTML-encoded version of the c-string passed
QoreString::isDataPrintableAscii
DLLEXPORT bool isDataPrintableAscii() const
returns true if the string is empty or only contains printable non-control ASCII characters (ie all c...
QoreString::trimLeading
DLLEXPORT int trimLeading(ExceptionSink *xsink, const QoreString *chars=nullptr)
removes leading whitespace or other characters
QoreString::concatDecode
DLLEXPORT int concatDecode(ExceptionSink *xsink, const QoreString &str, unsigned code=CD_ALL)
concatenates a string and decodes HTML, XML, and numeric character references as per the supplied arg...
QoreString::priv
struct qore_string_private * priv
the private implementation of QoreString
Definition: QoreString.h:1006
QoreString::replaceAll
DLLEXPORT void replaceAll(const char *old_str, const char *new_str)
replaces all occurences of the first string with the second string
QoreString::parseBase64ToString
DLLEXPORT QoreString * parseBase64ToString(ExceptionSink *xsink) const
parses the current string data as base64-encoded data and returns it as a QoreString pointer owned by...
QoreString::c_str
DLLEXPORT const char * c_str() const
returns the string's buffer; this data should not be changed
QoreString::concatUnicode
DLLEXPORT int concatUnicode(unsigned code, ExceptionSink *xsink)
append a character sequence from a unicode code point (returns 0 for OK, -1 for exception)
QoreString::getEncoding
DLLEXPORT const QoreEncoding * getEncoding() const
returns the encoding for the string
QoreString::equalSoft
DLLEXPORT bool equalSoft(const QoreString &str, ExceptionSink *xsink) const
returns true if the strings are equal, false if not, if the character encodings are different,...
QoreString::tolwr
DLLEXPORT void tolwr()
converts the string to lower-case in place
QoreString::getBuffer
DLLEXPORT const char * getBuffer() const
returns the string's buffer; this data should not be changed
QoreString::convertEncoding
DLLEXPORT QoreString * convertEncoding(const QoreEncoding *nccs, ExceptionSink *xsink) const
converts the encoding of the string to the specified encoding, returns 0 if an error occurs,...
QoreString::regexSubst
DLLEXPORT QoreString * regexSubst(QoreString &match, QoreString &subst, int opts, ExceptionSink *xsink) const
performs perl5-compatible regular expression substitution
QoreString::~QoreString
DLLEXPORT ~QoreString()
frees any memory allocated by the string
TempEncodingHelper
use this class to manage strings where the character encoding must be specified and may be different ...
Definition: QoreString.h:1104
TempEncodingHelper::~TempEncodingHelper
DLLLOCAL ~TempEncodingHelper()
deletes any temporary string being managed by the object
Definition: QoreString.h:1131
TempEncodingHelper::giveBuffer
DLLLOCAL char * giveBuffer()
returns a char pointer of the string, the caller owns the pointer returned (it must be manually freed...
Definition: QoreString.h:1181
TempEncodingHelper::removeBom
DLLEXPORT void removeBom()
remove any leading byte order marker (BOM) from UTF-16* strings
TempEncodingHelper::operator->
DLLLOCAL const QoreString * operator->()
returns the string being managed
Definition: QoreString.h:1166
TempEncodingHelper::TempEncodingHelper
DLLLOCAL TempEncodingHelper()
creates an empty TempEncodingHelperObject that may be initialized with TempEncodingHelper::set() late...
Definition: QoreString.h:1127
TempEncodingHelper::makeTemp
DLLLOCAL void makeTemp()
ensures that the object is holding a temporary value
Definition: QoreString.h:1158
TempEncodingHelper::set
DLLLOCAL int set(const QoreString *s, const QoreEncoding *qe, ExceptionSink *xsink)
discards any current state and sets and converts (if necessary) a new string to the desired encoding
Definition: QoreString.h:1145
TempEncodingHelper::operator*
DLLLOCAL const QoreString * operator*()
returns the string being managed
Definition: QoreString.h:1169
TempEncodingHelper::is_temp
DLLLOCAL bool is_temp() const
returns true if a temporary string is being managed
Definition: QoreString.h:1153
TempString
class used to hold a possibly temporary QoreString pointer, stack only, cannot be dynamically allocat...
Definition: QoreString.h:1045
TempString::operator*
DLLLOCAL QoreString * operator*()
returns the QoreString pointer being managed
Definition: QoreString.h:1069
TempString::TempString
DLLLOCAL TempString()
populates the object with a new QoreString that this object will manage
Definition: QoreString.h:1048
TempString::release
DLLLOCAL QoreString * release()
releases the QoreString pointer being managed and sets the internal pointer to 0
Definition: QoreString.h:1075
TempString::operator->
DLLLOCAL QoreString * operator->()
returns the QoreString pointer being managed
Definition: QoreString.h:1066
TempString::~TempString
DLLLOCAL ~TempString()
deletes the QoreString pointer being managed
Definition: QoreString.h:1061
qore_offset_t
intptr_t qore_offset_t
used for offsets that could be negative
Definition: common.h:76
int64
long long int64
64bit integer type, cannot use int64_t here since it breaks the API on some 64-bit systems due to equ...
Definition: common.h:260
QoreValue
The main value class in Qore, designed to be passed by value.
Definition: QoreValue.h:275