/// <summary> /// Emits the opcodes for invoking an interoperable service. /// </summary> /// <param name="builder">The <see cref="ScriptBuilder"/> to be used.</param> /// <param name="method">The hash of the interoperable service.</param> /// <param name="args">The arguments for calling the interoperable service.</param> /// <returns>The same instance as <paramref name="builder"/>.</returns> public static ScriptBuilder EmitSysCall(this ScriptBuilder builder, uint method, params object[] args) { for (int i = args.Length - 1; i >= 0; i--) { EmitPush(builder, args[i]); } return(builder.EmitSysCall(method)); }
public static ScriptBuilder EmitSysCall(this ScriptBuilder sb, string api, params object[] args) { for (int i = args.Length - 1; i >= 0; i--) { EmitPush(sb, args[i]); } return(sb.EmitSysCall(api)); }
public static ScriptBuilder EmitAppCall(this ScriptBuilder sb, UInt160 scriptHash, string operation) { sb.EmitPush(0); sb.Emit(OpCode.NEWARRAY); sb.EmitPush(operation); sb.EmitPush(scriptHash); sb.EmitSysCall(InteropService.System_Contract_Call); return(sb); }
/// <summary> /// Emits the opcodes for calling a contract dynamically. /// </summary> /// <param name="builder">The <see cref="ScriptBuilder"/> to be used.</param> /// <param name="scriptHash">The hash of the contract to be called.</param> /// <param name="method">The method to be called in the contract.</param> /// <param name="flags">The <see cref="CallFlags"/> for calling the contract.</param> /// <param name="args">The arguments for calling the contract.</param> /// <returns>The same instance as <paramref name="builder"/>.</returns> public static ScriptBuilder EmitDynamicCall(this ScriptBuilder builder, UInt160 scriptHash, string method, CallFlags flags, params object[] args) { builder.CreateArray(args); builder.EmitPush(flags); builder.EmitPush(method); builder.EmitPush(scriptHash); builder.EmitSysCall(ApplicationEngine.System_Contract_Call); return(builder); }
public static ScriptBuilder EmitDynamicCall(this ScriptBuilder sb, UInt160 scriptHash, string operation) { sb.Emit(OpCode.NEWARRAY0); sb.EmitPush(CallFlags.All); sb.EmitPush(operation); sb.EmitPush(scriptHash); sb.EmitSysCall(ApplicationEngine.System_Contract_Call); return(sb); }
public static ScriptBuilder EmitAppCall(this ScriptBuilder sb, UInt160 scriptHash, string operation) { sb.EmitPush(0); sb.Emit(OpCode.NEWARRAY); sb.EmitPush(operation); sb.EmitPush(scriptHash); sb.EmitSysCall("System.Contract.Call"); return(sb); }
public static ScriptBuilder EmitDynamicCall(this ScriptBuilder sb, UInt160 scriptHash, string operation, CallFlags flags, params object[] args) { sb.CreateArray(args); sb.EmitPush(flags); sb.EmitPush(operation); sb.EmitPush(scriptHash); sb.EmitSysCall(ApplicationEngine.System_Contract_Call); return(sb); }
public static ScriptBuilder EmitAppCall(this ScriptBuilder sb, UInt160 scriptHash, ContractParameterType returnType, string operation) { sb.EmitPush(0); sb.Emit(OpCode.NEWARRAY); sb.EmitPush(operation); sb.EmitPush(returnType); sb.EmitPush(scriptHash); sb.EmitSysCall(ApplicationEngine.System_Contract_Call); return(sb); }
public static ScriptBuilder EmitDynamicCall(this ScriptBuilder sb, UInt160 scriptHash, string operation, bool hasReturnValue) { sb.EmitPush(0); sb.EmitPush(hasReturnValue ? 1 : 0); sb.EmitPush(CallFlags.All); sb.EmitPush(operation); sb.EmitPush(scriptHash); sb.EmitSysCall(ApplicationEngine.System_Contract_Call); return(sb); }
public static ScriptBuilder EmitAppCall(this ScriptBuilder sb, UInt160 scriptHash, string operation, params object[] args) { for (int i = args.Length - 1; i >= 0; i--) sb.EmitPush(args[i]); sb.EmitPush(args.Length); sb.Emit(OpCode.PACK); sb.EmitPush(operation); sb.EmitPush(scriptHash); sb.EmitSysCall(InteropService.System_Contract_Call); return sb; }
public static ScriptBuilder EmitAppCall(this ScriptBuilder sb, UInt160 scriptHash, string operation, params ContractParameter[] args) { for (int i = args.Length - 1; i >= 0; i--) { sb.EmitPush(args[i]); } sb.EmitPush(args.Length); sb.Emit(OpCode.PACK); sb.EmitPush(operation); sb.EmitPush(scriptHash); sb.EmitSysCall(InteropService.Contract.Call); return(sb); }
public static ScriptBuilder EmitDynamicCall(this ScriptBuilder sb, UInt160 scriptHash, string operation, params object[] args) { for (int i = args.Length - 1; i >= 0; i--) { sb.EmitPush(args[i]); } sb.EmitPush(args.Length); sb.Emit(OpCode.PACK); sb.EmitPush(CallFlags.All); sb.EmitPush(operation); sb.EmitPush(scriptHash); sb.EmitSysCall(ApplicationEngine.System_Contract_Call); return(sb); }
public static ScriptBuilder EmitAppCall(this ScriptBuilder sb, UInt160 scriptHash, ContractParameterType returnType, string operation, params ContractParameter[] args) { for (int i = args.Length - 1; i >= 0; i--) { sb.EmitPush(args[i]); } sb.EmitPush(args.Length); sb.Emit(OpCode.PACK); sb.EmitPush(operation); sb.EmitPush(returnType); sb.EmitPush(scriptHash); sb.EmitSysCall(ApplicationEngine.System_Contract_Call); return(sb); }
public static ScriptBuilder EmitDynamicCall(this ScriptBuilder sb, UInt160 scriptHash, string operation, bool hasReturnValue, params ContractParameter[] args) { for (int i = args.Length - 1; i >= 0; i--) { sb.EmitPush(args[i]); } sb.EmitPush(args.Length); sb.EmitPush(hasReturnValue ? 1 : 0); sb.EmitPush(CallFlags.All); sb.EmitPush(operation); sb.EmitPush(scriptHash); sb.EmitSysCall(ApplicationEngine.System_Contract_Call); return(sb); }
public static ScriptBuilder EmitSysCall(this ScriptBuilder sb, uint method, params object[] args) { for (int i = args.Length - 1; i >= 0; i--) EmitPush(sb, args[i]); return sb.EmitSysCall(method); }