public byte[] GetABIParamsEncodedPacked <T>(T input) { var type = typeof(T); var parametersEncoder = new ParametersEncoder(); var parameterObjects = parametersEncoder.GetParameterAttributeValues(type, input).OrderBy(x => x.ParameterAttribute.Order); var result = new List <byte>(); foreach (var abiParameter in parameterObjects) { var abiType = abiParameter.ParameterAttribute.Parameter.ABIType; var value = abiParameter.Value; result.AddRange(abiType.EncodePacked(value)); } return(result.ToArray()); }
private static byte[] Encode(AbiInputParameter[] parameters) { List <Parameter> netherParames = new List <Parameter>(); List <dynamic> values = new List <dynamic>(); foreach (AbiInputParameter parame in parameters) { netherParames.Add(new Parameter(parame.Definition.ABIType, parame.Definition.Name)); values.Add(parame.Value); } try { ParametersEncoder encoder = new ParametersEncoder(); return(encoder.EncodeParameters(netherParames.ToArray(), values.ToArray())); } catch (Exception ex) { throw ex; } }
public void Parameters(int parameterCount, out ReturnTypeEncoder returnType, out ParametersEncoder parameters) { Builder.WriteCompressedInteger(parameterCount); returnType = new ReturnTypeEncoder(Builder); parameters = new ParametersEncoder(Builder, allowVarArgs: _isVarArg); }
public TupleTypeEncoder() { parametersEncoder = new ParametersEncoder(); }
public void ParametersEncoder_StartVarArgs() { var b = new BlobBuilder(); var e = new ParametersEncoder(b, hasVarArgs: true); Assert.Same(b, e.Builder); var s = e.StartVarArgs(); AssertEx.Equal(new byte[] { 0x41 }, b.ToArray()); Assert.Same(b, s.Builder); Assert.False(s.HasVarArgs); Assert.Throws<InvalidOperationException>(() => s.StartVarArgs()); }
public void ParametersEncoder_AddParameter() { var b = new BlobBuilder(); var e = new ParametersEncoder(b); Assert.Same(b, e.Builder); var s = e.AddParameter(); AssertEx.Equal(new byte[0], b.ToArray()); Assert.Same(b, s.Builder); }