Pārlūkot izejas kodu

use easy array string size again

Kajetan Johannes Hammerle 2 gadi atpakaļ
vecāks
revīzija
5445ff07d8
2 mainītis faili ar 6 papildinājumiem un 9 dzēšanām
  1. 2 2
      tests/ArrayStringTests.cpp
  2. 4 7
      utils/ArrayString.h

+ 2 - 2
tests/ArrayStringTests.cpp

@@ -49,7 +49,7 @@ static void testStringAppend() {
 }
 
 static void testStringAppendOverflow() {
-    Core::ArrayString<20> s;
+    Core::ArrayString<6> s;
     CORE_TEST_ERROR(s.append("te"));
     CORE_TEST_EQUAL(Core::Error::CAPACITY_REACHED, s.append("23334444"));
     CORE_TEST_TRUE(build("te23334444") != s);
@@ -191,7 +191,7 @@ static void testBool() {
 }
 
 static void testIntOverflow() {
-    Core::ArrayString<20> s;
+    Core::ArrayString<4> s;
     CORE_TEST_EQUAL(Core::Error::CAPACITY_REACHED, s.append(123456));
 
     String o;

+ 4 - 7
utils/ArrayString.h

@@ -10,11 +10,8 @@ namespace Core {
     class ArrayString final {
         int length;
         u32 hash;
-        static constexpr int DATA_LENGTH =
-            (N - Math::max(CORE_SIZE(length), CORE_SIZE(hash))) /
-            CORE_SIZE(u32);
-        static_assert(DATA_LENGTH > 0, "Size of array string too small");
-        u32 data[static_cast<unsigned int>(DATA_LENGTH)];
+        static_assert(N > 0, "size of array string must be positive");
+        u32 data[static_cast<unsigned int>(N)];
 
     public:
         ArrayString() : length(0), hash(0) {
@@ -62,7 +59,7 @@ namespace Core {
         }
 
         constexpr int getCapacity() const {
-            return DATA_LENGTH;
+            return N;
         }
 
         check_return Error append(char c) {
@@ -151,7 +148,7 @@ namespace Core {
         }
 
         check_return Error appendUnicode(u32 c) {
-            if(length >= DATA_LENGTH) {
+            if(length >= N) {
                 return Error::CAPACITY_REACHED;
             }
             data[length++] = c;