diff options
| author | Rubens Brandao <git@rubens.io> | 2024-05-03 13:28:53 -0300 |
|---|---|---|
| committer | Kyle Martin <krm504@nyu.edu> | 2024-05-10 12:00:27 -0400 |
| commit | ea7a22b16fc56c23af397dd690c6c839dfb3a8f1 (patch) | |
| tree | 45f3ba19172017694388ab6f7266e23df76bb670 /rust/src/types.rs | |
| parent | 015314d34d073a8ebbd958edf8150a81381f12c2 (diff) | |
hide array implementation details
Diffstat (limited to 'rust/src/types.rs')
| -rw-r--r-- | rust/src/types.rs | 48 |
1 files changed, 12 insertions, 36 deletions
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<NamedTypedVariable>; } -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<NamedTypedVariable>; - 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) } |
