From 0076048355861138242269604010707434705113 Mon Sep 17 00:00:00 2001 From: Glenn Smith Date: Thu, 26 Sep 2024 00:32:43 -0400 Subject: Add VarArgsType and ValueType constructors --- binaryninjaapi.h | 4 ++++ binaryninjacore.h | 4 ++++ type.cpp | 28 ++++++++++++++++++++++++++++ 3 files changed, 36 insertions(+) diff --git a/binaryninjaapi.h b/binaryninjaapi.h index 4c725da6..feb15aa5 100644 --- a/binaryninjaapi.h +++ b/binaryninjaapi.h @@ -8953,6 +8953,8 @@ namespace BinaryNinja { const Confidence>& returnRegs = Confidence>(std::vector(), 0), BNNameType ft = NoNameType, const Confidence& pure = Confidence(false, 0)); + static Ref VarArgsType(); + static Ref ValueType(const std::string& value); static std::string GenerateAutoTypeId(const std::string& source, const QualifiedName& name); static std::string GenerateAutoDemangledTypeId(const QualifiedName& name); @@ -9236,6 +9238,8 @@ namespace BinaryNinja { const Confidence>& returnRegs = Confidence>(std::vector(), 0), BNNameType ft = NoNameType, const Confidence& pure = Confidence(false, 0)); + static TypeBuilder VarArgsType(); + static TypeBuilder ValueType(const std::string& value); bool IsReferenceOfType(BNNamedTypeReferenceClass refType); bool IsStructReference() { return IsReferenceOfType(StructNamedTypeClass); } diff --git a/binaryninjacore.h b/binaryninjacore.h index a1759a46..23471a7b 100644 --- a/binaryninjacore.h +++ b/binaryninjacore.h @@ -5913,6 +5913,8 @@ extern "C" BNBoolWithConfidence* canReturn, BNOffsetWithConfidence* stackAdjust, uint32_t* regStackAdjustRegs, BNOffsetWithConfidence* regStackAdjustValues, size_t regStackAdjustCount, BNRegisterSetWithConfidence* returnRegs, BNNameType ft, BNBoolWithConfidence* pure); + BINARYNINJACOREAPI BNType* BNCreateVarArgsType(); + BINARYNINJACOREAPI BNType* BNCreateValueType(const char* value); BINARYNINJACOREAPI BNType* BNNewTypeReference(BNType* type); BINARYNINJACOREAPI BNType* BNDuplicateType(BNType* type); BINARYNINJACOREAPI char* BNGetTypeAndName(BNType* type, BNQualifiedName* name, BNTokenEscapingType escaping); @@ -5944,6 +5946,8 @@ extern "C" BNBoolWithConfidence* canReturn, BNOffsetWithConfidence* stackAdjust, uint32_t* regStackAdjustRegs, BNOffsetWithConfidence* regStackAdjustValues, size_t regStackAdjustCount, BNRegisterSetWithConfidence* returnRegs, BNNameType ft, BNBoolWithConfidence* pure); + BINARYNINJACOREAPI BNTypeBuilder* BNCreateVarArgsTypeBuilder(); + BINARYNINJACOREAPI BNTypeBuilder* BNCreateValueTypeBuilder(const char* value); BINARYNINJACOREAPI BNType* BNFinalizeTypeBuilder(BNTypeBuilder* type); BINARYNINJACOREAPI BNTypeBuilder* BNDuplicateTypeBuilder(BNTypeBuilder* type); BINARYNINJACOREAPI char* BNGetTypeBuilderTypeAndName(BNTypeBuilder* type, BNQualifiedName* name); diff --git a/type.cpp b/type.cpp index 06bac198..a53928f7 100644 --- a/type.cpp +++ b/type.cpp @@ -1076,6 +1076,20 @@ Ref Type::FunctionType(const Confidence>& returnValue, } +Ref Type::VarArgsType() +{ + Type* type = new Type(BNCreateVarArgsType()); + return type; +} + + +Ref Type::ValueType(const std::string& value) +{ + Type* type = new Type(BNCreateValueType(value.c_str())); + return type; +} + + BNIntegerDisplayType Type::GetIntegerTypeDisplayType() const { return BNGetIntegerTypeDisplayType(m_object); @@ -1974,6 +1988,20 @@ TypeBuilder TypeBuilder::FunctionType(const Confidence>& returnValue, } +TypeBuilder TypeBuilder::VarArgsType() +{ + TypeBuilder type(BNCreateVarArgsTypeBuilder()); + return type; +} + + +TypeBuilder TypeBuilder::ValueType(const std::string& value) +{ + TypeBuilder type(BNCreateValueTypeBuilder(value.c_str())); + return type; +} + + TypeBuilder& TypeBuilder::SetFunctionCanReturn(const Confidence& canReturn) { BNBoolWithConfidence bc; -- cgit v1.3.1