multiversx_sc/api/managed_types/
managed_buffer_api.rs1use crate::types::heap::BoxedBytes;
2
3use super::HandleTypeInfo;
4
5#[derive(Debug)]
8pub struct InvalidSliceError;
9
10pub trait ManagedBufferApiImpl: HandleTypeInfo {
12 fn mb_new_empty(&self) -> Self::ManagedBufferHandle;
14
15 fn mb_new_from_bytes(&self, bytes: &[u8]) -> Self::ManagedBufferHandle;
17
18 fn mb_len(&self, handle: Self::ManagedBufferHandle) -> usize;
19
20 fn mb_to_boxed_bytes(&self, handle: Self::ManagedBufferHandle) -> BoxedBytes;
21
22 fn mb_load_slice(
24 &self,
25 source_handle: Self::ManagedBufferHandle,
26 starting_position: usize,
27 dest_slice: &mut [u8],
28 ) -> Result<(), InvalidSliceError>;
29
30 fn mb_copy_slice(
32 &self,
33 source_handle: Self::ManagedBufferHandle,
34 starting_position: usize,
35 slice_len: usize,
36 dest_handle: Self::ManagedBufferHandle,
37 ) -> Result<(), InvalidSliceError>;
38
39 fn mb_overwrite(&self, handle: Self::ManagedBufferHandle, value: &[u8]);
40
41 fn mb_set_slice(
42 &self,
43 dest_handle: Self::ManagedBufferHandle,
44 starting_position: usize,
45 source_slice: &[u8],
46 ) -> Result<(), InvalidSliceError>;
47
48 fn mb_set_random(&self, dest_handle: Self::ManagedBufferHandle, length: usize);
49
50 fn mb_append(
51 &self,
52 accumulator_handle: Self::ManagedBufferHandle,
53 data_handle: Self::ManagedBufferHandle,
54 );
55
56 fn mb_append_bytes(&self, accumulator_handle: Self::ManagedBufferHandle, bytes: &[u8]);
57
58 fn mb_eq(&self, handle1: Self::ManagedBufferHandle, handle2: Self::ManagedBufferHandle)
59 -> bool;
60
61 fn mb_to_hex(
62 &self,
63 source_handle: Self::ManagedBufferHandle,
64 dest_handle: Self::ManagedBufferHandle,
65 );
66}