From b540ead0ae5d41dd488490cf684eb6fad8da08ea Mon Sep 17 00:00:00 2001 From: WerWolv Date: Tue, 25 Jun 2024 22:52:57 +0200 Subject: [PATCH] includes/std: Added std::IIndexed as a nicer wrapper around std::core::array_index() --- includes/std/array.pat | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/includes/std/array.pat b/includes/std/array.pat index f3f4870..444bdba 100644 --- a/includes/std/array.pat +++ b/includes/std/array.pat @@ -1,6 +1,7 @@ #pragma once import std.sys; +import std.core; /*! The array library contains a helper type to make it easier to create multi-dimensional arrays @@ -30,6 +31,16 @@ namespace auto std { std::assert($ - startAddress == NumBytes, "Not enough bytes available to fit a whole number of types"); } [[format("std::impl::format_array")]]; + + /** + An interface type for getting the index of the currently processed element in an array. This is a nice wrapper around `std::core::array_index()` + + To use it, inherit from it and use the `this.index` field to get the index of the current element + */ + struct IIndexed { + const u64 index = std::core::array_index(); + }; + namespace impl { fn format_array(ref auto array) {