File tree Expand file tree Collapse file tree 8 files changed +66
-39
lines changed
cheatnet/src/runtime_extensions/call_to_blockifier_runtime_extension/execution Expand file tree Collapse file tree 8 files changed +66
-39
lines changed Original file line number Diff line number Diff line change @@ -3,10 +3,8 @@ use cairo_vm::{
33 types:: relocatable:: { MaybeRelocatable , Relocatable } ,
44 vm:: vm_core:: VirtualMachine ,
55} ;
6- use conversions:: {
7- IntoConv ,
8- serde:: serialize:: { SerializeToFeltVec , raw:: RawFeltVec } ,
9- } ;
6+ use conversions:: serde:: SerializedValue ;
7+ use conversions:: { IntoConv , serde:: serialize:: SerializeToFeltVec } ;
108use starknet_types_core:: felt:: Felt ;
119
1210fn get_cheated_block_info_ptr (
@@ -90,8 +88,10 @@ fn get_cheated_tx_info_ptr(
9088 new_tx_info[ 7 ] = MaybeRelocatable :: Int ( nonce) ;
9189 }
9290 if let Some ( resource_bounds) = resource_bounds {
93- let ( resource_bounds_start_ptr, resource_bounds_end_ptr) =
94- add_vec_memory_segment ( & RawFeltVec :: new ( resource_bounds) . serialize_to_vec ( ) , vm) ;
91+ let ( resource_bounds_start_ptr, resource_bounds_end_ptr) = add_vec_memory_segment (
92+ & SerializedValue :: new ( resource_bounds) . serialize_to_vec ( ) ,
93+ vm,
94+ ) ;
9595 new_tx_info[ 8 ] = resource_bounds_start_ptr. into ( ) ;
9696 new_tx_info[ 9 ] = resource_bounds_end_ptr. into ( ) ;
9797 }
Original file line number Diff line number Diff line change 11pub mod deserialize;
22pub mod serialize;
3+ pub mod serialized_value;
4+
5+ pub use serialized_value:: SerializedValue ;
Original file line number Diff line number Diff line change 5353 }
5454}
5555
56+ impl < T : CairoDeserialize , E : CairoDeserialize > CairoDeserialize for Result < T , E > {
57+ fn deserialize ( reader : & mut BufferReader < ' _ > ) -> BufferReadResult < Self > {
58+ let variant: Felt = reader. read ( ) ?;
59+ let variant: usize = variant. to_usize ( ) . ok_or ( BufferReadError :: ParseFailed ) ?;
60+
61+ match variant {
62+ 0 => Ok ( Ok ( reader. read ( ) ?) ) ,
63+ 1 => Ok ( Err ( reader. read ( ) ?) ) ,
64+ _ => Err ( BufferReadError :: ParseFailed ) ,
65+ }
66+ }
67+ }
68+
5669impl CairoDeserialize for bool {
5770 fn deserialize ( reader : & mut BufferReader < ' _ > ) -> BufferReadResult < Self > {
5871 let num: usize = reader. read ( ) ?;
Load Diff This file was deleted.
Original file line number Diff line number Diff line change @@ -2,7 +2,6 @@ use starknet_types_core::felt::Felt;
22
33pub use cairo_serde_macros:: CairoSerialize ;
44
5- pub mod raw;
65mod serialize_impl;
76
87pub struct BufferWriter {
Load Diff This file was deleted.
Original file line number Diff line number Diff line change 1+ use conversions:: serde:: deserialize:: { BufferReadResult , BufferReader , CairoDeserialize } ;
2+ use conversions:: serde:: serialize:: { BufferWriter , CairoSerialize } ;
3+ use starknet_types_core:: felt:: Felt ;
4+
5+ /// Represents an already serialized Vec of values.
6+ ///
7+ /// Use this to omitt adding extra felt for the length of the vector during serialization.
8+ #[ derive( Debug ) ]
9+ pub struct SerializedValue < T > ( pub Vec < T > )
10+ where
11+ T : CairoSerialize ;
12+
13+ impl < T > SerializedValue < T >
14+ where
15+ T : CairoSerialize ,
16+ {
17+ #[ must_use]
18+ pub fn new ( vec : Vec < T > ) -> Self {
19+ Self ( vec)
20+ }
21+ }
22+
23+ impl < T > CairoSerialize for SerializedValue < T >
24+ where
25+ T : CairoSerialize ,
26+ {
27+ fn serialize ( & self , output : & mut BufferWriter ) {
28+ for e in & self . 0 {
29+ e. serialize ( output) ;
30+ }
31+ }
32+ }
33+
34+ impl CairoDeserialize for SerializedValue < Felt > {
35+ fn deserialize ( reader : & mut BufferReader < ' _ > ) -> BufferReadResult < Self > {
36+ let mut result: Vec < Felt > = Vec :: new ( ) ;
37+ while let Ok ( r) = reader. read_felt ( ) {
38+ result. push ( r) ;
39+ }
40+ Ok ( Self :: new ( result) )
41+ }
42+ }
Original file line number Diff line number Diff line change @@ -18,9 +18,9 @@ use cairo_vm::vm::errors::vm_errors::VirtualMachineError;
1818use cairo_vm:: vm:: runners:: cairo_runner:: { ResourceTracker , RunResources } ;
1919use cairo_vm:: vm:: vm_core:: VirtualMachine ;
2020use conversions:: byte_array:: ByteArray ;
21+ use conversions:: serde:: SerializedValue ;
2122use conversions:: serde:: deserialize:: BufferReadError ;
2223use conversions:: serde:: deserialize:: BufferReader ;
23- use conversions:: serde:: serialize:: raw:: RawFeltVec ;
2424use conversions:: serde:: serialize:: { CairoSerialize , SerializeToFeltVec } ;
2525use indoc:: indoc;
2626use shared:: vm:: VirtualMachineExt ;
@@ -294,7 +294,7 @@ impl<Extension: ExtensionLogic> ExtendedRuntime<Extension> {
294294 return res;
295295 }
296296 // it is serialized again to add `Result` discriminator
297- Ok ( CheatcodeHandlingResult :: Handled ( res) ) => Ok ( RawFeltVec :: new ( res) ) ,
297+ Ok ( CheatcodeHandlingResult :: Handled ( res) ) => Ok ( SerializedValue :: new ( res) ) ,
298298 Err ( err) => Err ( ByteArray :: from ( err. to_string ( ) . as_str ( ) ) ) ,
299299 }
300300 . serialize_to_vec ( ) ;
You can’t perform that action at this time.
0 commit comments