Пример #1
0
        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());
        }
Пример #2
0
        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;
            }
        }
Пример #3
0
        public void Parameters(int parameterCount, out ReturnTypeEncoder returnType, out ParametersEncoder parameters)
        {
            Builder.WriteCompressedInteger(parameterCount);

            returnType = new ReturnTypeEncoder(Builder);
            parameters = new ParametersEncoder(Builder, allowVarArgs: _isVarArg);
        }
Пример #4
0
 public TupleTypeEncoder()
 {
     parametersEncoder = new ParametersEncoder();
 }
Пример #5
0
        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());
        }
Пример #6
0
        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);
        }