MCPcopy Create free account
hub / github.com/GaijinEntertainment/daScript / for_each_table

Function for_each_table

include/daScript/misc/runtime_table_utils.h:11–32  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

9
10 template<typename T, typename CB>
11 void for_each_table(const T & table, CB && callback, das::Context * context, das::LineInfoArg * at)
12 {
13 das::Sequence keysSequence;
14 das::Sequence valueSequence;
15 das::builtin_table_keys(keysSequence, table, sizeof(typename T::KeyType), context, at);
16 das::builtin_table_values(valueSequence, table, sizeof(typename T::ValueType), context, at);
17
18 typename T::KeyType keyData;
19 typename T::ValueType * valueData;
20 bool hasData = false;
21 do
22 {
23 hasData = das::builtin_iterator_iterate(keysSequence, &keyData, context);
24 hasData = das::builtin_iterator_iterate(valueSequence, &valueData, context) && hasData;
25 if (hasData && !callback(keyData, *valueData))
26 {
27 break;
28 }
29 } while(hasData);
30 das::builtin_iterator_close(keysSequence, &keyData, context);
31 das::builtin_iterator_close(valueSequence, &valueData, context);
32 }
33}

Callers

nothing calls this directly

Calls 5

builtin_table_keysFunction · 0.85
builtin_table_valuesFunction · 0.85
builtin_iterator_iterateFunction · 0.85
callbackFunction · 0.85
builtin_iterator_closeFunction · 0.85

Tested by

no test coverage detected