34#include <NDEVR/Buffer.h>
35#include <NDEVR/StringStream.h>
39 class String :
public Buffer<char, uint04, ObjectAllocator<true>, BufferAllocator<char, uint04, true>>
46 template<std::
size_t N>
50 template<std::
size_t N>
64 template<
class t_type>
120 template<
class t_type>
125 const char* n_value = value;
126 for (; *n_value; ++n_value)
133 const wchar* n_value = value;
134 for (; *n_value; ++n_value)
140 else if (*n_value < 0x800)
146 uint04 cp = (*n_value << 16);
158#pragma warning( disable : 4307)
162 uint08 hash_value = 5381U;
163 for (
const char* n_value = value; *n_value; n_value++)
165 hash_value = ((hash_value << 5) + hash_value) + cast<uint08>(*n_value);
215 template<
class t_
object>
216 static typename std::enable_if<ObjectInfo<t_object>::Integer,
String>::type
toHex(t_object value)
221 for (
uint04 i = 0; i < byte_size; i++)
224 hex[2 * (byte_size - i - 1) + 0] = local_hex[0];
225 hex[2 * (byte_size - i - 1) + 1] = local_hex[1];
216 static typename std::enable_if<ObjectInfo<t_object>::Integer,
String>::type
toHex(t_object value) {
…}
230 template<
class t_
object,
class t_allocator,
class t_buff>
237 hex +=
toHex(values[i]);
247 hex +=
toHex(values[i]);
251 template<u
int01 t_size,
class t_type>
256 for (
uint01 i = 0; i < t_size; i++)
258 hex +=
toHex(values[i]);
280 if(value[i] != (*
this)[i])
289 if(value[i] != (*
this)[i])
292 return value[
size()] ==
'\0';
294 template<std::
size_t t_size>
299 if(
string[
size()] !=
'\0')
301 return memcmp(
string,
begin(),
sizeof(
char) *
size()) == 0;
308 if(value[i] != (*
this)[i])
311 return value[
size()] !=
'\0';
313 template<std::
size_t t_size>
318 if(
string[
size()] !=
'\0')
320 return memcmp(
string,
begin(),
sizeof(
char) *
size()) != 0;
328 if(value[i] != (*
this)[i])
333 template <
class t_type>
39 class String :
public Buffer<char, uint04, ObjectAllocator<true>, BufferAllocator<char, uint04, true>> {
…};
363 return std::move(v1);
368 return std::move(v1);
374 return std::move(v1);
380 return std::move(v1);
400 template<
size_t t_size>
404 return std::move(v1);
406 template<
size_t t_size>
419 template<
size_t t_size>
426 template<
size_t t_size>
436 template<
size_t t_size>
445 template<
size_t t_size>
451 s.
addAll((
char*)v1, size);
458 return static_cast<t_to
>(value.
getAs<t_to>());
466 static const bool Primitive =
false;
468 static const bool Unsigned =
false;
469 static const bool Float =
false;
470 static const bool Integer =
false;
471 static const bool Number =
false;
472 static const bool Enum =
false;
475 static const bool Boolean =
false;
479 template<
class t_type_b>
484 template<
class t_type_a>
487 a = b.
getAs<t_type_a>();
493 return value.
size() == 0;
506 return static_cast<size_t>(s.hash());
#define utf8(str)
Definition UnitDefinitions.cpp:8
The equivelent of std::vector but with a bit more control. The basic array unit of the library.
Definition Buffer.hpp:64
Buffer & operator=(const Buffer &buffer)
Definition Buffer.hpp:1773
void add(t_type &&object)
Definition Buffer.hpp:199
constexpr uint04 size() const
Definition Buffer.hpp:1461
void addAll(const Buffer< t_type, t_other_index_type, t_other_memory_allocator, t_other_memory_manager > &buffer)
Definition Buffer.hpp:248
decltype(auto) end()
Definition Buffer.hpp:746
void setSize(t_index_type new_size)
Definition Buffer.hpp:1413
t_index_type indexOf(const t_type &element) const
Definition Buffer.hpp:905
void ensureCapacity(t_index_type new_capacity, bool ensure_not_greater=false, bool ensure_not_less=true)
Definition Buffer.hpp:803
decltype(auto) begin()
Definition Buffer.hpp:504
uint04 count(const char &element) const
Definition Buffer.hpp:728
Definition MemoryManager.h:283
Definition Pointer.hpp:62
String(uint04 size, const char &value)
Definition String.h:60
static NDEVR_BASE_API String UnicodetoUTF8(const wchar *unicode, uint04 &advance)
Definition String.cpp:1292
NDEVR_BASE_API const char * c_str() const
Definition String.cpp:490
NDEVR_BASE_API uint08 hashLower() const
Definition String.cpp:513
NDEVR_BASE_API String predictNextStringIncrement() const
Definition String.cpp:1061
NDEVR_BASE_API bool operator<(const String &value) const
Definition String.cpp:1314
NDEVR_BASE_API bool hasSubString(const String &sub_string, bool ignore_case=false) const
Definition String.cpp:331
NDEVR_BASE_API uint04 fromHex() const
Definition String.cpp:1146
NDEVR_BASE_API String & addWhiteSpace(uint04 desired_string_size, uint04 desired_right_alignment_location=0, char whitespace=' ')
Definition String.cpp:583
NDEVR_BASE_API String & removeNonAlphaNumeric(bool remove_tab=true, bool remove_space=true, bool remove_new_line=true, bool remove_r=true, bool remove_numbers=false)
Definition String.cpp:959
NDEVR_BASE_API bool isNumeric() const
Definition String.cpp:1122
NDEVR_BASE_API void splitString(char delimiter, Buffer< String, uint04, ObjectAllocator< false > > &strings, bool preserve_empty=true) const
static constexpr uint08 hash(const char *value)
Definition String.h:160
bool operator==(const char *const value) const
Definition String.h:285
static constexpr uint04 str_len(const char *value)
Definition String.h:123
String(const t_type &value)
Definition String.h:65
NDEVR_BASE_API String shortenString(uint04 size) const
Definition String.cpp:997
static NDEVR_BASE_API bool IsWhiteSpace(char s)
Definition String.cpp:564
static NDEVR_BASE_API wchar UTF8toUnicode(const char *utf8, uint04 &advance)
Definition String.cpp:1177
size_t operator()() const
Definition String.h:177
NDEVR_BASE_API uint04 indexOf(const char &sub_string, uint04 start_pos, uint04 size) const
Definition String.h:89
String & operator=(String &&value) noexcept
Definition String.h:269
NDEVR_BASE_API Buffer< String, uint04, ObjectAllocator< false > > splitStringLength(uint04 max_chars_per_line) const
Definition String.cpp:72
static NDEVR_BASE_API String ConvertToCharString(uint04 number)
Definition String.cpp:1133
NDEVR_BASE_API bool isSameNoCase(const String &s) const
Definition String.cpp:471
static String toHex(const String &values)
Definition String.h:241
bool operator==(const String &value) const
Definition String.h:274
NDEVR_BASE_API String()
Definition String.cpp:143
static String toHex(const Buffer< t_object, t_allocator, t_buff > &values)
Definition String.h:231
bool operator!=(const String &value) const
Definition String.h:322
void addWChar(const wchar &object)
Definition String.cpp:1299
static std::enable_if< ObjectInfo< t_object >::Integer, String >::type toHex(t_object value)
Definition String.h:216
static NDEVR_BASE_API String toHex(uint01 value)
Definition String.cpp:1150
bool operator==(const char(&string)[t_size])
Definition String.h:295
NDEVR_BASE_API uint04 indexOf(const char &sub_string, uint04 start_pos) const
Definition String.h:88
String(const char *string)
Definition String.h:55
static constexpr uint04 str_len(const wchar *value)
Definition String.h:130
NDEVR_BASE_API String & trimWhiteSpace()
Definition String.cpp:569
NDEVR_BASE_API String substr(uint04 start) const
Definition String.cpp:551
t_type getAs() const
Definition String.h:334
static String toHex(const Vector< t_size, t_type > &values)
Definition String.h:252
NDEVR_BASE_API String & replace(const String &sub_string, const String &replace_sub_string, bool ignore_case=false)
Definition String.cpp:343
String(const char(&string)[N])
Definition String.h:47
NDEVR_BASE_API String & formatNumberString(uint04 decimals)
Definition String.cpp:591
NDEVR_BASE_API uint04 indexOf(const String &sub_string, bool ignore_case=false, uint04 start_index=0) const
Definition String.cpp:208
NDEVR_BASE_API String insertNewLines(uint04 max_line_size) const
Definition String.cpp:1018
NDEVR_BASE_API Buffer< String, uint04, ObjectAllocator< false > > splitString(char delimiter, bool preserve_empty=true) const
Definition String.cpp:57
NDEVR_BASE_API bool addUnicodeCharAsUTF8(const wchar *unicode, uint04 &advance)
Definition String.cpp:1248
NDEVR_BASE_API void addUnicodeAsUTF8(const wchar *unicode)
Definition String.cpp:1235
static NDEVR_BASE_API String NumberString(fltp08 value, bool add_comma, uint04 min_decimals, uint04 max_decimals, uint04 min_digits, char decimal='.', char comma=',')
Definition String.cpp:601
String(const wchar(&string)[N])
Definition String.h:51
String & operator=(const String &value)
Definition String.h:263
NDEVR_BASE_API String formatTitleString() const
Definition String.cpp:923
NDEVR_BASE_API String & removeNonNumeric()
Definition String.cpp:981
NDEVR_BASE_API String toUpper() const
Definition String.cpp:1099
NDEVR_BASE_API uint08 hashUpper() const
Definition String.cpp:502
static NDEVR_BASE_API bool AlphaNumericCompare(const String &left, const String &right)
Definition String.cpp:521
bool operator!=(const char *const value) const
Definition String.h:304
NDEVR_BASE_API bool matchesWildcard(const String &pattern) const
Definition String.cpp:435
NDEVR_BASE_API String & append(const String &string)
Definition String.cpp:484
static TranslatedString DisplayString(const t_type &value)
Definition TranslatedString.h:50
bool operator!=(const char(&string)[t_size])
Definition String.h:314
NDEVR_BASE_API uint04 indexOf(const char &sub_string) const
Definition String.h:87
NDEVR_BASE_API uint08 hash() const
Definition String.cpp:494
NDEVR_BASE_API bool operator>(const String &value) const
Definition String.cpp:1326
NDEVR_BASE_API String toLower() const
Definition String.cpp:1110
NDEVR_BASE_API uint04 lastIndexOf(const char *sub_string, bool ignore_case=false) const
Definition String.cpp:296
NDEVR_BASE_API bool endsWith(const String &s, bool ignore_case=false) const
Definition String.cpp:389
NDEVR_BASE_API bool beginsWith(const String &s, bool ignore_case=false) const
Definition String.cpp:412
static void toString(const t_type &value, String &string)
static void fromString(const String &string, t_type &value)
Definition TranslatedString.h:9
An element of a vector space. An element of the real coordinate space Rn Basis vector,...
Definition Vector.hpp:62
bool operator==(const char(&v1)[t_size], const String &v2)
Definition String.h:437
wchar_t wchar
Definition BaseValues.hpp:184
float fltp04
Defines an alias representing a 4 byte floating-point number.
Definition BaseValues.hpp:157
uint8_t uint01
-Defines an alias representing a 1 byte, unsigned integer -Can represent exact integer values 0 throu...
Definition BaseValues.hpp:98
constexpr t_to rcast(t_from value)
Definition BaseValues.hpp:427
String operator+(const String &string_a, const String &string_b)
Definition String.h:352
String & operator+=(String &string, const String &value)
Definition String.h:414
uint64_t uint08
-Defines an alias representing an 8 byte, unsigned integer -Can represent exact integer values 0 thro...
Definition BaseValues.hpp:132
void assign(String &a, const t_type_b &b)
Definition String.h:480
uint32_t uint04
-Defines an alias representing a 4 byte, unsigned integer -Can represent exact integer values 0 throu...
Definition BaseValues.hpp:120
constexpr t_to cast(const Angle< t_from > &value)
Definition Angle.h:514
constexpr bool isNaN(const t_type &value)
Query if 'value' is valid or invalid.
Definition BaseFunctions.hpp:200
double fltp08
Defines an alias representing an 8 byte floating-point number.
Definition BaseValues.hpp:181
NDEVR_BASE_API ostream & operator<<(ostream &in, const NDEVR::String &string)
NDEVR_BASE_API istream & operator>>(istream &in, NDEVR::String &string)
Definition BaseValues.hpp:272
static constexpr ObjectInfo< char, false, false > VectorSub()
Definition String.h:476
Information about the object.
Definition ObjectInfo.h:56
const String & string
Definition String.h:348
uint04 m_position
Definition String.h:349
std::size_t operator()(const NDEVR::String &s) const noexcept
Definition String.h:504