Exemple #1
0
        public IEnumerable <Variable> Enumerate(IVariableManager manager)
        {
            foreach (var key in map.Keys)
            {
                var keyString = key switch
                {
                    Neo.VM.Types.Boolean @bool => @bool.GetBoolean().ToString(),
                         Neo.VM.Types.ByteString byteString => byteString.GetSpan().ToHexString(),
                         Neo.VM.Types.Integer @int => @int.GetInteger().ToString(),
                         _ => throw new NotImplementedException($"Unknown primitive type {key.GetType()}"),
                };

                yield return(map[key].ToVariable(manager, keyString));
            }
        }
        private static void DumpStackItem(StackItem stackItem)
        {
            var typeStackItem = stackItem.GetType();

            switch (typeStackItem.ToString())
            {
            case "Neo.VM.Types.Integer":
            {
                Neo.VM.Types.Integer value    = (Neo.VM.Types.Integer)stackItem;
                BigInteger           bigvalue = value.GetBigInteger();
                Console.WriteLine("Neo.VM.Types.Integer:\t{0}", bigvalue.ToString());
                break;
            }

            case "Neo.VM.Types.Array":
            {
                Neo.VM.Types.Array items = (Neo.VM.Types.Array)stackItem;
                int offset = 0;
                Console.WriteLine("Array.Count:\t{0}", items.Count);
                foreach (var item in items)
                {
                    Console.WriteLine("Neo.VM.Types.Array:\t{0}\t{1}", offset, item.ToString());
                    var typeItem = item.GetType();
                    switch (typeItem.ToString())
                    {
                    case "Neo.VM.Types.Boolean":
                    {
                        int offset2            = 0;
                        Neo.VM.Types.Boolean b = (Neo.VM.Types.Boolean)item;
                        Console.WriteLine("    Neo.VM.Types.Boolean:\t{0}\t{1}", offset2, b.GetBoolean());
                        break;
                    }

                    case "Neo.VM.Types.Integer":
                    {
                        int offset2            = 0;
                        Neo.VM.Types.Integer i = (Neo.VM.Types.Integer)item;
                        Console.WriteLine("    Neo.VM.Types.Integer:\t{0}\t{1}\t{2}", offset2, i.GetBigInteger(), i.GetBigInteger().ToString("X"));
                        break;
                    }

                    case "Neo.VM.Types.Array":
                    {
                        var items2  = ((Neo.VM.Types.Array)item);
                        int offset2 = 0;
                        foreach (var item2 in items2)
                        {
                            Console.WriteLine("    Neo.VM.Types.Array:\t{0}\t{1}\t{2}", offset2, item2.GetBigInteger(), item2.GetBigInteger());
                            offset2++;
                        }
                        break;
                    }

                    case "Neo.VM.Types.ByteArray":
                    {
                        byte[] items2  = ((Neo.VM.Types.ByteArray)item).GetByteArray();
                        int    offset2 = 0;
                        foreach (var item2 in items2)
                        {
                            Console.WriteLine("    Neo.VM.Types.ByteArray:\t{0}\t{1}\t{2}\t{3}", offset2, item2.ToString(), item2.ToString("X"), Convert.ToChar(item2).ToString());
                            offset2++;
                        }
                        break;
                    }

                    default:
                    {
                        throw new NotImplementedException(typeItem.ToString() + " unknown");
                    }
                    }
                    offset++;
                }
                break;
            }

            case "Neo.VM.Types.ByteArray":
            {
                byte[] items  = ((Neo.VM.Types.ByteArray)stackItem).GetByteArray();
                int    offset = 0;
                foreach (var item in items)
                {
                    Console.WriteLine("Neo.VM.Types.ByteArray:\t{0}\t{1}\t{2}\t{3}", offset, item.ToString(), item.ToString("X"), Convert.ToChar(item).ToString());
                    offset++;
                }
                break;
            }

            default:
            {
                throw new NotImplementedException(typeStackItem.ToString() + " unknown");
            }
            }
        }
Exemple #3
0
 public BooleanStackItem(Neo.VM.Types.Boolean item) : base(item.GetBoolean())
 {
     _item = item;
 }