Rename OperandBundleOwned to OperandBundleBox
As with `DIBuilderBox`, the "Box" suffix does a better job of communicating that this is an owning pointer to some borrowable resource. This also renames the `raw` method to `as_ref`, which is what it would have been named originally if the `Deref` problem had been known at the time.
This commit is contained in:
@@ -363,12 +363,13 @@ pub(crate) fn last_error() -> Option<String> {
|
||||
}
|
||||
}
|
||||
|
||||
/// Owns an [`OperandBundle`], and will dispose of it when dropped.
|
||||
pub(crate) struct OperandBundleOwned<'a> {
|
||||
/// Owning pointer to an [`OperandBundle`] that will dispose of the bundle
|
||||
/// when dropped.
|
||||
pub(crate) struct OperandBundleBox<'a> {
|
||||
raw: ptr::NonNull<OperandBundle<'a>>,
|
||||
}
|
||||
|
||||
impl<'a> OperandBundleOwned<'a> {
|
||||
impl<'a> OperandBundleBox<'a> {
|
||||
pub(crate) fn new(name: &str, vals: &[&'a Value]) -> Self {
|
||||
let raw = unsafe {
|
||||
LLVMCreateOperandBundle(
|
||||
@@ -378,21 +379,21 @@ impl<'a> OperandBundleOwned<'a> {
|
||||
vals.len() as c_uint,
|
||||
)
|
||||
};
|
||||
OperandBundleOwned { raw: ptr::NonNull::new(raw).unwrap() }
|
||||
Self { raw: ptr::NonNull::new(raw).unwrap() }
|
||||
}
|
||||
|
||||
/// Returns inner `OperandBundle` type.
|
||||
/// Dereferences to the underlying `&OperandBundle`.
|
||||
///
|
||||
/// This could be a `Deref` implementation, but `OperandBundle` contains an extern type and
|
||||
/// `Deref::Target: ?Sized`.
|
||||
pub(crate) fn raw(&self) -> &OperandBundle<'a> {
|
||||
/// This can't be a `Deref` implementation because `OperandBundle` transitively
|
||||
/// contains an extern type, which is incompatible with `Deref::Target: ?Sized`.
|
||||
pub(crate) fn as_ref(&self) -> &OperandBundle<'a> {
|
||||
// SAFETY: The returned reference is opaque and can only used for FFI.
|
||||
// It is valid for as long as `&self` is.
|
||||
unsafe { self.raw.as_ref() }
|
||||
}
|
||||
}
|
||||
|
||||
impl Drop for OperandBundleOwned<'_> {
|
||||
impl Drop for OperandBundleBox<'_> {
|
||||
fn drop(&mut self) {
|
||||
unsafe {
|
||||
LLVMDisposeOperandBundle(self.raw);
|
||||
|
||||
Reference in New Issue
Block a user