コード例 #1
0
        public byte[] GenerateLoaderScriptFromInputs(DataNode inputs)
        {
            using (ScriptBuilder sb = new ScriptBuilder())
            {
                var items = new Stack <object>();

                if (inputs != null)
                {
                    foreach (var item in inputs.Children)
                    {
                        var obj = Emulator.ConvertArgument(item);
                        items.Push(obj);
                    }
                }

                while (items.Count > 0)
                {
                    var item = items.Pop();
                    NeoAPI.EmitObject(sb, item);
                }

                var loaderScript = sb.ToArray();
                //System.IO.File.WriteAllBytes("loader.avm", loaderScript);

                return(loaderScript);
            }
        }
コード例 #2
0
        public byte[] GenerateLoaderScriptFromInputs(DataNode inputs, ABI abi)
        {
            var methodName = abi != null && abi.entryPoint != null ? abi.entryPoint.name : null;

            using (ScriptBuilder sb = new ScriptBuilder())
            {
                var items = new Stack <object>();

                if (inputs != null)
                {
                    AVMFunction method = methodName != null && abi.functions.ContainsKey(methodName) ? abi.functions[methodName] : null;

                    int index = 0;
                    foreach (var item in inputs.Children)
                    {
                        Emulator.Type hint = method != null ? method.inputs[index].type : Emulator.Type.Unknown;

                        var obj = Emulator.ConvertArgument(item, hint);

                        items.Push(obj);

                        index++;
                    }
                }

                while (items.Count > 0)
                {
                    var item = items.Pop();
                    NeoAPI.EmitObject(sb, item);
                }

                var loaderScript = sb.ToArray();
                //System.IO.File.WriteAllBytes("loader.avm", loaderScript);

                return(loaderScript);
            }
        }