lib/beaver/native/owner.ex
defmodule Beaver.Native.PtrOwner do
alias Beaver.MLIR.CAPI
@moduledoc """
owning a pointer resource and delete it when BEAM collect the resource term
"""
defstruct ref: nil, kind: Beaver.Native.PtrOwner
def(new(%Beaver.Native.OpaquePtr{ref: ptr_ref})) do
owner_ref =
CAPI.beaver_raw_own_opaque_ptr(ptr_ref)
|> Beaver.Native.check!()
%__MODULE__{ref: owner_ref}
end
end