From ea7a22b16fc56c23af397dd690c6c839dfb3a8f1 Mon Sep 17 00:00:00 2001 From: Rubens Brandao Date: Fri, 3 May 2024 13:28:53 -0300 Subject: hide array implementation details --- rust/src/types.rs | 48 ++++++++++++------------------------------------ 1 file changed, 12 insertions(+), 36 deletions(-) (limited to 'rust/src/types.rs') diff --git a/rust/src/types.rs b/rust/src/types.rs index 2b300444..750ca46c 100644 --- a/rust/src/types.rs +++ b/rust/src/types.rs @@ -1439,17 +1439,13 @@ impl NamedTypedVariable { impl CoreArrayProvider for NamedTypedVariable { type Raw = BNVariableNameAndType; type Context = (); + type Wrapped<'a> = ManuallyDrop; } -unsafe impl CoreOwnedArrayProvider for NamedTypedVariable { +unsafe impl CoreArrayProviderInner for NamedTypedVariable { unsafe fn free(raw: *mut Self::Raw, count: usize, _context: &Self::Context) { BNFreeVariableNameAndTypeList(raw, count) } -} - -unsafe impl CoreArrayWrapper for NamedTypedVariable { - type Wrapped<'a> = ManuallyDrop; - unsafe fn wrap_raw<'a>(raw: &'a Self::Raw, _context: &'a Self::Context) -> Self::Wrapped<'a> { ManuallyDrop::new(NamedTypedVariable { var: raw.var, @@ -2406,16 +2402,12 @@ impl Drop for QualifiedName { impl CoreArrayProvider for QualifiedName { type Raw = BNQualifiedName; type Context = (); + type Wrapped<'a> = &'a QualifiedName; } -unsafe impl CoreOwnedArrayProvider for QualifiedName { +unsafe impl CoreArrayProviderInner for QualifiedName { unsafe fn free(raw: *mut Self::Raw, count: usize, _context: &Self::Context) { BNFreeTypeNameList(raw, count); } -} - -unsafe impl CoreArrayWrapper for QualifiedName { - type Wrapped<'a> = &'a QualifiedName; - unsafe fn wrap_raw<'a>(raw: &'a Self::Raw, _context: &'a Self::Context) -> Self::Wrapped<'a> { mem::transmute(raw) } @@ -2448,16 +2440,12 @@ impl Drop for QualifiedNameAndType { impl CoreArrayProvider for QualifiedNameAndType { type Raw = BNQualifiedNameAndType; type Context = (); + type Wrapped<'a> = &'a QualifiedNameAndType; } -unsafe impl CoreOwnedArrayProvider for QualifiedNameAndType { +unsafe impl CoreArrayProviderInner for QualifiedNameAndType { unsafe fn free(raw: *mut Self::Raw, count: usize, _context: &Self::Context) { BNFreeTypeAndNameList(raw, count); } -} - -unsafe impl CoreArrayWrapper for QualifiedNameAndType { - type Wrapped<'a> = &'a QualifiedNameAndType; - unsafe fn wrap_raw<'a>(raw: &'a Self::Raw, _context: &'a Self::Context) -> Self::Wrapped<'a> { mem::transmute(raw) } @@ -2494,16 +2482,12 @@ impl Drop for QualifiedNameTypeAndId { impl CoreArrayProvider for QualifiedNameTypeAndId { type Raw = BNQualifiedNameTypeAndId; type Context = (); + type Wrapped<'a> = &'a QualifiedNameTypeAndId; } -unsafe impl CoreOwnedArrayProvider for QualifiedNameTypeAndId { +unsafe impl CoreArrayProviderInner for QualifiedNameTypeAndId { unsafe fn free(raw: *mut Self::Raw, count: usize, _context: &Self::Context) { BNFreeTypeIdList(raw, count); } -} - -unsafe impl CoreArrayWrapper for QualifiedNameTypeAndId { - type Wrapped<'a> = &'a QualifiedNameTypeAndId; - unsafe fn wrap_raw<'a>(raw: &'a Self::Raw, _context: &'a Self::Context) -> Self::Wrapped<'a> { mem::transmute(raw) } @@ -2573,17 +2557,13 @@ unsafe impl RefCountable for NameAndType { impl CoreArrayProvider for NameAndType { type Raw = BNNameAndType; type Context = (); + type Wrapped<'a> = Guard<'a, NameAndType>; } -unsafe impl CoreOwnedArrayProvider for NameAndType { +unsafe impl CoreArrayProviderInner for NameAndType { unsafe fn free(raw: *mut Self::Raw, count: usize, _context: &Self::Context) { BNFreeNameAndTypeList(raw, count); } -} - -unsafe impl CoreArrayWrapper for NameAndType { - type Wrapped<'a> = Guard<'a, NameAndType>; - unsafe fn wrap_raw<'a>(raw: &'a Self::Raw, _context: &'a Self::Context) -> Self::Wrapped<'a> { unsafe { Guard::new(NameAndType::from_raw(raw), raw) } } @@ -2653,16 +2633,12 @@ unsafe impl RefCountable for DataVariable { impl CoreArrayProvider for DataVariable { type Raw = BNDataVariable; type Context = (); + type Wrapped<'a> = &'a DataVariable; } -unsafe impl CoreOwnedArrayProvider for DataVariable { +unsafe impl CoreArrayProviderInner for DataVariable { unsafe fn free(raw: *mut Self::Raw, count: usize, _context: &Self::Context) { BNFreeDataVariables(raw, count); } -} - -unsafe impl CoreArrayWrapper for DataVariable { - type Wrapped<'a> = &'a DataVariable; - unsafe fn wrap_raw<'a>(raw: &'a Self::Raw, _context: &'a Self::Context) -> Self::Wrapped<'a> { mem::transmute(raw) } -- cgit v1.3.1