summaryrefslogtreecommitdiff
path: root/rust/src/binary_view.rs
diff options
context:
space:
mode:
authorRusty Wagner <rusty.wagner@gmail.com>2025-12-23 13:12:02 -0700
committerRusty Wagner <rusty.wagner@gmail.com>2026-05-22 16:30:56 -0400
commit8d621c51b2797fda7b1dc22243dde611cfc04f68 (patch)
treeba5e6a90e644d21d13e75dabcbd0cc747444443a /rust/src/binary_view.rs
parent08e34ac325743085911f96b62c81d9a1f2127806 (diff)
Refactor calling conventions to support correct representation of structures
Diffstat (limited to 'rust/src/binary_view.rs')
-rw-r--r--rust/src/binary_view.rs35
1 files changed, 33 insertions, 2 deletions
diff --git a/rust/src/binary_view.rs b/rust/src/binary_view.rs
index 8d49e55e..c455635a 100644
--- a/rust/src/binary_view.rs
+++ b/rust/src/binary_view.rs
@@ -51,8 +51,9 @@ use crate::string::*;
use crate::symbol::{Symbol, SymbolType};
use crate::tags::{Tag, TagReference, TagType};
use crate::types::{
- NamedTypeReference, QualifiedName, QualifiedNameAndType, QualifiedNameTypeAndId, Type,
- TypeArchive, TypeArchiveId, TypeContainer, TypeLibrary,
+ FunctionParameter, NamedTypeReference, QualifiedName, QualifiedNameAndType,
+ QualifiedNameTypeAndId, ReturnValue, Type, TypeArchive, TypeArchiveId, TypeContainer,
+ TypeLibrary,
};
use crate::variable::DataVariable;
use crate::workflow::Workflow;
@@ -2964,6 +2965,36 @@ impl BinaryView {
let path_str = unsafe { BnString::into_string(result) };
Some(PathBuf::from(path_str))
}
+
+ pub fn deref_return_value_named_type_references(
+ &self,
+ return_value: &ReturnValue,
+ ) -> ReturnValue {
+ ReturnValue {
+ ty: Conf::new(
+ return_value.ty.contents.deref_named_type_reference(self),
+ return_value.ty.confidence,
+ ),
+ location: return_value.location.clone(),
+ }
+ }
+
+ pub fn deref_parameter_named_type_references(
+ &self,
+ params: &[FunctionParameter],
+ ) -> Vec<FunctionParameter> {
+ params
+ .iter()
+ .map(|param| FunctionParameter {
+ ty: Conf::new(
+ param.ty.contents.deref_named_type_reference(self),
+ param.ty.confidence,
+ ),
+ name: param.name.clone(),
+ location: param.location.clone(),
+ })
+ .collect()
+ }
}
impl BinaryViewBase for BinaryView {