summaryrefslogtreecommitdiff
path: root/binaryview.cpp
diff options
context:
space:
mode:
authorBrian Potchik <brian@vector35.com>2018-01-11 17:10:34 -0500
committerBrian Potchik <brian@vector35.com>2018-01-11 17:10:34 -0500
commit1df49afa5522d73d509d20db9588294fe259085f (patch)
tree089a2ff85c527c485a9d8bd7f3b9c6d234f2fa2f /binaryview.cpp
parentbc779f1e0140a933d65926b9af840a80636a6dd4 (diff)
API Temporary Object Elimination.
Diffstat (limited to 'binaryview.cpp')
-rw-r--r--binaryview.cpp22
1 files changed, 5 insertions, 17 deletions
diff --git a/binaryview.cpp b/binaryview.cpp
index 50011a0f..00cd294f 100644
--- a/binaryview.cpp
+++ b/binaryview.cpp
@@ -82,10 +82,7 @@ void BinaryDataNotification::DataVariableAddedCallback(void* ctxt, BNBinaryView*
{
BinaryDataNotification* notify = (BinaryDataNotification*)ctxt;
Ref<BinaryView> view = new BinaryView(BNNewViewReference(object));
- DataVariable varObj;
- varObj.address = var->address;
- varObj.type = Confidence<Ref<Type>>(new Type(BNNewTypeReference(var->type)), var->typeConfidence);
- varObj.autoDiscovered = var->autoDiscovered;
+ DataVariable varObj(var->address, Confidence<Ref<Type>>(new Type(BNNewTypeReference(var->type)), var->typeConfidence), var->autoDiscovered);
notify->OnDataVariableAdded(view, varObj);
}
@@ -94,10 +91,7 @@ void BinaryDataNotification::DataVariableRemovedCallback(void* ctxt, BNBinaryVie
{
BinaryDataNotification* notify = (BinaryDataNotification*)ctxt;
Ref<BinaryView> view = new BinaryView(BNNewViewReference(object));
- DataVariable varObj;
- varObj.address = var->address;
- varObj.type = Confidence<Ref<Type>>(new Type(BNNewTypeReference(var->type)), var->typeConfidence);
- varObj.autoDiscovered = var->autoDiscovered;
+ DataVariable varObj(var->address, Confidence<Ref<Type>>(new Type(BNNewTypeReference(var->type)), var->typeConfidence), var->autoDiscovered);
notify->OnDataVariableRemoved(view, varObj);
}
@@ -106,10 +100,7 @@ void BinaryDataNotification::DataVariableUpdatedCallback(void* ctxt, BNBinaryVie
{
BinaryDataNotification* notify = (BinaryDataNotification*)ctxt;
Ref<BinaryView> view = new BinaryView(BNNewViewReference(object));
- DataVariable varObj;
- varObj.address = var->address;
- varObj.type = Confidence<Ref<Type>>(new Type(BNNewTypeReference(var->type)), var->typeConfidence);
- varObj.autoDiscovered = var->autoDiscovered;
+ DataVariable varObj(var->address, Confidence<Ref<Type>>(new Type(BNNewTypeReference(var->type)), var->typeConfidence), var->autoDiscovered);
notify->OnDataVariableUpdated(view, varObj);
}
@@ -965,11 +956,8 @@ map<uint64_t, DataVariable> BinaryView::GetDataVariables()
map<uint64_t, DataVariable> result;
for (size_t i = 0; i < count; i++)
{
- DataVariable var;
- var.address = vars[i].address;
- var.type = Confidence<Ref<Type>>(new Type(BNNewTypeReference(vars[i].type)), vars[i].typeConfidence);
- var.autoDiscovered = vars[i].autoDiscovered;
- result[var.address] = var;
+ result.emplace(piecewise_construct, forward_as_tuple(vars[i].address),
+ forward_as_tuple(vars[i].address, Confidence<Ref<Type>>(new Type(BNNewTypeReference(vars[i].type)), vars[i].typeConfidence), vars[i].autoDiscovered));
}
BNFreeDataVariables(vars, count);