Example #1
0
        void IILCode.Generate(ILExpressed il)
        {
            var value = il.DeclareLocal("index", _initialValue.ParameterType);
            il.Snippets.SetVariable(value, _initialValue);

            var labelCondition = il.DefineLabel();
            il.TransferLong(labelCondition);

            var labelBody = il.DefineAndMarkLabel();
            _bodyHandler.Invoke(il, value);
            il.Snippets.Increment(value, _increment);

            il.MarkLabel(labelCondition);
            _conditionHandler.Invoke(il, value);

            il.TransferLongIfTrue(labelBody);
        }