neo_solidity/abi_opt.rs
1//! ABI Encoding Optimization
2//!
3//! Optimizes ABI encoding/decoding operations.
4
5/// ABI optimization hints
6#[derive(Debug, Clone, Copy)]
7pub enum AbiHint {
8 /// Fixed-size type, can use direct copy
9 FixedSize(usize),
10 /// Dynamic type, needs length prefix
11 Dynamic,
12 /// Packed encoding
13 Packed,
14}
15
16/// Check if type has fixed ABI size
17pub fn is_fixed_size(type_name: &str) -> Option<usize> {
18 match type_name {
19 "uint8" | "int8" | "bool" => Some(1),
20 "uint16" | "int16" => Some(2),
21 "uint32" | "int32" => Some(4),
22 "uint64" | "int64" => Some(8),
23 "uint128" | "int128" => Some(16),
24 "uint256" | "int256" => Some(32),
25 "address" => Some(20),
26 "bytes32" => Some(32),
27 _ => None,
28 }
29}