summaryrefslogtreecommitdiff
path: root/function.cpp
diff options
context:
space:
mode:
authorRusty Wagner <rusty@vector35.com>2017-03-22 22:43:16 -0400
committerRusty Wagner <rusty@vector35.com>2017-03-22 22:43:16 -0400
commitcb244a62fea649d6840b70b8e7fe7953eb3acc5a (patch)
tree6d9a49f2c262cfc2680cbf85124ff08b2e014297 /function.cpp
parenta2992eb4a48dc38b60989f34f51812245a6239c4 (diff)
Adding new value object to hold disjoint sets
Diffstat (limited to 'function.cpp')
-rw-r--r--function.cpp27
1 files changed, 21 insertions, 6 deletions
diff --git a/function.cpp b/function.cpp
index aa56f7af..16ad1f1c 100644
--- a/function.cpp
+++ b/function.cpp
@@ -170,14 +170,19 @@ RegisterValue RegisterValue::FromAPIObject(BNRegisterValue& value)
{
RegisterValue result;
result.state = value.state;
- result.reg = value.reg;
result.value = value.value;
- result.rangeStart = value.rangeStart;
- result.rangeEnd = value.rangeEnd;
- result.rangeStep = value.rangeStep;
+ return result;
+}
+
+
+PossibleValueSet PossibleValueSet::FromAPIObject(BNPossibleValueSet& value)
+{
+ PossibleValueSet result;
+ result.state = value.state;
+ result.value = value.value;
if (value.state == LookupTableValue)
{
- for (size_t i = 0; i < (size_t)value.rangeEnd; i++)
+ for (size_t i = 0; i < value.count; i++)
{
LookupTableEntry entry;
entry.fromValues.insert(entry.fromValues.end(), &value.table[i].fromValues[0],
@@ -186,7 +191,17 @@ RegisterValue RegisterValue::FromAPIObject(BNRegisterValue& value)
result.table.push_back(entry);
}
}
- BNFreeRegisterValue(&value);
+ else if ((value.state == SignedRangeValue) || (value.state == UnsignedRangeValue))
+ {
+ for (size_t i = 0; i < value.count; i++)
+ result.ranges.push_back(value.ranges[i]);
+ }
+ else if ((value.state == InSetOfValues) || (value.state == NotInSetOfValues))
+ {
+ for (size_t i = 0; i < value.count; i++)
+ result.valueSet.insert(value.valueSet[i]);
+ }
+ BNFreePossibleValueSet(&value);
return result;
}