@@ -22,7 +22,7 @@ pub trait EvmcVm {
2222 /// This is called for every incoming message.
2323 fn execute < ' a > (
2424 & self ,
25- revision : ffi :: evmc_revision ,
25+ revision : Revision ,
2626 code : & ' a [ u8 ] ,
2727 message : & ' a ExecutionMessage ,
2828 context : Option < & ' a mut ExecutionContext < ' a > > ,
@@ -32,7 +32,7 @@ pub trait EvmcVm {
3232/// EVMC result structure.
3333#[ derive( Debug ) ]
3434pub struct ExecutionResult {
35- status_code : ffi :: evmc_status_code ,
35+ status_code : StatusCode ,
3636 gas_left : i64 ,
3737 output : Option < Vec < u8 > > ,
3838 create_address : Option < Address > ,
@@ -41,7 +41,7 @@ pub struct ExecutionResult {
4141/// EVMC execution message structure.
4242#[ derive( Debug ) ]
4343pub struct ExecutionMessage {
44- kind : ffi :: evmc_call_kind ,
44+ kind : MessageKind ,
4545 flags : u32 ,
4646 depth : i32 ,
4747 gas : i64 ,
@@ -65,11 +65,7 @@ pub struct ExecutionContext<'a> {
6565
6666impl ExecutionResult {
6767 /// Manually create a result.
68- pub fn new (
69- _status_code : ffi:: evmc_status_code ,
70- _gas_left : i64 ,
71- _output : Option < & [ u8 ] > ,
72- ) -> Self {
68+ pub fn new ( _status_code : StatusCode , _gas_left : i64 , _output : Option < & [ u8 ] > ) -> Self {
7369 ExecutionResult {
7470 status_code : _status_code,
7571 gas_left : _gas_left,
@@ -84,21 +80,21 @@ impl ExecutionResult {
8480
8581 /// Create failure result.
8682 pub fn failure ( ) -> Self {
87- ExecutionResult :: new ( ffi :: evmc_status_code :: EVMC_FAILURE , 0 , None )
83+ ExecutionResult :: new ( StatusCode :: EVMC_FAILURE , 0 , None )
8884 }
8985
9086 /// Create a revert result.
9187 pub fn revert ( _gas_left : i64 , _output : Option < & [ u8 ] > ) -> Self {
92- ExecutionResult :: new ( ffi :: evmc_status_code :: EVMC_REVERT , _gas_left, _output)
88+ ExecutionResult :: new ( StatusCode :: EVMC_REVERT , _gas_left, _output)
9389 }
9490
9591 /// Create a successful result.
9692 pub fn success ( _gas_left : i64 , _output : Option < & [ u8 ] > ) -> Self {
97- ExecutionResult :: new ( ffi :: evmc_status_code :: EVMC_SUCCESS , _gas_left, _output)
93+ ExecutionResult :: new ( StatusCode :: EVMC_SUCCESS , _gas_left, _output)
9894 }
9995
10096 /// Read the status code.
101- pub fn status_code ( & self ) -> ffi :: evmc_status_code {
97+ pub fn status_code ( & self ) -> StatusCode {
10298 self . status_code
10399 }
104100
@@ -121,7 +117,7 @@ impl ExecutionResult {
121117
122118impl ExecutionMessage {
123119 pub fn new (
124- kind : ffi :: evmc_call_kind ,
120+ kind : MessageKind ,
125121 flags : u32 ,
126122 depth : i32 ,
127123 gas : i64 ,
@@ -149,7 +145,7 @@ impl ExecutionMessage {
149145 }
150146
151147 /// Read the message kind.
152- pub fn kind ( & self ) -> ffi :: evmc_call_kind {
148+ pub fn kind ( & self ) -> MessageKind {
153149 self . kind
154150 }
155151
@@ -239,7 +235,7 @@ impl<'a> ExecutionContext<'a> {
239235 address : & Address ,
240236 key : & Bytes32 ,
241237 value : & Bytes32 ,
242- ) -> ffi :: evmc_storage_status {
238+ ) -> StorageStatus {
243239 unsafe {
244240 assert ! ( ( * self . host) . set_storage. is_some( ) ) ;
245241 ( * self . host ) . set_storage . unwrap ( ) (
@@ -501,9 +497,9 @@ mod tests {
501497
502498 #[ test]
503499 fn result_new ( ) {
504- let r = ExecutionResult :: new ( ffi :: evmc_status_code :: EVMC_FAILURE , 420 , None ) ;
500+ let r = ExecutionResult :: new ( StatusCode :: EVMC_FAILURE , 420 , None ) ;
505501
506- assert ! ( r. status_code( ) == ffi :: evmc_status_code :: EVMC_FAILURE ) ;
502+ assert ! ( r. status_code( ) == StatusCode :: EVMC_FAILURE ) ;
507503 assert ! ( r. gas_left( ) == 420 ) ;
508504 assert ! ( r. output( ) . is_none( ) ) ;
509505 assert ! ( r. create_address( ) . is_none( ) ) ;
@@ -526,7 +522,7 @@ mod tests {
526522 #[ test]
527523 fn result_from_ffi ( ) {
528524 let f = ffi:: evmc_result {
529- status_code : ffi :: evmc_status_code :: EVMC_SUCCESS ,
525+ status_code : StatusCode :: EVMC_SUCCESS ,
530526 gas_left : 1337 ,
531527 output_data : Box :: into_raw ( Box :: new ( [ 0xde , 0xad , 0xbe , 0xef ] ) ) as * const u8 ,
532528 output_size : 4 ,
@@ -537,7 +533,7 @@ mod tests {
537533
538534 let r: ExecutionResult = f. into ( ) ;
539535
540- assert ! ( r. status_code( ) == ffi :: evmc_status_code :: EVMC_SUCCESS ) ;
536+ assert ! ( r. status_code( ) == StatusCode :: EVMC_SUCCESS ) ;
541537 assert ! ( r. gas_left( ) == 1337 ) ;
542538 assert ! ( r. output( ) . is_some( ) ) ;
543539 assert ! ( r. output( ) . unwrap( ) . len( ) == 4 ) ;
@@ -547,15 +543,15 @@ mod tests {
547543 #[ test]
548544 fn result_into_heap_ffi ( ) {
549545 let r = ExecutionResult :: new (
550- ffi :: evmc_status_code :: EVMC_FAILURE ,
546+ StatusCode :: EVMC_FAILURE ,
551547 420 ,
552548 Some ( & [ 0xc0 , 0xff , 0xee , 0x71 , 0x75 ] ) ,
553549 ) ;
554550
555551 let f: * const ffi:: evmc_result = r. into ( ) ;
556552 assert ! ( !f. is_null( ) ) ;
557553 unsafe {
558- assert ! ( ( * f) . status_code == ffi :: evmc_status_code :: EVMC_FAILURE ) ;
554+ assert ! ( ( * f) . status_code == StatusCode :: EVMC_FAILURE ) ;
559555 assert ! ( ( * f) . gas_left == 420 ) ;
560556 assert ! ( !( * f) . output_data. is_null( ) ) ;
561557 assert ! ( ( * f) . output_size == 5 ) ;
@@ -572,12 +568,12 @@ mod tests {
572568
573569 #[ test]
574570 fn result_into_heap_ffi_empty_data ( ) {
575- let r = ExecutionResult :: new ( ffi :: evmc_status_code :: EVMC_FAILURE , 420 , None ) ;
571+ let r = ExecutionResult :: new ( StatusCode :: EVMC_FAILURE , 420 , None ) ;
576572
577573 let f: * const ffi:: evmc_result = r. into ( ) ;
578574 assert ! ( !f. is_null( ) ) ;
579575 unsafe {
580- assert ! ( ( * f) . status_code == ffi :: evmc_status_code :: EVMC_FAILURE ) ;
576+ assert ! ( ( * f) . status_code == StatusCode :: EVMC_FAILURE ) ;
581577 assert ! ( ( * f) . gas_left == 420 ) ;
582578 assert ! ( ( * f) . output_data. is_null( ) ) ;
583579 assert ! ( ( * f) . output_size == 0 ) ;
@@ -591,14 +587,14 @@ mod tests {
591587 #[ test]
592588 fn result_into_stack_ffi ( ) {
593589 let r = ExecutionResult :: new (
594- ffi :: evmc_status_code :: EVMC_FAILURE ,
590+ StatusCode :: EVMC_FAILURE ,
595591 420 ,
596592 Some ( & [ 0xc0 , 0xff , 0xee , 0x71 , 0x75 ] ) ,
597593 ) ;
598594
599595 let f: ffi:: evmc_result = r. into ( ) ;
600596 unsafe {
601- assert ! ( f. status_code == ffi :: evmc_status_code :: EVMC_FAILURE ) ;
597+ assert ! ( f. status_code == StatusCode :: EVMC_FAILURE ) ;
602598 assert ! ( f. gas_left == 420 ) ;
603599 assert ! ( !f. output_data. is_null( ) ) ;
604600 assert ! ( f. output_size == 5 ) ;
@@ -615,11 +611,11 @@ mod tests {
615611
616612 #[ test]
617613 fn result_into_stack_ffi_empty_data ( ) {
618- let r = ExecutionResult :: new ( ffi :: evmc_status_code :: EVMC_FAILURE , 420 , None ) ;
614+ let r = ExecutionResult :: new ( StatusCode :: EVMC_FAILURE , 420 , None ) ;
619615
620616 let f: ffi:: evmc_result = r. into ( ) ;
621617 unsafe {
622- assert ! ( f. status_code == ffi :: evmc_status_code :: EVMC_FAILURE ) ;
618+ assert ! ( f. status_code == StatusCode :: EVMC_FAILURE ) ;
623619 assert ! ( f. gas_left == 420 ) ;
624620 assert ! ( f. output_data. is_null( ) ) ;
625621 assert ! ( f. output_size == 0 ) ;
@@ -639,7 +635,7 @@ mod tests {
639635 let create2_salt = Bytes32 { bytes : [ 255u8 ; 32 ] } ;
640636
641637 let ret = ExecutionMessage :: new (
642- ffi :: evmc_call_kind :: EVMC_CALL ,
638+ MessageKind :: EVMC_CALL ,
643639 44 ,
644640 66 ,
645641 4466 ,
@@ -650,7 +646,7 @@ mod tests {
650646 create2_salt,
651647 ) ;
652648
653- assert_eq ! ( ret. kind( ) , ffi :: evmc_call_kind :: EVMC_CALL ) ;
649+ assert_eq ! ( ret. kind( ) , MessageKind :: EVMC_CALL ) ;
654650 assert_eq ! ( ret. flags( ) , 44 ) ;
655651 assert_eq ! ( ret. depth( ) , 66 ) ;
656652 assert_eq ! ( ret. gas( ) , 4466 ) ;
@@ -670,7 +666,7 @@ mod tests {
670666 let create2_salt = Bytes32 { bytes : [ 255u8 ; 32 ] } ;
671667
672668 let msg = ffi:: evmc_message {
673- kind : ffi :: evmc_call_kind :: EVMC_CALL ,
669+ kind : MessageKind :: EVMC_CALL ,
674670 flags : 44 ,
675671 depth : 66 ,
676672 gas : 4466 ,
@@ -704,7 +700,7 @@ mod tests {
704700 let create2_salt = Bytes32 { bytes : [ 255u8 ; 32 ] } ;
705701
706702 let msg = ffi:: evmc_message {
707- kind : ffi :: evmc_call_kind :: EVMC_CALL ,
703+ kind : MessageKind :: EVMC_CALL ,
708704 flags : 44 ,
709705 depth : 66 ,
710706 gas : 4466 ,
@@ -768,16 +764,16 @@ mod tests {
768764
769765 ffi:: evmc_result {
770766 status_code : if success {
771- ffi :: evmc_status_code :: EVMC_SUCCESS
767+ StatusCode :: EVMC_SUCCESS
772768 } else {
773- ffi :: evmc_status_code :: EVMC_INTERNAL_ERROR
769+ StatusCode :: EVMC_INTERNAL_ERROR
774770 } ,
775771 gas_left : 2 ,
776772 // NOTE: we are passing the input pointer here, but for testing the lifetime is ok
777773 output_data : msg. input_data ,
778774 output_size : msg. input_size ,
779775 release : None ,
780- create_address : ffi :: evmc_address :: default ( ) ,
776+ create_address : Address :: default ( ) ,
781777 padding : [ 0u8 ; 4 ] ,
782778 }
783779 }
@@ -832,61 +828,61 @@ mod tests {
832828 #[ test]
833829 fn test_call_empty_data ( ) {
834830 // This address is useless. Just a dummy parameter for the interface function.
835- let test_addr = ffi :: evmc_address { bytes : [ 0u8 ; 20 ] } ;
831+ let test_addr = Address :: default ( ) ;
836832 let host = get_dummy_host_interface ( ) ;
837833 let host_context = std:: ptr:: null_mut ( ) ;
838834 let mut exe_context = ExecutionContext :: new ( & host, host_context) ;
839835
840836 let message = ExecutionMessage :: new (
841- ffi :: evmc_call_kind :: EVMC_CALL ,
837+ MessageKind :: EVMC_CALL ,
842838 0 ,
843839 0 ,
844840 6566 ,
845841 test_addr,
846842 test_addr,
847843 None ,
848- ffi :: evmc_uint256be :: default ( ) ,
849- ffi :: evmc_bytes32 :: default ( ) ,
844+ Uint256 :: default ( ) ,
845+ Bytes32 :: default ( ) ,
850846 ) ;
851847
852848 let b = exe_context. call ( & message) ;
853849
854- assert_eq ! ( b. status_code( ) , ffi :: evmc_status_code :: EVMC_SUCCESS ) ;
850+ assert_eq ! ( b. status_code( ) , StatusCode :: EVMC_SUCCESS ) ;
855851 assert_eq ! ( b. gas_left( ) , 2 ) ;
856852 assert ! ( b. output( ) . is_none( ) ) ;
857853 assert ! ( b. create_address( ) . is_some( ) ) ;
858- assert_eq ! ( b. create_address( ) . unwrap( ) , & ffi :: evmc_address :: default ( ) ) ;
854+ assert_eq ! ( b. create_address( ) . unwrap( ) , & Address :: default ( ) ) ;
859855 }
860856
861857 #[ test]
862858 fn test_call_with_data ( ) {
863859 // This address is useless. Just a dummy parameter for the interface function.
864- let test_addr = ffi :: evmc_address { bytes : [ 0u8 ; 20 ] } ;
860+ let test_addr = Address :: default ( ) ;
865861 let host = get_dummy_host_interface ( ) ;
866862 let host_context = std:: ptr:: null_mut ( ) ;
867863 let mut exe_context = ExecutionContext :: new ( & host, host_context) ;
868864
869865 let data = vec ! [ 0xc0 , 0xff , 0xfe ] ;
870866
871867 let message = ExecutionMessage :: new (
872- ffi :: evmc_call_kind :: EVMC_CALL ,
868+ MessageKind :: EVMC_CALL ,
873869 0 ,
874870 0 ,
875871 6566 ,
876872 test_addr,
877873 test_addr,
878874 Some ( & data) ,
879- ffi :: evmc_uint256be :: default ( ) ,
880- ffi :: evmc_bytes32 :: default ( ) ,
875+ Uint256 :: default ( ) ,
876+ Bytes32 :: default ( ) ,
881877 ) ;
882878
883879 let b = exe_context. call ( & message) ;
884880
885- assert_eq ! ( b. status_code( ) , ffi :: evmc_status_code :: EVMC_SUCCESS ) ;
881+ assert_eq ! ( b. status_code( ) , StatusCode :: EVMC_SUCCESS ) ;
886882 assert_eq ! ( b. gas_left( ) , 2 ) ;
887883 assert ! ( b. output( ) . is_some( ) ) ;
888884 assert_eq ! ( b. output( ) . unwrap( ) , & data) ;
889885 assert ! ( b. create_address( ) . is_some( ) ) ;
890- assert_eq ! ( b. create_address( ) . unwrap( ) , & ffi :: evmc_address :: default ( ) ) ;
886+ assert_eq ! ( b. create_address( ) . unwrap( ) , & Address :: default ( ) ) ;
891887 }
892888}
0 commit comments