mirror of
https://github.com/servo/servo.git
synced 2025-08-03 12:40:06 +01:00
Rename GeckoArc macro so it sounds like it's useful for already-threadsafely-refcounted objects.
This commit is contained in:
parent
614e9ca840
commit
bd23790c09
1 changed files with 14 additions and 11 deletions
|
@ -7,17 +7,20 @@ use heapsize::HeapSizeOf;
|
|||
use std::fmt::{self, Debug};
|
||||
|
||||
// Defines an Arc-like type that manages a refcounted Gecko object stored
|
||||
// in a ThreadSafeFooHolder smart pointer. Used in tandem with the
|
||||
// NS_DECL_HOLDER_FFI_REFCOUNTING-defined types and functions in Gecko.
|
||||
macro_rules! define_holder_arc {
|
||||
($arc_type:ident, $name:ident, $holder_type:ident, $addref: ident, $release: ident) => (
|
||||
// in a ThreadSafeFooHolder smart pointer (for those Gecko classes that
|
||||
// do not have thread-safe refcounting support) or as raw pointers (for
|
||||
// those that do have thread-safe refcounting support). Used in tandem
|
||||
// with the NS_DECL_(HOLDER|THREADSAFE)_FFI_REFCOUNTING-defined types and
|
||||
// functions in Gecko.
|
||||
macro_rules! define_arc {
|
||||
($arc_type:ident, $name:ident, $gecko_type:ident, $addref: ident, $release: ident) => (
|
||||
#[derive(PartialEq)]
|
||||
pub struct $arc_type {
|
||||
ptr: *mut $holder_type,
|
||||
ptr: *mut $gecko_type,
|
||||
}
|
||||
|
||||
impl $arc_type {
|
||||
pub fn new(data: *mut $holder_type) -> $arc_type {
|
||||
pub fn new(data: *mut $gecko_type) -> $arc_type {
|
||||
debug_assert!(!data.is_null());
|
||||
unsafe { $addref(data); }
|
||||
$arc_type {
|
||||
|
@ -25,7 +28,7 @@ macro_rules! define_holder_arc {
|
|||
}
|
||||
}
|
||||
|
||||
pub fn as_raw(&self) -> *mut $holder_type { self.ptr }
|
||||
pub fn as_raw(&self) -> *mut $gecko_type { self.ptr }
|
||||
}
|
||||
|
||||
unsafe impl Send for $arc_type {}
|
||||
|
@ -55,7 +58,7 @@ macro_rules! define_holder_arc {
|
|||
)
|
||||
}
|
||||
|
||||
define_holder_arc!(GeckoArcPrincipal, Principal, ThreadSafePrincipalHolder,
|
||||
define_arc!(GeckoArcPrincipal, Principal, ThreadSafePrincipalHolder,
|
||||
Gecko_AddRefPrincipalArbitraryThread, Gecko_ReleasePrincipalArbitraryThread);
|
||||
define_holder_arc!(GeckoArcURI, URI, ThreadSafeURIHolder,
|
||||
define_arc!(GeckoArcURI, URI, ThreadSafeURIHolder,
|
||||
Gecko_AddRefURIArbitraryThread, Gecko_ReleaseURIArbitraryThread);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue