diff options
| author | Rusty Wagner <rusty@vector35.com> | 2019-12-18 13:50:16 -0500 |
|---|---|---|
| committer | Rusty Wagner <rusty@vector35.com> | 2019-12-18 13:50:16 -0500 |
| commit | 2c84a4aaf3abacab15a5f0d81987c620922a3f2d (patch) | |
| tree | 172d1e3ab6caab1d81ace5e1f26add1ea785b3a9 | |
| parent | 142004d7f31ad2eee58dc6c9bdec7bdcc530cf58 (diff) | |
Return self reference from builders for chaining
| -rw-r--r-- | binaryninjaapi.h | 36 | ||||
| -rw-r--r-- | type.cpp | 58 |
2 files changed, 56 insertions, 38 deletions
diff --git a/binaryninjaapi.h b/binaryninjaapi.h index 5c11d0b8..c4911697 100644 --- a/binaryninjaapi.h +++ b/binaryninjaapi.h @@ -2589,19 +2589,19 @@ __attribute__ ((format (printf, 1, 2))) Ref<Enumeration> GetEnumeration() const; Ref<NamedTypeReference> GetNamedTypeReference() const; Confidence<BNMemberScope> GetScope() const; - void SetScope(const Confidence<BNMemberScope>& scope); + TypeBuilder& SetScope(const Confidence<BNMemberScope>& scope); Confidence<BNMemberAccess> GetAccess() const; - void SetAccess(const Confidence<BNMemberAccess>& access); - void SetConst(const Confidence<bool>& cnst); - void SetVolatile(const Confidence<bool>& vltl); - void SetTypeName(const QualifiedName& name); + TypeBuilder& SetAccess(const Confidence<BNMemberAccess>& access); + TypeBuilder& SetConst(const Confidence<bool>& cnst); + TypeBuilder& SetVolatile(const Confidence<bool>& vltl); + TypeBuilder& SetTypeName(const QualifiedName& name); Confidence<int64_t> GetStackAdjustment() const; QualifiedName GetStructureName() const; uint64_t GetElementCount() const; uint64_t GetOffset() const; - void SetFunctionCanReturn(const Confidence<bool>& canReturn); + TypeBuilder& SetFunctionCanReturn(const Confidence<bool>& canReturn); std::string GetString(Platform* platform = nullptr) const; std::string GetTypeAndName(const QualifiedName& name) const; @@ -2729,18 +2729,18 @@ __attribute__ ((format (printf, 1, 2))) bool GetMemberAtOffset(int64_t offset, StructureMember& result) const; bool GetMemberAtOffset(int64_t offset, StructureMember& result, size_t& idx) const; uint64_t GetWidth() const; - void SetWidth(size_t width); + StructureBuilder& SetWidth(size_t width); size_t GetAlignment() const; - void SetAlignment(size_t align); + StructureBuilder& SetAlignment(size_t align); bool IsPacked() const; - void SetPacked(bool packed); + StructureBuilder& SetPacked(bool packed); bool IsUnion() const; - void SetStructureType(BNStructureType type); + StructureBuilder& SetStructureType(BNStructureType type); BNStructureType GetStructureType() const; - void AddMember(const Confidence<Ref<Type>>& type, const std::string& name); - void AddMemberAtOffset(const Confidence<Ref<Type>>& type, const std::string& name, uint64_t offset); - void RemoveMember(size_t idx); - void ReplaceMember(size_t idx, const Confidence<Ref<Type>>& type, const std::string& name); + StructureBuilder& AddMember(const Confidence<Ref<Type>>& type, const std::string& name); + StructureBuilder& AddMemberAtOffset(const Confidence<Ref<Type>>& type, const std::string& name, uint64_t offset); + StructureBuilder& RemoveMember(size_t idx); + StructureBuilder& ReplaceMember(size_t idx, const Confidence<Ref<Type>>& type, const std::string& name); }; struct EnumerationMember @@ -2777,10 +2777,10 @@ __attribute__ ((format (printf, 1, 2))) std::vector<EnumerationMember> GetMembers() const; - void AddMember(const std::string& name); - void AddMemberWithValue(const std::string& name, uint64_t value); - void RemoveMember(size_t idx); - void ReplaceMember(size_t idx, const std::string& name, uint64_t value); + EnumerationBuilder& AddMember(const std::string& name); + EnumerationBuilder& AddMemberWithValue(const std::string& name, uint64_t value); + EnumerationBuilder& RemoveMember(size_t idx); + EnumerationBuilder& ReplaceMember(size_t idx, const std::string& name, uint64_t value); }; class DisassemblySettings: public CoreRefCountObject<BNDisassemblySettings, @@ -1051,12 +1051,13 @@ Confidence<BNMemberScope> TypeBuilder::GetScope() const } -void TypeBuilder::SetScope(const Confidence<BNMemberScope>& scope) +TypeBuilder& TypeBuilder::SetScope(const Confidence<BNMemberScope>& scope) { BNMemberScopeWithConfidence mc; mc.value = scope.GetValue(); mc.confidence = scope.GetConfidence(); - return BNTypeBuilderSetMemberScope(m_object, &mc); + BNTypeBuilderSetMemberScope(m_object, &mc); + return *this; } @@ -1067,30 +1068,33 @@ Confidence<BNMemberAccess> TypeBuilder::GetAccess() const } -void TypeBuilder::SetAccess(const Confidence<BNMemberAccess>& access) +TypeBuilder& TypeBuilder::SetAccess(const Confidence<BNMemberAccess>& access) { BNMemberAccessWithConfidence mc; mc.value = access.GetValue(); mc.confidence = access.GetConfidence(); - return BNTypeBuilderSetMemberAccess(m_object, &mc); + BNTypeBuilderSetMemberAccess(m_object, &mc); + return *this; } -void TypeBuilder::SetConst(const Confidence<bool>& cnst) +TypeBuilder& TypeBuilder::SetConst(const Confidence<bool>& cnst) { BNBoolWithConfidence bc; bc.value = cnst.GetValue(); bc.confidence = cnst.GetConfidence(); BNTypeBuilderSetConst(m_object, &bc); + return *this; } -void TypeBuilder::SetVolatile(const Confidence<bool>& vltl) +TypeBuilder& TypeBuilder::SetVolatile(const Confidence<bool>& vltl) { BNBoolWithConfidence bc; bc.value = vltl.GetValue(); bc.confidence = vltl.GetConfidence(); BNTypeBuilderSetVolatile(m_object, &bc); + return *this; } @@ -1417,12 +1421,13 @@ TypeBuilder TypeBuilder::FunctionType(const Confidence<Ref<Type>>& returnValue, } -void TypeBuilder::SetFunctionCanReturn(const Confidence<bool>& canReturn) +TypeBuilder& TypeBuilder::SetFunctionCanReturn(const Confidence<bool>& canReturn) { BNBoolWithConfidence bc; bc.value = canReturn.GetValue(); bc.confidence = canReturn.GetConfidence(); BNSetFunctionTypeBuilderCanReturn(m_object, &bc); + return *this; } @@ -1441,11 +1446,12 @@ QualifiedName TypeBuilder::GetTypeName() const } -void TypeBuilder::SetTypeName(const QualifiedName& names) +TypeBuilder& TypeBuilder::SetTypeName(const QualifiedName& names) { BNQualifiedName nameObj = names.GetAPIObject(); BNTypeBuilderSetTypeName(m_object, &nameObj); QualifiedName::FreeAPIObject(&nameObj); + return *this; } @@ -1790,9 +1796,10 @@ uint64_t StructureBuilder::GetWidth() const } -void StructureBuilder::SetWidth(size_t width) +StructureBuilder& StructureBuilder::SetWidth(size_t width) { BNSetStructureBuilderWidth(m_object, width); + return *this; } @@ -1802,9 +1809,10 @@ size_t StructureBuilder::GetAlignment() const } -void StructureBuilder::SetAlignment(size_t align) +StructureBuilder& StructureBuilder::SetAlignment(size_t align) { BNSetStructureBuilderAlignment(m_object, align); + return *this; } @@ -1814,9 +1822,10 @@ bool StructureBuilder::IsPacked() const } -void StructureBuilder::SetPacked(bool packed) +StructureBuilder& StructureBuilder::SetPacked(bool packed) { BNSetStructureBuilderPacked(m_object, packed); + return *this; } @@ -1826,9 +1835,10 @@ bool StructureBuilder::IsUnion() const } -void StructureBuilder::SetStructureType(BNStructureType t) +StructureBuilder& StructureBuilder::SetStructureType(BNStructureType t) { BNSetStructureBuilderType(m_object, t); + return *this; } @@ -1838,36 +1848,40 @@ BNStructureType StructureBuilder::GetStructureType() const } -void StructureBuilder::AddMember(const Confidence<Ref<Type>>& type, const string& name) +StructureBuilder& StructureBuilder::AddMember(const Confidence<Ref<Type>>& type, const string& name) { BNTypeWithConfidence tc; tc.type = type->GetObject(); tc.confidence = type.GetConfidence(); BNAddStructureBuilderMember(m_object, &tc, name.c_str()); + return *this; } -void StructureBuilder::AddMemberAtOffset(const Confidence<Ref<Type>>& type, const string& name, uint64_t offset) +StructureBuilder& StructureBuilder::AddMemberAtOffset(const Confidence<Ref<Type>>& type, const string& name, uint64_t offset) { BNTypeWithConfidence tc; tc.type = type->GetObject(); tc.confidence = type.GetConfidence(); BNAddStructureBuilderMemberAtOffset(m_object, &tc, name.c_str(), offset); + return *this; } -void StructureBuilder::RemoveMember(size_t idx) +StructureBuilder& StructureBuilder::RemoveMember(size_t idx) { BNRemoveStructureBuilderMember(m_object, idx); + return *this; } -void StructureBuilder::ReplaceMember(size_t idx, const Confidence<Ref<Type>>& type, const std::string& name) +StructureBuilder& StructureBuilder::ReplaceMember(size_t idx, const Confidence<Ref<Type>>& type, const std::string& name) { BNTypeWithConfidence tc; tc.type = type->GetObject(); tc.confidence = type.GetConfidence(); BNReplaceStructureBuilderMember(m_object, idx, &tc, name.c_str()); + return *this; } @@ -1989,27 +2003,31 @@ vector<EnumerationMember> EnumerationBuilder::GetMembers() const } -void EnumerationBuilder::AddMember(const string& name) +EnumerationBuilder& EnumerationBuilder::AddMember(const string& name) { BNAddEnumerationBuilderMember(m_object, name.c_str()); + return *this; } -void EnumerationBuilder::AddMemberWithValue(const string& name, uint64_t value) +EnumerationBuilder& EnumerationBuilder::AddMemberWithValue(const string& name, uint64_t value) { BNAddEnumerationBuilderMemberWithValue(m_object, name.c_str(), value); + return *this; } -void EnumerationBuilder::RemoveMember(size_t idx) +EnumerationBuilder& EnumerationBuilder::RemoveMember(size_t idx) { BNRemoveEnumerationBuilderMember(m_object, idx); + return *this; } -void EnumerationBuilder::ReplaceMember(size_t idx, const string& name, uint64_t value) +EnumerationBuilder& EnumerationBuilder::ReplaceMember(size_t idx, const string& name, uint64_t value) { BNReplaceEnumerationBuilderMember(m_object, idx, name.c_str(), value); + return *this; } |
