drt_chain_vm/
types.rs

1mod vm_address;
2mod vm_code_metadata;
3mod vm_dcdt_local_role;
4mod vm_dcdt_local_role_flags;
5mod vm_h256;
6mod vm_token_type;
7
8use num_bigint::BigUint;
9use num_traits::Zero;
10pub use vm_address::VMAddress;
11pub use vm_code_metadata::VMCodeMetadata;
12pub use vm_dcdt_local_role::DcdtLocalRole;
13pub use vm_dcdt_local_role_flags::DcdtLocalRoleFlags;
14pub use vm_h256::H256;
15pub use vm_token_type::VMTokenType;
16
17pub type RawHandle = i32;
18
19pub(crate) fn top_encode_u64(value: u64) -> Vec<u8> {
20    top_encode_big_uint(&BigUint::from(value))
21}
22
23pub(crate) fn top_encode_big_uint(value: &BigUint) -> Vec<u8> {
24    if value.is_zero() {
25        Vec::new()
26    } else {
27        value.to_bytes_be()
28    }
29}
30
31pub(crate) fn top_decode_u64(bytes: &[u8]) -> u64 {
32    BigUint::from_bytes_be(bytes).try_into().unwrap()
33}