openshot-audio  0.1.7
juce_String.h
Go to the documentation of this file.
1 /*
2  ==============================================================================
3 
4  This file is part of the juce_core module of the JUCE library.
5  Copyright (c) 2015 - ROLI Ltd.
6 
7  Permission to use, copy, modify, and/or distribute this software for any purpose with
8  or without fee is hereby granted, provided that the above copyright notice and this
9  permission notice appear in all copies.
10 
11  THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD
12  TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN
13  NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
14  DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER
15  IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
16  CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
17 
18  ------------------------------------------------------------------------------
19 
20  NOTE! This permissive ISC license applies ONLY to files within the juce_core module!
21  All other JUCE modules are covered by a dual GPL/commercial license, so if you are
22  using any other modules, be sure to check that you also comply with their license.
23 
24  For more details, visit www.juce.com
25 
26  ==============================================================================
27 */
28 
29 #ifndef JUCE_STRING_H_INCLUDED
30 #define JUCE_STRING_H_INCLUDED
31 
32 
33 //==============================================================================
44 {
45 public:
46  //==============================================================================
50  String() noexcept;
51 
53  String (const String& other) noexcept;
54 
55  #if JUCE_COMPILER_SUPPORTS_MOVE_SEMANTICS
56  String (String&& other) noexcept;
57  #endif
58 
72  String (const char* text);
73 
90  String (const char* text, size_t maxChars);
91 
95  String (const wchar_t* text);
96 
100  String (const wchar_t* text, size_t maxChars);
101 
102  //==============================================================================
104  String (const CharPointer_UTF8 text);
105 
107  String (const CharPointer_UTF8 text, size_t maxChars);
108 
110  String (const CharPointer_UTF8 start, const CharPointer_UTF8 end);
111 
112  //==============================================================================
114  String (const CharPointer_UTF16 text);
115 
117  String (const CharPointer_UTF16 text, size_t maxChars);
118 
120  String (const CharPointer_UTF16 start, const CharPointer_UTF16 end);
121 
122  //==============================================================================
124  String (const CharPointer_UTF32 text);
125 
127  String (const CharPointer_UTF32 text, size_t maxChars);
128 
130  String (const CharPointer_UTF32 start, const CharPointer_UTF32 end);
131 
132  //==============================================================================
134  String (const CharPointer_ASCII text);
135 
137  String (const std::string&);
138 
139  //==============================================================================
141  static String charToString (juce_wchar character);
142 
144  ~String() noexcept;
145 
146  //==============================================================================
152  static const String empty;
153 
166  #if (JUCE_STRING_UTF_TYPE == 32)
167  typedef CharPointer_UTF32 CharPointerType;
168  #elif (JUCE_STRING_UTF_TYPE == 16)
169  typedef CharPointer_UTF16 CharPointerType;
170  #elif (DOXYGEN || JUCE_STRING_UTF_TYPE == 8)
171  typedef CharPointer_UTF8 CharPointerType;
172  #else
173  #error "You must set the value of JUCE_STRING_UTF_TYPE to be either 8, 16, or 32!"
174  #endif
175 
176  //==============================================================================
178  int hashCode() const noexcept;
179 
181  int64 hashCode64() const noexcept;
182 
184  size_t hash() const noexcept;
185 
187  int length() const noexcept;
188 
189  //==============================================================================
190  // Assignment and concatenation operators..
191 
193  String& operator= (const String& other) noexcept;
194 
195  #if JUCE_COMPILER_SUPPORTS_MOVE_SEMANTICS
196  String& operator= (String&& other) noexcept;
197  #endif
198 
200  String& operator+= (const String& stringToAppend);
202  String& operator+= (const char* textToAppend);
204  String& operator+= (const wchar_t* textToAppend);
206  String& operator+= (int numberToAppend);
208  String& operator+= (int64 numberToAppend);
210  String& operator+= (char characterToAppend);
212  String& operator+= (wchar_t characterToAppend);
213  #if ! JUCE_NATIVE_WCHAR_IS_UTF32
214 
215  String& operator+= (juce_wchar characterToAppend);
216  #endif
217 
223  void append (const String& textToAppend, size_t maxCharsToTake);
224 
230  void appendCharPointer (const CharPointerType startOfTextToAppend,
231  const CharPointerType endOfTextToAppend);
232 
238  template <class CharPointer>
239  void appendCharPointer (const CharPointer startOfTextToAppend,
240  const CharPointer endOfTextToAppend)
241  {
242  jassert (startOfTextToAppend.getAddress() != nullptr && endOfTextToAppend.getAddress() != nullptr);
243 
244  size_t extraBytesNeeded = 0, numChars = 1;
245 
246  for (CharPointer t (startOfTextToAppend); t != endOfTextToAppend && ! t.isEmpty(); ++numChars)
247  extraBytesNeeded += CharPointerType::getBytesRequiredFor (t.getAndAdvance());
248 
249  if (extraBytesNeeded > 0)
250  {
251  const size_t byteOffsetOfNull = getByteOffsetOfEnd();
252 
253  preallocateBytes (byteOffsetOfNull + extraBytesNeeded);
254  CharPointerType (addBytesToPointer (text.getAddress(), (int) byteOffsetOfNull))
255  .writeWithCharLimit (startOfTextToAppend, (int) numChars);
256  }
257  }
258 
260  void appendCharPointer (const CharPointerType textToAppend);
261 
267  template <class CharPointer>
268  void appendCharPointer (const CharPointer textToAppend, size_t maxCharsToTake)
269  {
270  if (textToAppend.getAddress() != nullptr)
271  {
272  size_t extraBytesNeeded = 0, numChars = 1;
273 
274  for (CharPointer t (textToAppend); numChars <= maxCharsToTake && ! t.isEmpty(); ++numChars)
275  extraBytesNeeded += CharPointerType::getBytesRequiredFor (t.getAndAdvance());
276 
277  if (extraBytesNeeded > 0)
278  {
279  const size_t byteOffsetOfNull = getByteOffsetOfEnd();
280 
281  preallocateBytes (byteOffsetOfNull + extraBytesNeeded);
282  CharPointerType (addBytesToPointer (text.getAddress(), (int) byteOffsetOfNull))
283  .writeWithCharLimit (textToAppend, (int) numChars);
284  }
285  }
286  }
287 
289  template <class CharPointer>
290  void appendCharPointer (const CharPointer textToAppend)
291  {
292  appendCharPointer (textToAppend, std::numeric_limits<size_t>::max());
293  }
294 
295  //==============================================================================
296  // Comparison methods..
297 
302  inline bool isEmpty() const noexcept { return text.isEmpty(); }
303 
308  inline bool isNotEmpty() const noexcept { return ! text.isEmpty(); }
309 
311  void clear() noexcept;
312 
314  bool equalsIgnoreCase (const String& other) const noexcept;
315 
317  bool equalsIgnoreCase (StringRef other) const noexcept;
318 
320  bool equalsIgnoreCase (const wchar_t* other) const noexcept;
321 
323  bool equalsIgnoreCase (const char* other) const noexcept;
324 
329  int compare (const String& other) const noexcept;
330 
335  int compare (const char* other) const noexcept;
336 
341  int compare (const wchar_t* other) const noexcept;
342 
347  int compareIgnoreCase (const String& other) const noexcept;
348 
357  int compareNatural (StringRef other) const noexcept;
358 
363  bool startsWith (StringRef text) const noexcept;
364 
369  bool startsWithChar (juce_wchar character) const noexcept;
370 
375  bool startsWithIgnoreCase (StringRef text) const noexcept;
376 
381  bool endsWith (StringRef text) const noexcept;
382 
387  bool endsWithChar (juce_wchar character) const noexcept;
388 
393  bool endsWithIgnoreCase (StringRef text) const noexcept;
394 
399  bool contains (StringRef text) const noexcept;
400 
404  bool containsChar (juce_wchar character) const noexcept;
405 
409  bool containsIgnoreCase (StringRef text) const noexcept;
410 
417  bool containsWholeWord (StringRef wordToLookFor) const noexcept;
418 
425  bool containsWholeWordIgnoreCase (StringRef wordToLookFor) const noexcept;
426 
434  int indexOfWholeWord (StringRef wordToLookFor) const noexcept;
435 
443  int indexOfWholeWordIgnoreCase (StringRef wordToLookFor) const noexcept;
444 
451  bool containsAnyOf (StringRef charactersItMightContain) const noexcept;
452 
460  bool containsOnly (StringRef charactersItMightContain) const noexcept;
461 
469  bool containsNonWhitespaceChars() const noexcept;
470 
478  bool matchesWildcard (StringRef wildcard, bool ignoreCase) const noexcept;
479 
480  //==============================================================================
481  // Substring location methods..
482 
488  int indexOfChar (juce_wchar characterToLookFor) const noexcept;
489 
497  int indexOfChar (int startIndex, juce_wchar characterToLookFor) const noexcept;
498 
511  int indexOfAnyOf (StringRef charactersToLookFor,
512  int startIndex = 0,
513  bool ignoreCase = false) const noexcept;
514 
520  int indexOf (StringRef textToLookFor) const noexcept;
521 
529  int indexOf (int startIndex, StringRef textToLookFor) const noexcept;
530 
536  int indexOfIgnoreCase (StringRef textToLookFor) const noexcept;
537 
545  int indexOfIgnoreCase (int startIndex, StringRef textToLookFor) const noexcept;
546 
551  int lastIndexOfChar (juce_wchar character) const noexcept;
552 
558  int lastIndexOf (StringRef textToLookFor) const noexcept;
559 
565  int lastIndexOfIgnoreCase (StringRef textToLookFor) const noexcept;
566 
579  int lastIndexOfAnyOf (StringRef charactersToLookFor,
580  bool ignoreCase = false) const noexcept;
581 
582 
583  //==============================================================================
584  // Substring extraction and manipulation methods..
585 
597  juce_wchar operator[] (int index) const noexcept;
598 
602  juce_wchar getLastCharacter() const noexcept;
603 
604  //==============================================================================
615  String substring (int startIndex, int endIndex) const;
616 
625  String substring (int startIndex) const;
626 
636  String dropLastCharacters (int numberToDrop) const;
637 
645  String getLastCharacters (int numCharacters) const;
646 
647  //==============================================================================
663  String fromFirstOccurrenceOf (StringRef substringToStartFrom,
664  bool includeSubStringInResult,
665  bool ignoreCase) const;
666 
675  String fromLastOccurrenceOf (StringRef substringToFind,
676  bool includeSubStringInResult,
677  bool ignoreCase) const;
678 
692  String upToFirstOccurrenceOf (StringRef substringToEndWith,
693  bool includeSubStringInResult,
694  bool ignoreCase) const;
695 
703  String upToLastOccurrenceOf (StringRef substringToFind,
704  bool includeSubStringInResult,
705  bool ignoreCase) const;
706 
707  //==============================================================================
709  String trim() const;
710 
712  String trimStart() const;
713 
715  String trimEnd() const;
716 
723  String trimCharactersAtStart (StringRef charactersToTrim) const;
724 
731  String trimCharactersAtEnd (StringRef charactersToTrim) const;
732 
733  //==============================================================================
735  String toUpperCase() const;
736 
738  String toLowerCase() const;
739 
740  //==============================================================================
756  String replaceSection (int startIndex,
757  int numCharactersToReplace,
758  StringRef stringToInsert) const;
759 
767  String replace (StringRef stringToReplace,
768  StringRef stringToInsertInstead,
769  bool ignoreCase = false) const;
770 
772  String replaceCharacter (juce_wchar characterToReplace,
773  juce_wchar characterToInsertInstead) const;
774 
785  String replaceCharacters (StringRef charactersToReplace,
786  StringRef charactersToInsertInstead) const;
787 
797  String retainCharacters (StringRef charactersToRetain) const;
798 
808  String removeCharacters (StringRef charactersToRemove) const;
809 
815  String initialSectionContainingOnly (StringRef permittedCharacters) const;
816 
823  String initialSectionNotContaining (StringRef charactersToStopAt) const;
824 
825  //==============================================================================
832  bool isQuotedString() const;
833 
844  String unquoted() const;
845 
857  String quoted (juce_wchar quoteCharacter = '"') const;
858 
859 
860  //==============================================================================
866  static String repeatedString (StringRef stringToRepeat,
867  int numberOfTimesToRepeat);
868 
872  String paddedLeft (juce_wchar padCharacter, int minimumLength) const;
873 
877  String paddedRight (juce_wchar padCharacter, int minimumLength) const;
878 
887  static String createStringFromData (const void* data, int size);
888 
900  static String formatted (const String formatString, ... );
901 
902  //==============================================================================
903  // Numeric conversions..
904 
908  explicit String (int decimalInteger);
909 
913  explicit String (unsigned int decimalInteger);
914 
918  explicit String (short decimalInteger);
919 
923  explicit String (unsigned short decimalInteger);
924 
928  explicit String (int64 largeIntegerValue);
929 
933  explicit String (uint64 largeIntegerValue);
934 
939  explicit String (float floatValue);
940 
945  explicit String (double doubleValue);
946 
954  String (float floatValue, int numberOfDecimalPlaces);
955 
963  String (double doubleValue, int numberOfDecimalPlaces);
964 
970  int getIntValue() const noexcept;
971 
975  int64 getLargeIntValue() const noexcept;
976 
986  int getTrailingIntValue() const noexcept;
987 
993  float getFloatValue() const noexcept;
994 
1000  double getDoubleValue() const noexcept;
1001 
1011  int getHexValue32() const noexcept;
1012 
1022  int64 getHexValue64() const noexcept;
1023 
1025  static String toHexString (int number);
1026 
1028  static String toHexString (int64 number);
1029 
1031  static String toHexString (short number);
1032 
1042  static String toHexString (const void* data, int size, int groupSize = 1);
1043 
1044  //==============================================================================
1051  inline CharPointerType getCharPointer() const noexcept { return text; }
1052 
1064  CharPointer_UTF8 toUTF8() const;
1065 
1077  const char* toRawUTF8() const;
1078 
1090  CharPointer_UTF16 toUTF16() const;
1091 
1100  CharPointer_UTF32 toUTF32() const;
1101 
1114  const wchar_t* toWideCharPointer() const;
1115 
1117  std::string toStdString() const;
1118 
1119  //==============================================================================
1123  static String fromUTF8 (const char* utf8buffer, int bufferSizeBytes = -1);
1124 
1129  size_t getNumBytesAsUTF8() const noexcept;
1130 
1131  //==============================================================================
1147  size_t copyToUTF8 (CharPointer_UTF8::CharType* destBuffer, size_t maxBufferSizeBytes) const noexcept;
1148 
1164  size_t copyToUTF16 (CharPointer_UTF16::CharType* destBuffer, size_t maxBufferSizeBytes) const noexcept;
1165 
1181  size_t copyToUTF32 (CharPointer_UTF32::CharType* destBuffer, size_t maxBufferSizeBytes) const noexcept;
1182 
1183  //==============================================================================
1198  void preallocateBytes (size_t numBytesNeeded);
1199 
1203  void swapWith (String& other) noexcept;
1204 
1205  //==============================================================================
1206  #if JUCE_MAC || JUCE_IOS || DOXYGEN
1207 
1208  static String fromCFString (CFStringRef cfString);
1209 
1214  CFStringRef toCFString() const;
1215 
1218  String convertToPrecomposedUnicode() const;
1219  #endif
1220 
1224  int getReferenceCount() const noexcept;
1225 
1226 private:
1227  //==============================================================================
1228  CharPointerType text;
1229 
1230  //==============================================================================
1231  struct PreallocationBytes
1232  {
1233  explicit PreallocationBytes (size_t) noexcept;
1234  size_t numBytes;
1235  };
1236 
1237  explicit String (const PreallocationBytes&); // This constructor preallocates a certain amount of memory
1238  size_t getByteOffsetOfEnd() const noexcept;
1239  JUCE_DEPRECATED (String (const String&, size_t));
1240 
1241  // This private cast operator should prevent strings being accidentally cast
1242  // to bools (this is possible because the compiler can add an implicit cast
1243  // via a const char*)
1244  operator bool() const noexcept { return false; }
1245 };
1246 
1247 //==============================================================================
1249 JUCE_API String JUCE_CALLTYPE operator+ (const char* string1, const String& string2);
1251 JUCE_API String JUCE_CALLTYPE operator+ (const wchar_t* string1, const String& string2);
1253 JUCE_API String JUCE_CALLTYPE operator+ (char string1, const String& string2);
1255 JUCE_API String JUCE_CALLTYPE operator+ (wchar_t string1, const String& string2);
1256 #if ! JUCE_NATIVE_WCHAR_IS_UTF32
1257 
1258 JUCE_API String JUCE_CALLTYPE operator+ (juce_wchar string1, const String& string2);
1259 #endif
1260 
1262 JUCE_API String JUCE_CALLTYPE operator+ (String string1, const String& string2);
1264 JUCE_API String JUCE_CALLTYPE operator+ (String string1, const char* string2);
1266 JUCE_API String JUCE_CALLTYPE operator+ (String string1, const wchar_t* string2);
1268 JUCE_API String JUCE_CALLTYPE operator+ (String string1, char characterToAppend);
1270 JUCE_API String JUCE_CALLTYPE operator+ (String string1, wchar_t characterToAppend);
1271 #if ! JUCE_NATIVE_WCHAR_IS_UTF32
1272 
1273 JUCE_API String JUCE_CALLTYPE operator+ (String string1, juce_wchar characterToAppend);
1274 #endif
1275 
1276 //==============================================================================
1278 JUCE_API String& JUCE_CALLTYPE operator<< (String& string1, char characterToAppend);
1280 JUCE_API String& JUCE_CALLTYPE operator<< (String& string1, wchar_t characterToAppend);
1281 #if ! JUCE_NATIVE_WCHAR_IS_UTF32
1282 
1283 JUCE_API String& JUCE_CALLTYPE operator<< (String& string1, juce_wchar characterToAppend);
1284 #endif
1285 
1287 JUCE_API String& JUCE_CALLTYPE operator<< (String& string1, const char* string2);
1289 JUCE_API String& JUCE_CALLTYPE operator<< (String& string1, const wchar_t* string2);
1291 JUCE_API String& JUCE_CALLTYPE operator<< (String& string1, const String& string2);
1292 
1294 JUCE_API String& JUCE_CALLTYPE operator<< (String& string1, short number);
1296 JUCE_API String& JUCE_CALLTYPE operator<< (String& string1, int number);
1298 JUCE_API String& JUCE_CALLTYPE operator<< (String& string1, long number);
1304 JUCE_API String& JUCE_CALLTYPE operator<< (String& string1, float number);
1306 JUCE_API String& JUCE_CALLTYPE operator<< (String& string1, double number);
1307 
1308 //==============================================================================
1310 JUCE_API bool JUCE_CALLTYPE operator== (const String& string1, const String& string2) noexcept;
1312 JUCE_API bool JUCE_CALLTYPE operator== (const String& string1, const char* string2) noexcept;
1314 JUCE_API bool JUCE_CALLTYPE operator== (const String& string1, const wchar_t* string2) noexcept;
1316 JUCE_API bool JUCE_CALLTYPE operator== (const String& string1, const CharPointer_UTF8 string2) noexcept;
1318 JUCE_API bool JUCE_CALLTYPE operator== (const String& string1, const CharPointer_UTF16 string2) noexcept;
1320 JUCE_API bool JUCE_CALLTYPE operator== (const String& string1, const CharPointer_UTF32 string2) noexcept;
1321 
1323 JUCE_API bool JUCE_CALLTYPE operator!= (const String& string1, const String& string2) noexcept;
1325 JUCE_API bool JUCE_CALLTYPE operator!= (const String& string1, const char* string2) noexcept;
1327 JUCE_API bool JUCE_CALLTYPE operator!= (const String& string1, const wchar_t* string2) noexcept;
1329 JUCE_API bool JUCE_CALLTYPE operator!= (const String& string1, const CharPointer_UTF8 string2) noexcept;
1331 JUCE_API bool JUCE_CALLTYPE operator!= (const String& string1, const CharPointer_UTF16 string2) noexcept;
1333 JUCE_API bool JUCE_CALLTYPE operator!= (const String& string1, const CharPointer_UTF32 string2) noexcept;
1334 
1336 JUCE_API bool JUCE_CALLTYPE operator> (const String& string1, const String& string2) noexcept;
1338 JUCE_API bool JUCE_CALLTYPE operator< (const String& string1, const String& string2) noexcept;
1340 JUCE_API bool JUCE_CALLTYPE operator>= (const String& string1, const String& string2) noexcept;
1342 JUCE_API bool JUCE_CALLTYPE operator<= (const String& string1, const String& string2) noexcept;
1343 
1344 //==============================================================================
1348 template <class traits>
1349 std::basic_ostream <char, traits>& JUCE_CALLTYPE operator<< (std::basic_ostream <char, traits>& stream, const String& stringToWrite)
1350 {
1351  return stream << stringToWrite.toRawUTF8();
1352 }
1353 
1357 template <class traits>
1358 std::basic_ostream <wchar_t, traits>& JUCE_CALLTYPE operator<< (std::basic_ostream <wchar_t, traits>& stream, const String& stringToWrite)
1359 {
1360  return stream << stringToWrite.toWideCharPointer();
1361 }
1362 
1364 JUCE_API OutputStream& JUCE_CALLTYPE operator<< (OutputStream& stream, const String& stringToWrite);
1365 
1368 
1369 
1370 #endif // JUCE_STRING_H_INCLUDED
void appendCharPointer(const CharPointer textToAppend)
Definition: juce_String.h:290
JUCE_API bool JUCE_CALLTYPE operator<=(const String &string1, const String &string2) noexcept
Definition: juce_String.cpp:591
void appendCharPointer(const CharPointer startOfTextToAppend, const CharPointer endOfTextToAppend)
Definition: juce_String.h:239
static const String empty
Definition: juce_String.h:152
const wchar_t * toWideCharPointer() const
Definition: juce_String.cpp:2066
#define noexcept
Definition: juce_CompilerSupport.h:141
Definition: juce_CharPointer_UTF16.h:39
TOUCHINPUT int
Definition: juce_win32_Windowing.cpp:123
Definition: juce_CharPointer_UTF8.h:38
Type * addBytesToPointer(Type *basePointer, IntegerType bytes) noexcept
Definition: juce_Memory.h:53
void appendCharPointer(const CharPointer textToAppend, size_t maxCharsToTake)
Definition: juce_String.h:268
#define JUCE_CALLTYPE
Definition: juce_PlatformDefs.h:50
#define false
Definition: ordinals.h:83
Definition: juce_String.h:43
#define JUCE_API
Definition: juce_StandardHeader.h:139
bool isNotEmpty() const noexcept
Definition: juce_String.h:308
#define const
JUCE_API String JUCE_CALLTYPE operator+(const char *string1, const String &string2)
Definition: juce_String.cpp:826
CharType * getAddress() const noexcept
Definition: juce_CharPointer_ASCII.h:78
unsigned long long uint64
Definition: juce_MathsFunctions.h:62
JUCE_API bool JUCE_CALLTYPE operator!=(const String &string1, const String &string2) noexcept
Definition: juce_String.cpp:575
JUCE_API bool JUCE_CALLTYPE operator==(const String &string1, const String &string2) noexcept
Definition: juce_String.cpp:574
JUCE_API bool JUCE_CALLTYPE operator>=(const String &string1, const String &string2) noexcept
Definition: juce_String.cpp:590
png_uint_32 length
Definition: juce_PNGLoader.cpp:2078
bool isEmpty() const noexcept
Definition: juce_String.h:302
JUCE_API bool JUCE_CALLTYPE operator>(const String &string1, const String &string2) noexcept
Definition: juce_String.cpp:588
Definition: juce_OutputStream.h:42
long long int64
Definition: juce_MathsFunctions.h:60
Definition: juce_CharPointer_ASCII.h:42
Definition: juce_CharPointer_UTF32.h:39
#define JUCE_DEPRECATED(functionDef)
Definition: juce_PlatformDefs.h:319
JUCE_API bool JUCE_CALLTYPE operator<(const String &string1, const String &string2) noexcept
Definition: juce_String.cpp:589
#define jassert(a)
Definition: juce_PlatformDefs.h:146
const char * toRawUTF8() const
Definition: juce_String.cpp:2061
JUCE_API String &JUCE_CALLTYPE operator<<(String &string1, char characterToAppend)
Definition: juce_String.cpp:845
JSAMPIMAGE data
Definition: jpeglib.h:945
bool isEmpty() const noexcept
Definition: juce_CharPointer_ASCII.h:84
#define max(x, y)
Definition: os.h:79
wchar_t juce_wchar
Definition: juce_CharacterFunctions.h:49
Definition: juce_StringRef.h:65