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}