Derive-C
Loading...
Searching...
No Matches
for.h
Go to the documentation of this file.
1#pragma once
2
3// Optimized iterator loop using empty() check
4// Uses while-for pattern to check iterator state first, then get item once
5// The inner for loop executes exactly once per iteration to avoid calling next() in condition
6#define _DC_FOR_INNER(TYPE, INSTANCE, ITER, ITEM, ITER_TYPE, ITER_GET) \
7 NS(TYPE, ITER_TYPE) ITER = NS(TYPE, ITER_GET)(INSTANCE); \
8 while (!NS(NS(TYPE, ITER_TYPE), empty)(&ITER)) \
9 for (int _dc_for_once = 1; _dc_for_once; _dc_for_once = 0) \
10 for (NS(NS(TYPE, ITER_TYPE), item) ITEM = NS(NS(TYPE, ITER_TYPE), next)(&ITER); \
11 _dc_for_once; _dc_for_once = 0)
12
13#define DC_FOR(TYPE, INSTANCE, ITER, ITEM) _DC_FOR_INNER(TYPE, INSTANCE, ITER, ITEM, iter, get_iter)
14#define DC_FOR_CONST(TYPE, INSTANCE, ITER, ITEM) \
15 _DC_FOR_INNER(TYPE, INSTANCE, ITER, ITEM, iter_const, get_iter_const)