Browse Source

Use requires for class check

Kajetan Johannes Hammerle 1 week ago
parent
commit
817f8eb1bf
2 changed files with 14 additions and 75 deletions
  1. 7 20
      include/core/utils/ArrayString.hpp
  2. 7 55
      src/ArrayString.cpp

+ 7 - 20
include/core/utils/ArrayString.hpp

@@ -50,23 +50,18 @@ namespace Core {
         check_return Error append(const c32* s);
         check_return Error append(const signed char* s);
         check_return Error append(const unsigned char* s);
-        check_return Error append(signed short s);
-        check_return Error append(unsigned short s);
-        check_return Error append(signed int i);
-        check_return Error append(unsigned int i);
-        check_return Error append(signed long l);
-        check_return Error append(unsigned long l);
-        check_return Error append(signed long long ll);
-        check_return Error append(unsigned long long ll);
-        check_return Error append(float f);
-        check_return Error append(double d);
-        check_return Error append(long double ld);
         check_return Error append(bool b);
         check_return Error append(Error e);
 
         template<typename T>
         check_return Error append(const T& t) {
-            return t.toString(*this);
+            if constexpr(requires { t.toString(*this); }) {
+                return t.toString(*this);
+            } else {
+                char buffer[64];
+                CORE_RETURN_ERROR(Core::toString(t, buffer, CORE_SIZE(buffer)));
+                return append(static_cast<const char*>(buffer));
+            }
         }
 
         check_return Error toString(CharString& s) const;
@@ -105,7 +100,6 @@ namespace Core {
         operator const char*() const;
 
     private:
-        Error add(char c);
         void addToHash(c32 u);
 
         template<typename T, typename... Args>
@@ -127,13 +121,6 @@ namespace Core {
         }
 
         check_return Error formatBuffer(CharString& s, int index);
-
-        template<typename T>
-        check_return Error convertAppend(T t) {
-            char buffer[64];
-            CORE_RETURN_ERROR(Core::toString(t, buffer, CORE_SIZE(buffer)));
-            return append(static_cast<const char*>(buffer));
-        }
     };
 
     template<int N>

+ 7 - 55
src/ArrayString.cpp

@@ -123,7 +123,13 @@ int CharString::getCapacity() const {
 }
 
 Error CharString::append(char c) {
-    return add(c);
+    if(length >= capacity - 1) {
+        return Error::CAPACITY_REACHED;
+    }
+    data[length++] = c;
+    data[length] = '\0';
+    addToHash(static_cast<c32>(c));
+    return Error::NONE;
 }
 
 Error CharString::append(signed char c) {
@@ -168,50 +174,6 @@ Error CharString::append(const unsigned char* s) {
     return append(reinterpret_cast<const char*>(s));
 }
 
-Error CharString::append(signed short s) {
-    return convertAppend(s);
-}
-
-Error CharString::append(unsigned short s) {
-    return convertAppend(s);
-}
-
-Error CharString::append(signed int i) {
-    return convertAppend(i);
-}
-
-Error CharString::append(unsigned int i) {
-    return convertAppend(i);
-}
-
-Error CharString::append(signed long l) {
-    return convertAppend(l);
-}
-
-Error CharString::append(unsigned long l) {
-    return convertAppend(l);
-}
-
-Error CharString::append(signed long long ll) {
-    return convertAppend(ll);
-}
-
-Error CharString::append(unsigned long long ll) {
-    return convertAppend(ll);
-}
-
-Error CharString::append(float f) {
-    return convertAppend(f);
-}
-
-Error CharString::append(double d) {
-    return convertAppend(d);
-}
-
-Error CharString::append(long double ld) {
-    return convertAppend(ld);
-}
-
 Error CharString::append(bool b) {
     return b ? append("true") : append("false");
 }
@@ -332,16 +294,6 @@ CharString::operator const char*() const {
     return data;
 }
 
-Error CharString::add(char c) {
-    if(length >= capacity - 1) {
-        return Error::CAPACITY_REACHED;
-    }
-    data[length++] = c;
-    data[length] = '\0';
-    addToHash(static_cast<c32>(c));
-    return Error::NONE;
-}
-
 void CharString::addToHash(c32 u) {
     hash = static_cast<u32>(2120251889) * hash + static_cast<u32>(u);
 }