// Oak Video Editor - Non-Linear Video Editor // Copyright (C) 2026 Oak Team // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program. If not, see . //! The `CHandle` ABI value-handle type (single-lib unification, see //! `docs/zh/plans/riir/single-lib.md`): one canonical //! `{ctx, addref, release, abi_version}` type in `oakcore-rs`, re-exported //! so the crate's signatures stay source-compatible with the shared type. //! //! M14 R5: oakstorage never creates its own boxes — every project handle //! it produces goes through `oak_node::handle` (see [`crate::nodeutil`]), //! so the per-DLL RefBox machinery is not needed here and was removed; //! only the shared `CHandle` type remains, for the facade-facing surface //! (project handles in [`crate::backend::LoadResult`] and the //! `StorageBackend` trait, the write-through binding entries). pub use oak_core::handle::CHandle;