summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGlenn Smith <glenn@vector35.com>2024-09-26 00:32:43 -0400
committerGlenn Smith <glenn@vector35.com>2024-10-14 16:58:54 -0400
commit0076048355861138242269604010707434705113 (patch)
treeb85e0c80fab867dcba39340cfaf43e76e3a23930
parent7949573575297807243040469279622396817803 (diff)
Add VarArgsType and ValueType constructors
-rw-r--r--binaryninjaapi.h4
-rw-r--r--binaryninjacore.h4
-rw-r--r--type.cpp28
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);
diff --git a/type.cpp b/type.cpp
index 06bac198..a53928f7 100644
--- a/type.cpp
+++ b/type.cpp
@@ -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;