difftreelog
refactor
in: master
2 files changed
crates/evm-coder/procedural/src/solidity_interface.rsdiffbeforeafterboth734 const #screaming_name_signature: ::evm_coder::custom_signature::FunctionSignature = #custom_signature;734 const #screaming_name_signature: ::evm_coder::custom_signature::FunctionSignature = #custom_signature;735 #[doc = #selector_str]735 #[doc = #selector_str]736 const #screaming_name: ::evm_coder::types::bytes4 = {736 const #screaming_name: ::evm_coder::types::bytes4 = {737 let mut data = [0_u8; Self::#screaming_name_signature.unit.len];738 let mut pos = 0;739 while pos < Self::#screaming_name_signature.unit.len {740 data[pos] = Self::#screaming_name_signature.unit.data[pos];741 pos += 1;742 }737 let a = ::evm_coder::sha3_const::Keccak256::new()743 let a = ::evm_coder::sha3_const::Keccak256::new()738 .update_with_size(&Self::#screaming_name_signature.data, Self::#screaming_name_signature.len)744 .update(&data)739 .finalize();745 .finalize();740 [a[0], a[1], a[2], a[3]]746 [a[0], a[1], a[2], a[3]]741 };747 };953 cs959 cs954 }960 }955 );961 );956 // println!("!!!!! {}", custom_signature);957 let is_payable = self.has_value_args;962 let is_payable = self.has_value_args;963958 let out = quote! {964 quote! {959 SolidityFunction {965 SolidityFunction {960 docs: &[#(#docs),*],966 docs: &[#(#docs),*],961 selector_str: #selector_str,967 selector_str: #selector_str,972 ),978 ),973 result: <UnnamedArgument<#result>>::default(),979 result: <UnnamedArgument<#result>>::default(),974 }980 }975 };981 }976 // println!("@@@ {}", out);977 out978 }982 }979}983}980984crates/evm-coder/src/custom_signature.rsdiffbeforeafterboth--- a/crates/evm-coder/src/custom_signature.rs
+++ b/crates/evm-coder/src/custom_signature.rs
@@ -13,9 +13,7 @@
#[derive(Debug)]
pub struct FunctionSignature {
- pub data: [u8; SIGNATURE_SIZE_LIMIT],
- pub len: usize,
-
+ pub unit: SignatureUnit,
preferences: SignaturePreferences,
}
@@ -30,8 +28,10 @@
crate::make_signature!(@copy(delimiter.data, dst, delimiter.len, dst_offset));
}
FunctionSignature {
- data: dst,
- len: dst_offset,
+ unit: SignatureUnit {
+ data: dst,
+ len: dst_offset,
+ },
preferences,
}
}
@@ -40,22 +40,24 @@
signature: FunctionSignature,
param: SignatureUnit,
) -> FunctionSignature {
- let mut dst = signature.data;
- let mut dst_offset = signature.len;
+ let mut dst = signature.unit.data;
+ let mut dst_offset = signature.unit.len;
crate::make_signature!(@copy(param.data, dst, param.len, dst_offset));
if let Some(ref delimiter) = signature.preferences.param_delimiter {
crate::make_signature!(@copy(delimiter.data, dst, delimiter.len, dst_offset));
}
FunctionSignature {
- data: dst,
- len: dst_offset,
+ unit: SignatureUnit {
+ data: dst,
+ len: dst_offset,
+ },
..signature
}
}
pub const fn done(signature: FunctionSignature, owerride: bool) -> FunctionSignature {
- let mut dst = signature.data;
- let mut dst_offset = signature.len - if owerride { 1 } else { 0 };
+ let mut dst = signature.unit.data;
+ let mut dst_offset = signature.unit.len - if owerride { 1 } else { 0 };
if let Some(ref delimiter) = signature.preferences.close_delimiter {
crate::make_signature!(@copy(delimiter.data, dst, delimiter.len, dst_offset));
}
@@ -63,14 +65,16 @@
crate::make_signature!(@copy(name.data, dst, name.len, dst_offset));
}
FunctionSignature {
- data: dst,
- len: dst_offset,
+ unit: SignatureUnit {
+ data: dst,
+ len: dst_offset,
+ },
..signature
}
}
pub fn as_str(&self) -> &str {
- from_utf8(&self.data[..self.len]).expect("bad utf-8")
+ from_utf8(&self.unit.data[..self.unit.len]).expect("bad utf-8")
}
}
@@ -335,11 +339,11 @@
(<u32>::SIGNATURE),
(<Vec<u32>>::SIGNATURE),
);
- const NAME: [u8; SIG.len] = {
- let mut name: [u8; SIG.len] = [0; SIG.len];
+ const NAME: [u8; SIG.unit.len] = {
+ let mut name: [u8; SIG.unit.len] = [0; SIG.unit.len];
let mut i = 0;
- while i < SIG.len {
- name[i] = SIG.data[i];
+ while i < SIG.unit.len {
+ name[i] = SIG.unit.data[i];
i += 1;
}
name