61 String(
const char* cStr,
size_t len);
112 void Append(
const char* str);
163 void __cdecl
Format(
const char* fmtString, ...);
165 void __cdecl
FormatArgList(
const char* fmtString, va_list argList);
238 template<
typename T>
void Set(
const T& t);
261 template<
typename T>
void Append(
const T& t);
266 const char*
Get()
const;
300 template<
typename T> T
As()
const;
372 static constexpr uint Hash(
const char* c, std::size_t s);
375 template<
typename INTEGER>
414 inline size_t length()
const {
return this->Length(); }
416 inline bool empty()
const {
return this->IsEmpty(); }
437 static int StrCmp(
const char* str0,
const char* str1);
439 static int StrLen(
const char* str);
441 static const char*
StrChr(
const char* str,
int c);
487 this->heapBuffer =
nullptr;
554 rhs.heapBuffer =
nullptr;
556 rhs.heapBufferSize = 0;
563 Memory::Copy(rhs.localBuffer, this->localBuffer, this->strLen);
566 rhs.heapBuffer =
nullptr;
568 rhs.heapBufferSize = 0;
619 this->
strLen = rhs.strLen;
625 rhs.heapBuffer =
nullptr;
626 rhs.heapBufferSize = 0;
632 Memory::Copy(rhs.localBuffer, this->localBuffer, this->strLen);
712 return (0 == this->
strLen);
721 return (0 != this->
strLen);
754 char* ptr =
const_cast<char*
>(this->
AsCharPtr());
756 for (i = 0; i <= this->
strLen; i++)
796 pathString = &(lastSlash[1]);
824 pathString.
strLen = lastSlash - &pathString[0] + 1;
839 if (substring[it] != copy[it])
843 while (copy[it] ==
'/')
846 if (it < substring.
strLen)
860 for (i = 0; i < this->
strLen; i++)
1156template<
typename INTEGER>
1160 constexpr SizeT hexLength =
sizeof(INTEGER) << 1;
1166 for (
SizeT n = 0, j = (hexLength - 1) * 4; n < hexLength; ++n, j -= 4)
1303 for (i = 0; i < s; i++)
1324Util::String operator ""_str(
const char* c, std::size_t s);
1331operator ""_hash(
const char* c, std::size_t s)
Nebula's dynamic array class.
Definition array.h:61
The Util::Blob class encapsulates a chunk of raw memory into a C++ object which can be copied,...
Definition blob.h:22
A collection of key/value pairs with quick value retrieval by key at roughly O(log n).
Definition dictionary.h:35
Set()
default constructor
Definition set.h:79
Nebula's universal string class.
Definition string.h:50
void SetCharPtr(const char *s)
set content to char ptr
Definition string.cc:781
T As() const
convert to "anything"
static String FromVec3(const Math::vec3 &v)
construct a string from vec3
Definition string.h:1068
void SetInt(int val)
set as int value
Definition string.cc:1502
Math::mat4 AsMat4() const
return contents as mat4
Definition string.cc:723
Util::Blob AsBlob() const
return contents as blob
Definition string.cc:1305
static bool IsAlpha(char c)
test if provided character is an alphabet character (A..Z, a..z)
Definition string.cc:1146
static String FromUByte(ubyte i)
construct a string from a ubyte
Definition string.h:913
void SetShort(short val)
set as short value
Definition string.cc:1484
void ToLower()
convert string to lower case
Definition string.cc:931
bool IsValidVec4() const
return true if the content is a valid vec4
Definition string.cc:1720
String ExtractToLastSlash() const
extract path until last slash
Definition string.h:812
static String FromUInt(uint i)
construct a string from a uint
Definition string.h:957
static String FromFloat2(const Math::float2 &v)
construct a string from float2
Definition string.h:1090
void Clear()
clear the string
Definition string.h:701
void SetTransform44(const Math::transform44 &v)
set as transform44 value
Definition string.cc:1692
~String()
destructor
Definition string.h:498
static const char * StrChr(const char *str, int c)
find character in string
Definition string.cc:1220
void Capitalize()
convert first char of string to upper case
Definition string.cc:959
void SetInt64(int64_t val)
set as int64 value
Definition string.cc:1520
void AppendVec4(const Math::vec4 &v)
append vec4 value
Definition string.h:1251
SizeT Length() const
return length of string
Definition string.h:692
size_t length() const
Definition string.h:414
void AppendChar(char val)
append character
Definition string.h:1178
bool IsValidBool() const
return true if the content is a valid bool
Definition string.cc:1034
friend bool operator!=(const String &a, const String &b)
inequality operator
Definition string.cc:886
static String FromBool(bool b)
construct a string from a bool
Definition string.h:1045
static String FromByte(byte i)
construct a string from a byte
Definition string.h:902
void AppendRange(const char *str, SizeT numChars)
append a range of characters
Definition string.cc:151
void AppendFloat(float val)
append float value
Definition string.h:1214
static String FromInt64(int64_t i)
construct a string from a int64
Definition string.h:968
void AppendByte(byte val)
append byte value
Definition string.h:1196
static String FromQuat(const Math::quat &q)
construct a string from quat
Definition string.h:1123
void ConvertBackslashes()
convert backslashes to slashes
Definition string.h:770
void SetVec2(const Math::vec2 &v)
set as vec2 value
Definition string.cc:1613
static String FromDouble(double f)
construct a string from a double
Definition string.h:1034
IndexT FindCharIndex(char c, IndexT startIndex=0) const
return index of character in string, or InvalidIndex if not found
Definition string.cc:361
void ChangeAssignMapping(const Util::String &newMapping, const Util::String &oldMapping)
Change assign mapping (not just the prefix).
Definition string.cc:1267
bool IsValid() const
return true if string object is not empty
Definition string.h:719
void StripFileExtension()
remove file extension
Definition string.cc:819
void SetBool(bool val)
set as bool value
Definition string.cc:1583
void AppendBool(bool val)
append bool value
Definition string.h:1223
static String FromTransform44(const Math::transform44 &m)
construct a string from transform44
Definition string.h:1145
void SetDouble(double val)
set as double value
Definition string.cc:1574
void AppendVec2(const Math::vec2 &v)
append vec2 value
Definition string.h:1233
bool AsBool() const
return contents as bool
Definition string.cc:1115
void SetLongLong(long long val)
set as long long value
Definition string.cc:1556
void ToUpper()
convert string to upper case
Definition string.cc:945
friend bool operator<=(const String &a, const String &b)
less-or-equal operator
Definition string.cc:913
static bool IsDigit(char c)
test if provided character is a digit (0..9)
Definition string.cc:1137
static String Concatenate(const Array< String > &strArray, const String &whiteSpace)
concatenate array of strings into new string
Definition string.cc:760
void TrimLeft(const String &charSet)
delete characters from charset at left side of string
Definition string.cc:426
friend bool operator==(const String &a, const String &b)
equality operator
Definition string.cc:848
void SetUInt64(uint64_t val)
set as uint64 value
Definition string.cc:1529
void StripAssignPrefix()
remove assign prefix (for example tex:)
Definition string.cc:834
void SetFloat4(const Math::float4 &v)
set as vec4 value
Definition string.cc:1658
char operator[](IndexT i) const
read-only index operator
Definition string.h:670
void Fill(SizeT length, unsigned char character)
set string length and fill all characters with arg
Definition string.cc:1599
bool IsValidInt() const
return true if the content is a valid integer
Definition string.h:874
static String FromInt(int i)
construct a string from an int
Definition string.h:946
static String FromFloat(float f)
construct a string from a float
Definition string.h:1023
static String FromVec4(const Math::vec4 &v)
construct a string from vec4
Definition string.h:1079
void __cdecl FormatArgList(const char *fmtString, va_list argList)
format string printf-style with varargs list
Definition string.cc:78
float AsFloat() const
return contents as float
Definition string.cc:1106
String()
constructor
Definition string.h:470
void ChangeAssignPrefix(const Util::String &newPref)
change assign prefix
Definition string.cc:1257
void ReplaceIllegalFilenameChars(char replacement)
replace illegal filename characters
Definition string.h:893
void __cdecl Format(const char *fmtString,...)
format string printf-style
Definition string.cc:57
void Delete()
delete contents
Definition string.h:482
Util::String AsBase64() const
return contents as base64 string
Definition string.cc:1358
bool CopyToBuffer(char *buf, SizeT bufSize) const
copy to char buffer (return false if buffer is too small)
Definition string.cc:38
Math::vec4 AsVec4() const
return contents as vec4
Definition string.cc:1787
bool CheckFileExtension(const String &ext) const
check file extension
Definition string.h:779
int64_t AsInt64() const
return contents as int64_t
Definition string.cc:1070
void ReplaceChars(const String &charSet, char replacement)
replace any char set character within a string with the replacement character
Definition string.cc:700
String ExtractFileName() const
extract the part after the last directory separator
Definition string.h:790
void Append(const T &t)
generic append
String ExtractToEnd(IndexT fromIndex) const
extract substring to end of this string
Definition string.cc:309
static String FromBase64(const String &)
create from base64
Definition string.cc:1375
void SetMat4(const Math::mat4 &v)
set as mat4 value
Definition string.cc:1676
bool IsValidFloat() const
return true if the content is a valid float
Definition string.h:884
void SetSizeT(size_t val)
set as long value
Definition string.cc:1547
Math::float3 AsFloat3() const
return contents as vec3
Definition string.cc:1813
void TrimRight(const String &charSet)
delete characters from charset at right side of string
Definition string.cc:468
void Alloc(SizeT size)
allocate the string buffer (discards old content)
Definition string.cc:1398
static String FromUInt64(uint64_t i)
construct a string from a uint64
Definition string.h:979
Math::vec2 AsVec2() const
return contents as vec2
Definition string.cc:1758
static String FromFloat3(const Math::float3 &v)
construct a string from float2
Definition string.h:1101
void ChangeFileExtension(const Util::String &newExt)
change file extension
Definition string.cc:1247
static bool IsUpper(char c)
test if provided character is an upper-case character
Definition string.cc:1173
Math::transform44 AsTransform44() const
return contents as transform44
Definition string.cc:740
void Set(const T &t)
generic setter
void Append(const String &str)
append string
Definition string.h:652
Math::float4 AsFloat4() const
return contents as vec4
Definition string.cc:1826
friend bool operator<(const String &a, const String &b)
less-then operator
Definition string.cc:895
void AppendUByte(ubyte val)
append unsigned byte value
Definition string.h:1205
String ExtractDirName() const
extract the part before the last directory separator
Definition string.cc:598
static constexpr uint Hash(const char *c, std::size_t s)
Hash a string.
Definition string.h:1299
static int StrCmp(const char *str0, const char *str1)
lowlevel string compare wrapper function
Definition string.cc:1200
char * GetLastSlash() const
get pointer to last directory separator
Definition string.cc:1020
SizeT heapBufferSize
Definition string.h:463
static String From(const T &t)
convert from "anything"
void operator=(const String &rhs)
assignment operator
Definition string.h:602
String StripSubstring(const String &substring) const
removes the leading substring from this string as long as it's matching
Definition string.h:832
void SetLong(long val)
set as long value
Definition string.cc:1538
static String FromLongLong(long long i)
construct a string from a long long
Definition string.h:1012
void SetByte(byte val)
set as byte value
Definition string.cc:1466
Math::float2 AsFloat2() const
return contents as vec2
Definition string.cc:1800
static String FromMat4(const Math::mat4 &m)
construct a string from mat4
Definition string.h:1134
int AsInt() const
return contents as integer
Definition string.cc:1058
const char * data() const
Definition string.h:418
void SetVec3(const Math::vec3 &v)
set as vec3 value
Definition string.cc:1622
void SetUInt(uint val)
set as uint value
Definition string.cc:1511
static String FromBlob(const Util::Blob &b)
create from blob
Definition string.cc:1279
static String FromShort(short i)
construct a string from a short
Definition string.h:924
void AppendVec3(const Math::vec3 &v)
append vec3 value
Definition string.h:1242
void Strip(const String &charSet)
terminate string at first occurence of character in set
Definition string.cc:320
static String FromUShort(ushort i)
construct a string from a ushort
Definition string.h:935
void TerminateAtIndex(IndexT index)
terminate string at given index
Definition string.cc:806
bool BeginsWithString(const String &s) const
returns true if string begins with string
Definition string.cc:398
void SetVec4(const Math::vec4 &v)
set as vec4 value
Definition string.cc:1631
void AppendMat4(const Math::mat4 &v)
append mat4 value
Definition string.h:1260
const char * AsCharPtr() const
return contents as character pointer
Definition string.h:577
void AppendInt(int val)
append int value
Definition string.h:1187
static String FromVec2(const Math::vec2 &v)
construct a string from vec2
Definition string.h:1057
void Realloc(SizeT newSize)
(re-)allocate the string buffer (copies old content)
Definition string.cc:1421
String ExtractLastDirName() const
extract the last directory of the path
Definition string.cc:558
@ LocalStringSize
Definition string.h:458
void SetFloat(float val)
set as float value
Definition string.cc:1565
static int StrLen(const char *str)
lowlevel string length function
Definition string.cc:1210
char * heapBuffer
Definition string.h:460
SizeT Tokenize(const String &whiteSpace, Array< String > &outTokens) const
tokenize string into a provided String array (faster if tokens array can be reused)
Definition string.cc:193
static Dictionary< String, String > ParseKeyValuePairs(const String &str)
parse key/value pair string ("key0=value0 key1=value1")
Definition string.cc:1230
void SetFloat2(const Math::float2 &v)
set as vec2 value
Definition string.cc:1640
bool IsValidTransform44() const
return true if content is a valid transform44
Definition string.cc:1744
void Trim(const String &charSet)
trim characters from charset at both sides of string
Definition string.cc:511
friend bool operator>(const String &a, const String &b)
greater-then operator
Definition string.cc:904
bool IsValidMat4() const
return true if content is a valid mat4
Definition string.cc:1732
const char * Get() const
*** OBSOLETE *** only Nebula2 compatibility
Definition string.h:593
static bool IsLower(char c)
test if provided character is a lower case character
Definition string.cc:1164
bool IsEmpty() const
return true if string object is empty
Definition string.h:710
String GetFileExtension() const
get filename extension without dot
Definition string.cc:1003
void SubstituteString(const String &str, const String &substStr)
substitute every occurance of a string with another string
Definition string.cc:522
String & AppendPath(const String &path)
Appends a directory or file to current string.
Definition string.h:1270
static bool MatchPattern(const String &str, const String &pattern)
pattern matching
Definition string.cc:625
static String FromLong(long i)
construct a string from a long
Definition string.h:990
char localBuffer[LocalStringSize]
Definition string.h:461
void operator+=(const String &rhs)
+= operator
Definition string.h:661
bool EndsWithString(const String &s) const
returns true if string ends with string
Definition string.cc:411
static String Sprintf(const char *fmtString,...)
static constructor for string using printf
Definition string.cc:96
void SetQuaternion(const Math::quat &v)
set as quaternion
Definition string.cc:1667
const char * c_str() const
helpers to interface with libraries that expect std::string like apis
Definition string.h:412
void CamelCaseToWords()
insert spaces before each capital letter in the string.
Definition string.cc:969
static String FromSize(size_t i)
construct a string from a size_t
Definition string.h:1001
IndexT FindStringIndex(const String &s, IndexT startIndex=0) const
return start index of substring, or InvalidIndex if not found
Definition string.cc:336
uint32_t HashCode() const
return a 32-bit hash code for the string
Definition string.h:730
uint32_t AsUInt() const
return contents as unsigned integer
Definition string.cc:1082
void SubstituteChar(char c, char subst)
substitute every occurance of a character with another character
Definition string.h:752
static String Hex(INTEGER i)
construct a hex string from an int
Definition string.h:1158
void SetUByte(ubyte val)
set as ubyte value
Definition string.cc:1475
String ExtractRange(IndexT fromIndex, SizeT numChars) const
extract substring
Definition string.cc:294
void SetUShort(ushort val)
set as ushort value
Definition string.cc:1493
static String FromFloat4(const Math::float4 &v)
construct a string from float2
Definition string.h:1112
Math::vec3 AsVec3() const
return contents as vec3
Definition string.cc:1771
friend bool operator>=(const String &a, const String &b)
greater-then operator
Definition string.cc:922
bool CheckValidCharSet(const String &charSet) const
return true if string only contains characters from charSet argument
Definition string.h:857
bool IsValid() const
generic valid checker
uint64_t AsUInt64() const
return contents as unsigned uint64_t
Definition string.cc:1094
bool empty() const
Definition string.h:416
SizeT strLen
Definition string.h:462
IndexT FindCharIndexReverse(char c, IndexT startIndex=0) const
return index of character in string, or InvalidIndex if not found
Definition string.cc:380
void Reserve(SizeT newSize)
reserve internal buffer size to prevent heap allocs
Definition string.cc:1454
bool ContainsCharFromSet(const String &charSet) const
returns true if string contains any character from set
Definition string.cc:991
void SetFloat3(const Math::float3 &v)
set as vec3 value
Definition string.cc:1649
static bool IsAlNum(char c)
test if provided character is an alpha-numeric character (A..Z,a..z,0..9)
Definition string.cc:1155
bool IsValidVec2() const
return true if the content is a valid vec2
Definition string.cc:1708
#define n_assert(exp)
Definition debug.h:58
Different curves.
Definition angularpfeedbackloop.h:17
half operator+(half one, half two)
Definition half.h:105
void Copy(const void *from, void *to, size_t numBytes)
Copy a chunk of memory (note the argument order is different from memcpy()!
Definition osxmemory.cc:213
void Free(HeapType heapType, void *ptr)
Free a block of memory.
Definition osxmemory.cc:136
@ StringDataHeap
Definition osxmemoryconfig.h:31
A quad tree designed to return regions of free 2D space.
Definition Random.cs:4
auto Format
Definition string.h:1315
A 4x4 single point precision float matrix.
Definition mat4.h:49
A quaternion is usually used to represent an orientation in 3D space.
Definition quat.h:30
A 2-component float vector class.
Definition vec2.h:21
A 3D vector.
Definition vec3.h:37
A 4D vector.
Definition vec4.h:24
unsigned char ubyte
Definition types.h:36
int SizeT
Definition types.h:42
unsigned int uint
Definition types.h:33
unsigned short ushort
Definition types.h:34
int IndexT
Definition types.h:41