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); } }
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); } }