Replace core::string implementation with std::basic_string

This commit is contained in:
sfan5 2022-12-22 23:55:35 +01:00
parent 735af8eec6
commit 07fd32da50
6 changed files with 249 additions and 764 deletions

@ -37,8 +37,10 @@ void run_unit_tests() {
test_irr_array(); test_irr_array();
test_irr_string(); test_irr_string();
} catch (const std::exception &e) { } catch (const std::exception &e) {
std::cerr << e.what() << std::endl;
test_fail++; test_fail++;
} }
std::cout << std::endl;
} }
int main(int argc, char *argv[]) int main(int argc, char *argv[])

@ -36,11 +36,6 @@ static void test_basics()
// operator= // operator=
s = stringw(L"abcdef"); s = stringw(L"abcdef");
UASSERTSTR(s, "abcdef"); UASSERTSTR(s, "abcdef");
s = stringc("test");
s = s.c_str();
UASSERTSTR(s, "test");
s = s.c_str() + 1;
UASSERTSTR(s, "est");
s = L"abcdef"; s = L"abcdef";
UASSERTSTR(s, "abcdef"); UASSERTSTR(s, "abcdef");
s = static_cast<const char*>(nullptr); s = static_cast<const char*>(nullptr);

File diff suppressed because it is too large Load Diff

@ -813,8 +813,8 @@ public:
//! Constructor from other string types //! Constructor from other string types
template <class B, class A> template <class B>
ustring16(const string<B, A>& other) ustring16(const string<B>& other)
: array(0), allocated(0), used(0) : array(0), allocated(0), used(0)
{ {
#if __BYTE_ORDER == __BIG_ENDIAN #if __BYTE_ORDER == __BIG_ENDIAN
@ -1054,8 +1054,8 @@ public:
} }
//! Assignment operator for other string types //! Assignment operator for other string types
template <class B, class A> template <class B>
ustring16<TAlloc>& operator=(const string<B, A>& other) ustring16<TAlloc>& operator=(const string<B>& other)
{ {
*this = other.c_str(); *this = other.c_str();
return *this; return *this;
@ -3139,8 +3139,8 @@ inline ustring16<TAlloc> operator+(const B* const left, const ustring16<TAlloc>&
//! Appends a ustring16 and an Irrlicht string. //! Appends a ustring16 and an Irrlicht string.
template <typename TAlloc, typename B, typename BAlloc> template <typename TAlloc, typename B>
inline ustring16<TAlloc> operator+(const ustring16<TAlloc>& left, const string<B, BAlloc>& right) inline ustring16<TAlloc> operator+(const ustring16<TAlloc>& left, const string<B>& right)
{ {
ustring16<TAlloc> ret(left); ustring16<TAlloc> ret(left);
ret += right; ret += right;
@ -3149,8 +3149,8 @@ inline ustring16<TAlloc> operator+(const ustring16<TAlloc>& left, const string<B
//! Appends a ustring16 and an Irrlicht string. //! Appends a ustring16 and an Irrlicht string.
template <typename TAlloc, typename B, typename BAlloc> template <typename TAlloc, typename B>
inline ustring16<TAlloc> operator+(const string<B, BAlloc>& left, const ustring16<TAlloc>& right) inline ustring16<TAlloc> operator+(const string<B>& left, const ustring16<TAlloc>& right)
{ {
ustring16<TAlloc> ret(left); ustring16<TAlloc> ret(left);
ret += right; ret += right;
@ -3438,8 +3438,8 @@ inline ustring16<TAlloc>&& operator+(const B* const left, ustring16<TAlloc>&& ri
//! Appends a ustring16 and an Irrlicht string. //! Appends a ustring16 and an Irrlicht string.
template <typename TAlloc, typename B, typename BAlloc> template <typename TAlloc, typename B>
inline ustring16<TAlloc>&& operator+(const string<B, BAlloc>& left, ustring16<TAlloc>&& right) inline ustring16<TAlloc>&& operator+(const string<B>& left, ustring16<TAlloc>&& right)
{ {
//std::cout << "MOVE operator+(&, &&)" << std::endl; //std::cout << "MOVE operator+(&, &&)" << std::endl;
right.insert(left, 0); right.insert(left, 0);
@ -3448,8 +3448,8 @@ inline ustring16<TAlloc>&& operator+(const string<B, BAlloc>& left, ustring16<TA
//! Appends a ustring16 and an Irrlicht string. //! Appends a ustring16 and an Irrlicht string.
template <typename TAlloc, typename B, typename BAlloc> template <typename TAlloc, typename B>
inline ustring16<TAlloc>&& operator+(ustring16<TAlloc>&& left, const string<B, BAlloc>& right) inline ustring16<TAlloc>&& operator+(ustring16<TAlloc>&& left, const string<B>& right)
{ {
//std::cout << "MOVE operator+(&&, &)" << std::endl; //std::cout << "MOVE operator+(&&, &)" << std::endl;
left.append(right); left.append(right);

@ -3,6 +3,7 @@
// For conditions of distribution and use, see copyright notice in irrlicht.h // For conditions of distribution and use, see copyright notice in irrlicht.h
#include "CLimitReadFile.h" #include "CLimitReadFile.h"
#include "irrMath.h"
#include "irrString.h" #include "irrString.h"
namespace irr namespace irr

@ -11,6 +11,7 @@
// (this is also the reason why this file is header-only as correct OGL ES headers have to be included first) // (this is also the reason why this file is header-only as correct OGL ES headers have to be included first)
#if defined(_IRR_COMPILE_WITH_OGLES2_) || defined(_IRR_COMPILE_WITH_OGLES1_) #if defined(_IRR_COMPILE_WITH_OGLES2_) || defined(_IRR_COMPILE_WITH_OGLES1_)
#include "irrMath.h"
#include "COpenGLCoreFeature.h" #include "COpenGLCoreFeature.h"
namespace irr namespace irr