@@ -15,7 +15,6 @@ use binaryninjacore_sys::{
1515use std:: collections:: HashSet ;
1616
1717pub type VariableSourceType = BNVariableSourceType ;
18- pub type RegisterValueType = BNRegisterValueType ;
1918
2019#[ derive( Debug , Clone , Hash , PartialEq , Eq ) ]
2120pub struct DataVariable {
@@ -514,7 +513,7 @@ impl RegisterValue {
514513impl From < BNRegisterValue > for RegisterValue {
515514 fn from ( value : BNRegisterValue ) -> Self {
516515 Self {
517- state : value. state ,
516+ state : value. state . into ( ) ,
518517 value : value. value ,
519518 offset : value. offset ,
520519 size : value. size ,
@@ -525,14 +524,108 @@ impl From<BNRegisterValue> for RegisterValue {
525524impl From < RegisterValue > for BNRegisterValue {
526525 fn from ( value : RegisterValue ) -> Self {
527526 Self {
528- state : value. state ,
527+ state : value. state . into ( ) ,
529528 value : value. value ,
530529 offset : value. offset ,
531530 size : value. size ,
532531 }
533532 }
534533}
535534
535+ #[ derive( Clone , Copy , Debug , Hash , Eq , PartialEq ) ]
536+ pub enum RegisterValueType {
537+ UndeterminedValue = 0 ,
538+ EntryValue = 1 ,
539+ ConstantValue = 2 ,
540+ ConstantPointerValue = 3 ,
541+ ExternalPointerValue = 4 ,
542+ StackFrameOffset = 5 ,
543+ ReturnAddressValue = 6 ,
544+ ImportedAddressValue = 7 ,
545+ SignedRangeValue = 8 ,
546+ UnsignedRangeValue = 9 ,
547+ LookupTableValue = 10 ,
548+ InSetOfValues = 11 ,
549+ NotInSetOfValues = 12 ,
550+ ConstantDataValue = 32768 ,
551+ ConstantDataZeroExtendValue = 32769 ,
552+ ConstantDataSignExtendValue = 32770 ,
553+ ConstantDataAggregateValue = 32771 ,
554+ }
555+
556+ impl From < u32 > for RegisterValueType {
557+ fn from ( value : u32 ) -> Self {
558+ match value {
559+ 0 => Self :: UndeterminedValue ,
560+ 1 => Self :: EntryValue ,
561+ 2 => Self :: ConstantValue ,
562+ 3 => Self :: ConstantPointerValue ,
563+ 4 => Self :: ExternalPointerValue ,
564+ 5 => Self :: StackFrameOffset ,
565+ 6 => Self :: ReturnAddressValue ,
566+ 7 => Self :: ImportedAddressValue ,
567+ 8 => Self :: SignedRangeValue ,
568+ 9 => Self :: UnsignedRangeValue ,
569+ 10 => Self :: LookupTableValue ,
570+ 11 => Self :: InSetOfValues ,
571+ 12 => Self :: NotInSetOfValues ,
572+ 32768 => Self :: ConstantDataValue ,
573+ 32769 => Self :: ConstantDataZeroExtendValue ,
574+ 32770 => Self :: ConstantDataSignExtendValue ,
575+ 32771 => Self :: ConstantDataAggregateValue ,
576+ _ => unreachable ! ( ) ,
577+ }
578+ }
579+ }
580+
581+ impl From < BNRegisterValueType > for RegisterValueType {
582+ fn from ( value : BNRegisterValueType ) -> Self {
583+ match value {
584+ BNRegisterValueType :: UndeterminedValue => Self :: UndeterminedValue ,
585+ BNRegisterValueType :: EntryValue => Self :: EntryValue ,
586+ BNRegisterValueType :: ConstantValue => Self :: ConstantValue ,
587+ BNRegisterValueType :: ConstantPointerValue => Self :: ConstantPointerValue ,
588+ BNRegisterValueType :: ExternalPointerValue => Self :: ExternalPointerValue ,
589+ BNRegisterValueType :: StackFrameOffset => Self :: StackFrameOffset ,
590+ BNRegisterValueType :: ReturnAddressValue => Self :: ReturnAddressValue ,
591+ BNRegisterValueType :: ImportedAddressValue => Self :: ImportedAddressValue ,
592+ BNRegisterValueType :: SignedRangeValue => Self :: SignedRangeValue ,
593+ BNRegisterValueType :: UnsignedRangeValue => Self :: UnsignedRangeValue ,
594+ BNRegisterValueType :: LookupTableValue => Self :: LookupTableValue ,
595+ BNRegisterValueType :: InSetOfValues => Self :: InSetOfValues ,
596+ BNRegisterValueType :: NotInSetOfValues => Self :: NotInSetOfValues ,
597+ BNRegisterValueType :: ConstantDataValue => Self :: ConstantDataValue ,
598+ BNRegisterValueType :: ConstantDataZeroExtendValue => Self :: ConstantDataZeroExtendValue ,
599+ BNRegisterValueType :: ConstantDataSignExtendValue => Self :: ConstantDataSignExtendValue ,
600+ BNRegisterValueType :: ConstantDataAggregateValue => Self :: ConstantDataAggregateValue ,
601+ }
602+ }
603+ }
604+
605+ impl From < RegisterValueType > for BNRegisterValueType {
606+ fn from ( value : RegisterValueType ) -> Self {
607+ match value {
608+ RegisterValueType :: UndeterminedValue => Self :: UndeterminedValue ,
609+ RegisterValueType :: EntryValue => Self :: EntryValue ,
610+ RegisterValueType :: ConstantValue => Self :: ConstantValue ,
611+ RegisterValueType :: ConstantPointerValue => Self :: ConstantPointerValue ,
612+ RegisterValueType :: ExternalPointerValue => Self :: ExternalPointerValue ,
613+ RegisterValueType :: StackFrameOffset => Self :: StackFrameOffset ,
614+ RegisterValueType :: ReturnAddressValue => Self :: ReturnAddressValue ,
615+ RegisterValueType :: ImportedAddressValue => Self :: ImportedAddressValue ,
616+ RegisterValueType :: SignedRangeValue => Self :: SignedRangeValue ,
617+ RegisterValueType :: UnsignedRangeValue => Self :: UnsignedRangeValue ,
618+ RegisterValueType :: LookupTableValue => Self :: LookupTableValue ,
619+ RegisterValueType :: InSetOfValues => Self :: InSetOfValues ,
620+ RegisterValueType :: NotInSetOfValues => Self :: NotInSetOfValues ,
621+ RegisterValueType :: ConstantDataValue => Self :: ConstantDataValue ,
622+ RegisterValueType :: ConstantDataZeroExtendValue => Self :: ConstantDataZeroExtendValue ,
623+ RegisterValueType :: ConstantDataSignExtendValue => Self :: ConstantDataSignExtendValue ,
624+ RegisterValueType :: ConstantDataAggregateValue => Self :: ConstantDataAggregateValue ,
625+ }
626+ }
627+ }
628+
536629#[ derive( Debug , Copy , Clone , Hash , PartialEq , Eq ) ]
537630pub struct ValueRange < T > {
538631 pub start : T ,
@@ -703,64 +796,64 @@ impl PossibleValueSet {
703796impl From < BNPossibleValueSet > for PossibleValueSet {
704797 fn from ( value : BNPossibleValueSet ) -> Self {
705798 match value. state {
706- RegisterValueType :: UndeterminedValue => Self :: UndeterminedValue ,
707- RegisterValueType :: EntryValue => Self :: EntryValue { reg : value. value } ,
708- RegisterValueType :: ConstantValue => Self :: ConstantValue { value : value. value } ,
709- RegisterValueType :: ConstantPointerValue => {
799+ BNRegisterValueType :: UndeterminedValue => Self :: UndeterminedValue ,
800+ BNRegisterValueType :: EntryValue => Self :: EntryValue { reg : value. value } ,
801+ BNRegisterValueType :: ConstantValue => Self :: ConstantValue { value : value. value } ,
802+ BNRegisterValueType :: ConstantPointerValue => {
710803 Self :: ConstantPointerValue { value : value. value }
711804 }
712- RegisterValueType :: ExternalPointerValue => Self :: ExternalPointerValue {
805+ BNRegisterValueType :: ExternalPointerValue => Self :: ExternalPointerValue {
713806 value : value. value ,
714807 offset : value. offset ,
715808 } ,
716- RegisterValueType :: StackFrameOffset => Self :: StackFrameOffset { value : value. value } ,
717- RegisterValueType :: ReturnAddressValue => Self :: ReturnAddressValue ,
718- RegisterValueType :: ImportedAddressValue => Self :: ImportedAddressValue ,
719- RegisterValueType :: SignedRangeValue => {
809+ BNRegisterValueType :: StackFrameOffset => Self :: StackFrameOffset { value : value. value } ,
810+ BNRegisterValueType :: ReturnAddressValue => Self :: ReturnAddressValue ,
811+ BNRegisterValueType :: ImportedAddressValue => Self :: ImportedAddressValue ,
812+ BNRegisterValueType :: SignedRangeValue => {
720813 let raw_ranges = unsafe { std:: slice:: from_raw_parts ( value. ranges , value. count ) } ;
721814 Self :: SignedRangeValue {
722815 value : value. value ,
723816 ranges : raw_ranges. iter ( ) . map ( |& r| r. into ( ) ) . collect ( ) ,
724817 }
725818 }
726- RegisterValueType :: UnsignedRangeValue => {
819+ BNRegisterValueType :: UnsignedRangeValue => {
727820 let raw_ranges = unsafe { std:: slice:: from_raw_parts ( value. ranges , value. count ) } ;
728821 Self :: UnsignedRangeValue {
729822 value : value. value ,
730823 ranges : raw_ranges. iter ( ) . map ( |& r| r. into ( ) ) . collect ( ) ,
731824 }
732825 }
733- RegisterValueType :: LookupTableValue => {
826+ BNRegisterValueType :: LookupTableValue => {
734827 let raw_entries = unsafe { std:: slice:: from_raw_parts ( value. table , value. count ) } ;
735828 Self :: LookupTableValue {
736829 table : raw_entries. iter ( ) . map ( |& r| r. into ( ) ) . collect ( ) ,
737830 }
738831 }
739- RegisterValueType :: InSetOfValues => {
832+ BNRegisterValueType :: InSetOfValues => {
740833 let raw_values = unsafe { std:: slice:: from_raw_parts ( value. valueSet , value. count ) } ;
741834 Self :: InSetOfValues {
742835 values : raw_values. iter ( ) . copied ( ) . collect ( ) ,
743836 }
744837 }
745- RegisterValueType :: NotInSetOfValues => {
838+ BNRegisterValueType :: NotInSetOfValues => {
746839 let raw_values = unsafe { std:: slice:: from_raw_parts ( value. valueSet , value. count ) } ;
747840 Self :: NotInSetOfValues {
748841 values : raw_values. iter ( ) . copied ( ) . collect ( ) ,
749842 }
750843 }
751- RegisterValueType :: ConstantDataValue => Self :: ConstantDataValue {
844+ BNRegisterValueType :: ConstantDataValue => Self :: ConstantDataValue {
752845 value : value. value ,
753846 size : value. size ,
754847 } ,
755- RegisterValueType :: ConstantDataZeroExtendValue => Self :: ConstantDataZeroExtendValue {
848+ BNRegisterValueType :: ConstantDataZeroExtendValue => Self :: ConstantDataZeroExtendValue {
756849 value : value. value ,
757850 size : value. size ,
758851 } ,
759- RegisterValueType :: ConstantDataSignExtendValue => Self :: ConstantDataSignExtendValue {
852+ BNRegisterValueType :: ConstantDataSignExtendValue => Self :: ConstantDataSignExtendValue {
760853 value : value. value ,
761854 size : value. size ,
762855 } ,
763- RegisterValueType :: ConstantDataAggregateValue => Self :: ConstantDataAggregateValue {
856+ BNRegisterValueType :: ConstantDataAggregateValue => Self :: ConstantDataAggregateValue {
764857 value : value. value ,
765858 size : value. size ,
766859 } ,
@@ -772,7 +865,7 @@ impl From<BNPossibleValueSet> for PossibleValueSet {
772865impl From < PossibleValueSet > for BNPossibleValueSet {
773866 fn from ( value : PossibleValueSet ) -> Self {
774867 let mut raw = BNPossibleValueSet {
775- state : value. value_type ( ) ,
868+ state : value. value_type ( ) . into ( ) ,
776869 ..Default :: default ( )
777870 } ;
778871 match value {
0 commit comments