Rename GeckoArc macro so it sounds like it's useful for already-threadsafely-refcounted objects.

This commit is contained in:
Cameron McCormack 2016-08-12 17:00:36 +08:00
parent 614e9ca840
commit bd23790c09

View file

@ -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);