Shovel.Vm.Vm.FindNamedBlock C# (CSharp) Метод

FindNamedBlock() приватный Метод

private FindNamedBlock ( string blockName ) : int
blockName string
Результат int
        int FindNamedBlock(string blockName)
        {
            for (var i = this.stack.Count - 1; i >= 0; i--) {
                if (this.stack.Storage [i].Kind == Value.Kinds.NamedBlock
                    && this.stack.Storage [i].NamedBlockValue.Name == blockName) {
                    return i;
                }
            }
            this.RaiseShovelError (
                String.Format ("Cannot find block '{0}'.", blockName));
            return -1;
        }

Usage Example

Пример #1
0
 static void HandleBlockReturn(Vm vm)
 {
     var returnValue = vm.stack.PopTop ();
     var name = vm.stack.PopTop ();
     if (name.Kind != Value.Kinds.String) {
         vm.RaiseShovelError ("The name of a block must be a string.");
     }
     var namedBlockIndex = vm.FindNamedBlock (name.stringValue);
     if (vm.stack.Count > namedBlockIndex + 1) {
         vm.stack.RemoveRange (namedBlockIndex + 1, vm.stack.Count - namedBlockIndex - 1);
     }
     var namedBlock = vm.stack.Top ().NamedBlockValue;
     vm.stack.Push (returnValue);
     vm.programCounter = namedBlock.BlockEnd;
     vm.currentEnvironment = namedBlock.Environment;
 }
All Usage Examples Of Shovel.Vm.Vm::FindNamedBlock
Vm