Ver código fonte

Merge pull request #103924 from Ivorforce/span-iteration

Add iteration to `Span`.
Thaddeus Crews 6 meses atrás
pai
commit
3fc5390c8b
2 arquivos alterados com 8 adições e 0 exclusões
  1. 3 0
      core/templates/span.h
  2. 5 0
      tests/core/templates/test_span.h

+ 3 - 0
core/templates/span.h

@@ -59,4 +59,7 @@ public:
 		CRASH_COND(p_idx >= _len);
 		return _ptr[p_idx];
 	}
+
+	_FORCE_INLINE_ constexpr const T *begin() const { return _ptr; }
+	_FORCE_INLINE_ constexpr const T *end() const { return _ptr + _len; }
 };

+ 5 - 0
tests/core/templates/test_span.h

@@ -55,6 +55,11 @@ TEST_CASE("[Span] Constexpr Validators") {
 	static_assert(!span_array.is_empty());
 	static_assert(span_array[0] == U'1');
 	static_assert(span_array[span_array.size() - 1] == U'5');
+
+	int idx = 0;
+	for (const char32_t &chr : span_array) {
+		CHECK_EQ(chr, span_array[idx++]);
+	}
 }
 
 } // namespace TestSpan