diff options
| author | Glenn Smith <glenn@vector35.com> | 2024-09-26 00:32:43 -0400 |
|---|---|---|
| committer | Glenn Smith <glenn@vector35.com> | 2024-10-14 16:58:54 -0400 |
| commit | 0076048355861138242269604010707434705113 (patch) | |
| tree | b85e0c80fab867dcba39340cfaf43e76e3a23930 | |
| parent | 7949573575297807243040469279622396817803 (diff) | |
Add VarArgsType and ValueType constructors
| -rw-r--r-- | binaryninjaapi.h | 4 | ||||
| -rw-r--r-- | binaryninjacore.h | 4 | ||||
| -rw-r--r-- | type.cpp | 28 |
3 files changed, 36 insertions, 0 deletions
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<std::vector<uint32_t>>& returnRegs = Confidence<std::vector<uint32_t>>(std::vector<uint32_t>(), 0), BNNameType ft = NoNameType, const Confidence<bool>& pure = Confidence<bool>(false, 0)); + static Ref<Type> VarArgsType(); + static Ref<Type> 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<std::vector<uint32_t>>& returnRegs = Confidence<std::vector<uint32_t>>(std::vector<uint32_t>(), 0), BNNameType ft = NoNameType, const Confidence<bool>& pure = Confidence<bool>(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); @@ -1076,6 +1076,20 @@ Ref<Type> Type::FunctionType(const Confidence<Ref<Type>>& returnValue, } +Ref<Type> Type::VarArgsType() +{ + Type* type = new Type(BNCreateVarArgsType()); + return type; +} + + +Ref<Type> 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<Ref<Type>>& 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<bool>& canReturn) { BNBoolWithConfidence bc; |
