Copy as Markdown
Other Tools
//
// DO NOT EDIT. THIS FILE IS GENERATED FROM $SRCDIR/tools/profiler/gecko/nsIProfiler.idl
//
/// `interface nsIProfilerStartParams : nsISupports`
///
/// ```text
/// /**
/// * Start-up parameters for subprocesses are passed through nsIObserverService,
/// * which, unfortunately, means we need to implement nsISupports in order to
/// * go through it.
/// */
/// ```
///
// The actual type definition for the interface. This struct has methods
// declared on it which will call through its vtable. You never want to pass
// this type around by value, always pass it behind a reference.
#[repr(C)]
pub struct nsIProfilerStartParams {
vtable: &'static nsIProfilerStartParamsVTable,
/// This field is a phantomdata to ensure that the VTable type and any
/// struct containing it is not safe to send across threads by default, as
/// XPCOM is generally not threadsafe.
///
/// If this type is marked as [rust_sync], there will be explicit `Send` and
/// `Sync` implementations on this type, which will override the inherited
/// negative impls from `Rc`.
__nosync: ::std::marker::PhantomData<::std::rc::Rc<u8>>,
// Make the rust compiler aware that there might be interior mutability
// in what actually implements the interface. This works around UB
// introduced by https://github.com/llvm/llvm-project/commit/01859da84bad95fd51d6a03b08b60c660e642a4f
// that a rust lint would make blatantly obvious, but doesn't exist.
// This prevents optimizations, but those optimizations weren't available
// before rustc switched to LLVM 16, and they now cause problems because
// of the UB.
// Until there's a lint available to find all our UB, it's simpler to
// avoid the UB in the first place, at the cost of preventing optimizations
// in places that don't cause UB. But again, those optimizations weren't
// available before.
__maybe_interior_mutability: ::std::cell::UnsafeCell<[u8; 0]>,
}
// Implementing XpCom for an interface exposes its IID, which allows for easy
// use of the `.query_interface<T>` helper method. This also defines that
// method for nsIProfilerStartParams.
unsafe impl XpCom for nsIProfilerStartParams {
const IID: nsIID = nsID(0x0a175ba7, 0x8fcf, 0x4ce9,
[0x9c, 0x4b, 0xcc, 0xc6, 0x27, 0x2f, 0x44, 0x25]);
}
// We need to implement the RefCounted trait so we can be used with `RefPtr`.
// This trait teaches `RefPtr` how to manage our memory.
unsafe impl RefCounted for nsIProfilerStartParams {
#[inline]
unsafe fn addref(&self) {
self.AddRef();
}
#[inline]
unsafe fn release(&self) {
self.Release();
}
}
// This trait is implemented on all types which can be coerced to from nsIProfilerStartParams.
// It is used in the implementation of `fn coerce<T>`. We hide it from the
// documentation, because it clutters it up a lot.
#[doc(hidden)]
pub trait nsIProfilerStartParamsCoerce {
/// Cheaply cast a value of this type from a `nsIProfilerStartParams`.
fn coerce_from(v: &nsIProfilerStartParams) -> &Self;
}
// The trivial implementation: We can obviously coerce ourselves to ourselves.
impl nsIProfilerStartParamsCoerce for nsIProfilerStartParams {
#[inline]
fn coerce_from(v: &nsIProfilerStartParams) -> &Self {
v
}
}
impl nsIProfilerStartParams {
/// Cast this `nsIProfilerStartParams` to one of its base interfaces.
#[inline]
pub fn coerce<T: nsIProfilerStartParamsCoerce>(&self) -> &T {
T::coerce_from(self)
}
}
// Every interface struct type implements `Deref` to its base interface. This
// causes methods on the base interfaces to be directly avaliable on the
// object. For example, you can call `.AddRef` or `.QueryInterface` directly
// on any interface which inherits from `nsISupports`.
impl ::std::ops::Deref for nsIProfilerStartParams {
type Target = nsISupports;
#[inline]
fn deref(&self) -> &nsISupports {
unsafe {
::std::mem::transmute(self)
}
}
}
// Ensure we can use .coerce() to cast to our base types as well. Any type which
// our base interface can coerce from should be coercable from us as well.
impl<T: nsISupportsCoerce> nsIProfilerStartParamsCoerce for T {
#[inline]
fn coerce_from(v: &nsIProfilerStartParams) -> &Self {
T::coerce_from(v)
}
}
// This struct represents the interface's VTable. A pointer to a statically
// allocated version of this struct is at the beginning of every nsIProfilerStartParams
// object. It contains one pointer field for each method in the interface. In
// the case where we can't generate a binding for a method, we include a void
// pointer.
#[doc(hidden)]
#[repr(C)]
pub struct nsIProfilerStartParamsVTable {
/// We need to include the members from the base interface's vtable at the start
/// of the VTable definition.
pub __base: nsISupportsVTable,
/* readonly attribute uint32_t entries; */
pub GetEntries: unsafe extern "system" fn (this: *const nsIProfilerStartParams, aEntries: *mut u32) -> ::nserror::nsresult,
/* readonly attribute double duration; */
pub GetDuration: unsafe extern "system" fn (this: *const nsIProfilerStartParams, aDuration: *mut libc::c_double) -> ::nserror::nsresult,
/* readonly attribute double interval; */
pub GetInterval: unsafe extern "system" fn (this: *const nsIProfilerStartParams, aInterval: *mut libc::c_double) -> ::nserror::nsresult,
/* readonly attribute uint32_t features; */
pub GetFeatures: unsafe extern "system" fn (this: *const nsIProfilerStartParams, aFeatures: *mut u32) -> ::nserror::nsresult,
/* readonly attribute uint64_t activeTabID; */
pub GetActiveTabID: unsafe extern "system" fn (this: *const nsIProfilerStartParams, aActiveTabID: *mut u64) -> ::nserror::nsresult,
/* [noscript,nostdcall,notxpcom] StringArrayRef getFilters (); */
/// Unable to generate binding because `nostdcall is unsupported`
pub GetFilters: *const ::libc::c_void,
}
// The implementations of the function wrappers which are exposed to rust code.
// Call these methods rather than manually calling through the VTable struct.
impl nsIProfilerStartParams {
/// `readonly attribute uint32_t entries;`
#[inline]
pub unsafe fn GetEntries(&self, aEntries: *mut u32) -> ::nserror::nsresult {
((*self.vtable).GetEntries)(self, aEntries)
}
/// `readonly attribute double duration;`
#[inline]
pub unsafe fn GetDuration(&self, aDuration: *mut libc::c_double) -> ::nserror::nsresult {
((*self.vtable).GetDuration)(self, aDuration)
}
/// `readonly attribute double interval;`
#[inline]
pub unsafe fn GetInterval(&self, aInterval: *mut libc::c_double) -> ::nserror::nsresult {
((*self.vtable).GetInterval)(self, aInterval)
}
/// `readonly attribute uint32_t features;`
#[inline]
pub unsafe fn GetFeatures(&self, aFeatures: *mut u32) -> ::nserror::nsresult {
((*self.vtable).GetFeatures)(self, aFeatures)
}
/// `readonly attribute uint64_t activeTabID;`
#[inline]
pub unsafe fn GetActiveTabID(&self, aActiveTabID: *mut u64) -> ::nserror::nsresult {
((*self.vtable).GetActiveTabID)(self, aActiveTabID)
}
/// `[noscript,nostdcall,notxpcom] StringArrayRef getFilters ();`
const _GetFilters: () = ();
}
/// `interface nsIProfiler : nsISupports`
///
// The actual type definition for the interface. This struct has methods
// declared on it which will call through its vtable. You never want to pass
// this type around by value, always pass it behind a reference.
#[repr(C)]
pub struct nsIProfiler {
vtable: &'static nsIProfilerVTable,
/// This field is a phantomdata to ensure that the VTable type and any
/// struct containing it is not safe to send across threads by default, as
/// XPCOM is generally not threadsafe.
///
/// If this type is marked as [rust_sync], there will be explicit `Send` and
/// `Sync` implementations on this type, which will override the inherited
/// negative impls from `Rc`.
__nosync: ::std::marker::PhantomData<::std::rc::Rc<u8>>,
// Make the rust compiler aware that there might be interior mutability
// in what actually implements the interface. This works around UB
// introduced by https://github.com/llvm/llvm-project/commit/01859da84bad95fd51d6a03b08b60c660e642a4f
// that a rust lint would make blatantly obvious, but doesn't exist.
// This prevents optimizations, but those optimizations weren't available
// before rustc switched to LLVM 16, and they now cause problems because
// of the UB.
// Until there's a lint available to find all our UB, it's simpler to
// avoid the UB in the first place, at the cost of preventing optimizations
// in places that don't cause UB. But again, those optimizations weren't
// available before.
__maybe_interior_mutability: ::std::cell::UnsafeCell<[u8; 0]>,
}
// Implementing XpCom for an interface exposes its IID, which allows for easy
// use of the `.query_interface<T>` helper method. This also defines that
// method for nsIProfiler.
unsafe impl XpCom for nsIProfiler {
const IID: nsIID = nsID(0xead3f75c, 0x0e0e, 0x4fbb,
[0x90, 0x1c, 0x1e, 0x53, 0x92, 0xef, 0x5b, 0x2a]);
}
// We need to implement the RefCounted trait so we can be used with `RefPtr`.
// This trait teaches `RefPtr` how to manage our memory.
unsafe impl RefCounted for nsIProfiler {
#[inline]
unsafe fn addref(&self) {
self.AddRef();
}
#[inline]
unsafe fn release(&self) {
self.Release();
}
}
// This trait is implemented on all types which can be coerced to from nsIProfiler.
// It is used in the implementation of `fn coerce<T>`. We hide it from the
// documentation, because it clutters it up a lot.
#[doc(hidden)]
pub trait nsIProfilerCoerce {
/// Cheaply cast a value of this type from a `nsIProfiler`.
fn coerce_from(v: &nsIProfiler) -> &Self;
}
// The trivial implementation: We can obviously coerce ourselves to ourselves.
impl nsIProfilerCoerce for nsIProfiler {
#[inline]
fn coerce_from(v: &nsIProfiler) -> &Self {
v
}
}
impl nsIProfiler {
/// Cast this `nsIProfiler` to one of its base interfaces.
#[inline]
pub fn coerce<T: nsIProfilerCoerce>(&self) -> &T {
T::coerce_from(self)
}
}
// Every interface struct type implements `Deref` to its base interface. This
// causes methods on the base interfaces to be directly avaliable on the
// object. For example, you can call `.AddRef` or `.QueryInterface` directly
// on any interface which inherits from `nsISupports`.
impl ::std::ops::Deref for nsIProfiler {
type Target = nsISupports;
#[inline]
fn deref(&self) -> &nsISupports {
unsafe {
::std::mem::transmute(self)
}
}
}
// Ensure we can use .coerce() to cast to our base types as well. Any type which
// our base interface can coerce from should be coercable from us as well.
impl<T: nsISupportsCoerce> nsIProfilerCoerce for T {
#[inline]
fn coerce_from(v: &nsIProfiler) -> &Self {
T::coerce_from(v)
}
}
// This struct represents the interface's VTable. A pointer to a statically
// allocated version of this struct is at the beginning of every nsIProfiler
// object. It contains one pointer field for each method in the interface. In
// the case where we can't generate a binding for a method, we include a void
// pointer.
#[doc(hidden)]
#[repr(C)]
pub struct nsIProfilerVTable {
/// We need to include the members from the base interface's vtable at the start
/// of the VTable definition.
pub __base: nsISupportsVTable,
/* [implicit_jscontext] Promise StartProfiler (in uint32_t aEntries, in double aInterval, in Array<AUTF8String> aFeatures, [optional] in Array<AUTF8String> aFilters, [optional] in uint64_t aActiveTabID, [optional] in double aDuration); */
/// Unable to generate binding because `jscontext is unsupported`
pub StartProfiler: *const ::libc::c_void,
/* [implicit_jscontext] Promise StopProfiler (); */
/// Unable to generate binding because `jscontext is unsupported`
pub StopProfiler: *const ::libc::c_void,
/* boolean IsPaused (); */
pub IsPaused: unsafe extern "system" fn (this: *const nsIProfiler, _retval: *mut bool) -> ::nserror::nsresult,
/* [implicit_jscontext] Promise Pause (); */
/// Unable to generate binding because `jscontext is unsupported`
pub Pause: *const ::libc::c_void,
/* [implicit_jscontext] Promise Resume (); */
/// Unable to generate binding because `jscontext is unsupported`
pub Resume: *const ::libc::c_void,
/* boolean IsSamplingPaused (); */
pub IsSamplingPaused: unsafe extern "system" fn (this: *const nsIProfiler, _retval: *mut bool) -> ::nserror::nsresult,
/* [implicit_jscontext] Promise PauseSampling (); */
/// Unable to generate binding because `jscontext is unsupported`
pub PauseSampling: *const ::libc::c_void,
/* [implicit_jscontext] Promise ResumeSampling (); */
/// Unable to generate binding because `jscontext is unsupported`
pub ResumeSampling: *const ::libc::c_void,
/* [implicit_jscontext] Promise waitOnePeriodicSampling (); */
/// Unable to generate binding because `jscontext is unsupported`
pub WaitOnePeriodicSampling: *const ::libc::c_void,
/* string GetProfile ([optional] in double aSinceTime); */
pub GetProfile: unsafe extern "system" fn (this: *const nsIProfiler, aSinceTime: libc::c_double, _retval: *mut *const libc::c_char) -> ::nserror::nsresult,
/* [implicit_jscontext] jsval getProfileData ([optional] in double aSinceTime); */
/// Unable to generate binding because `jscontext is unsupported`
pub GetProfileData: *const ::libc::c_void,
/* [implicit_jscontext] Promise getProfileDataAsync ([optional] in double aSinceTime); */
/// Unable to generate binding because `jscontext is unsupported`
pub GetProfileDataAsync: *const ::libc::c_void,
/* [implicit_jscontext] Promise getProfileDataAsArrayBuffer ([optional] in double aSinceTime); */
/// Unable to generate binding because `jscontext is unsupported`
pub GetProfileDataAsArrayBuffer: *const ::libc::c_void,
/* [implicit_jscontext] Promise getProfileDataAsGzippedArrayBuffer ([optional] in double aSinceTime); */
/// Unable to generate binding because `jscontext is unsupported`
pub GetProfileDataAsGzippedArrayBuffer: *const ::libc::c_void,
/* [implicit_jscontext] Promise dumpProfileToFileAsync (in ACString aFilename, [optional] in double aSinceTime); */
/// Unable to generate binding because `jscontext is unsupported`
pub DumpProfileToFileAsync: *const ::libc::c_void,
/* [nostdcall,notxpcom] ProfileFileDumpMozPromise dumpProfileToFileAsyncNoJs (in ACString aFilename, in double aSinceTime); */
/// Unable to generate binding because `nostdcall is unsupported`
pub DumpProfileToFileAsyncNoJs: *const ::libc::c_void,
/* void dumpProfileToFile (in string aFilename); */
pub DumpProfileToFile: unsafe extern "system" fn (this: *const nsIProfiler, aFilename: *const libc::c_char) -> ::nserror::nsresult,
/* boolean IsActive (); */
pub IsActive: unsafe extern "system" fn (this: *const nsIProfiler, _retval: *mut bool) -> ::nserror::nsresult,
/* void ClearAllPages (); */
pub ClearAllPages: unsafe extern "system" fn (this: *const nsIProfiler) -> ::nserror::nsresult,
/* Array<AUTF8String> GetFeatures (); */
pub GetFeatures: unsafe extern "system" fn (this: *const nsIProfiler, _retval: *mut thin_vec::ThinVec<::nsstring::nsCString>) -> ::nserror::nsresult,
/* [implicit_jscontext] readonly attribute jsval activeConfiguration; */
/// Unable to generate binding because `special type jsval unsupported`
pub GetActiveConfiguration: *const ::libc::c_void,
/* Array<AUTF8String> GetAllFeatures (); */
pub GetAllFeatures: unsafe extern "system" fn (this: *const nsIProfiler, _retval: *mut thin_vec::ThinVec<::nsstring::nsCString>) -> ::nserror::nsresult,
/* void GetBufferInfo (out uint32_t aCurrentPosition, out uint32_t aTotalSize, out uint32_t aGeneration); */
pub GetBufferInfo: unsafe extern "system" fn (this: *const nsIProfiler, aCurrentPosition: *mut u32, aTotalSize: *mut u32, aGeneration: *mut u32) -> ::nserror::nsresult,
/* double getElapsedTime (); */
pub GetElapsedTime: unsafe extern "system" fn (this: *const nsIProfiler, _retval: *mut libc::c_double) -> ::nserror::nsresult,
/* [implicit_jscontext] readonly attribute jsval sharedLibraries; */
/// Unable to generate binding because `special type jsval unsupported`
pub GetSharedLibraries: *const ::libc::c_void,
/* [implicit_jscontext] Promise getSymbolTable (in ACString aDebugPath, in ACString aBreakpadID); */
/// Unable to generate binding because `jscontext is unsupported`
pub GetSymbolTable: *const ::libc::c_void,
/* [nostdcall,notxpcom] ProfileDataBufferMozPromise getProfileDataAsGzippedArrayBufferAndroid (in double aSinceTime); */
/// Unable to generate binding because `nostdcall is unsupported`
pub GetProfileDataAsGzippedArrayBufferAndroid: *const ::libc::c_void,
}
// The implementations of the function wrappers which are exposed to rust code.
// Call these methods rather than manually calling through the VTable struct.
impl nsIProfiler {
/// `[implicit_jscontext] Promise StartProfiler (in uint32_t aEntries, in double aInterval, in Array<AUTF8String> aFeatures, [optional] in Array<AUTF8String> aFilters, [optional] in uint64_t aActiveTabID, [optional] in double aDuration);`
const _StartProfiler: () = ();
/// `[implicit_jscontext] Promise StopProfiler ();`
const _StopProfiler: () = ();
/// `boolean IsPaused ();`
#[inline]
pub unsafe fn IsPaused(&self, _retval: *mut bool) -> ::nserror::nsresult {
((*self.vtable).IsPaused)(self, _retval)
}
/// `[implicit_jscontext] Promise Pause ();`
const _Pause: () = ();
/// `[implicit_jscontext] Promise Resume ();`
const _Resume: () = ();
/// `boolean IsSamplingPaused ();`
#[inline]
pub unsafe fn IsSamplingPaused(&self, _retval: *mut bool) -> ::nserror::nsresult {
((*self.vtable).IsSamplingPaused)(self, _retval)
}
/// `[implicit_jscontext] Promise PauseSampling ();`
const _PauseSampling: () = ();
/// `[implicit_jscontext] Promise ResumeSampling ();`
const _ResumeSampling: () = ();
/// `[implicit_jscontext] Promise waitOnePeriodicSampling ();`
const _WaitOnePeriodicSampling: () = ();
/// `string GetProfile ([optional] in double aSinceTime);`
#[inline]
pub unsafe fn GetProfile(&self, aSinceTime: libc::c_double, _retval: *mut *const libc::c_char) -> ::nserror::nsresult {
((*self.vtable).GetProfile)(self, aSinceTime, _retval)
}
/// `[implicit_jscontext] jsval getProfileData ([optional] in double aSinceTime);`
const _GetProfileData: () = ();
/// `[implicit_jscontext] Promise getProfileDataAsync ([optional] in double aSinceTime);`
const _GetProfileDataAsync: () = ();
/// `[implicit_jscontext] Promise getProfileDataAsArrayBuffer ([optional] in double aSinceTime);`
const _GetProfileDataAsArrayBuffer: () = ();
/// `[implicit_jscontext] Promise getProfileDataAsGzippedArrayBuffer ([optional] in double aSinceTime);`
const _GetProfileDataAsGzippedArrayBuffer: () = ();
/// ```text
/// /**
/// * Asynchronously dump the profile collected so far to a file.
/// * Returns a promise that resolves once the file has been written, with data
/// * from all responsive Firefox processes. Note: This blocks the parent process
/// * while collecting its own data, then unblocks while child processes data is
/// * being collected.
/// * `aFilename` may be a full path, or a path relative to where Firefox was
/// * launched. The target directory must already exist.
/// */
/// ```
///
/// `[implicit_jscontext] Promise dumpProfileToFileAsync (in ACString aFilename, [optional] in double aSinceTime);`
const _DumpProfileToFileAsync: () = ();
/// ```text
/// /**
/// * Asynchronously dump the profile collected so far to a file. This is
/// * essentially the same as `dumpProfileToFileAsync`, but rather than returning
/// * a javascript Promise, it instead returns a MozPromise, meaning that we do
/// * not require a js context.
/// */
/// ```
///
/// `[nostdcall,notxpcom] ProfileFileDumpMozPromise dumpProfileToFileAsyncNoJs (in ACString aFilename, in double aSinceTime);`
const _DumpProfileToFileAsyncNoJs: () = ();
/// ```text
/// /**
/// * Synchronously dump the profile collected so far in this process to a file.
/// * This profile will only contain data from the parent process, and from child
/// * processes that have ended during the session; other currently-live
/// * processes are ignored.
/// * `aFilename` may be a full path, or a path relative to where Firefox was
/// * launched. The target directory must already exist.
/// */
/// ```
///
/// `void dumpProfileToFile (in string aFilename);`
#[inline]
pub unsafe fn DumpProfileToFile(&self, aFilename: *const libc::c_char) -> ::nserror::nsresult {
((*self.vtable).DumpProfileToFile)(self, aFilename)
}
/// `boolean IsActive ();`
#[inline]
pub unsafe fn IsActive(&self, _retval: *mut bool) -> ::nserror::nsresult {
((*self.vtable).IsActive)(self, _retval)
}
/// ```text
/// /**
/// * Clear all registered and unregistered page information in prifiler.
/// */
/// ```
///
/// `void ClearAllPages ();`
#[inline]
pub unsafe fn ClearAllPages(&self, ) -> ::nserror::nsresult {
((*self.vtable).ClearAllPages)(self, )
}
/// ```text
/// /**
/// * Returns an array of the features that are supported in this build.
/// * Features may vary depending on platform and build flags.
/// */
/// ```
///
/// `Array<AUTF8String> GetFeatures ();`
#[inline]
pub unsafe fn GetFeatures(&self, _retval: *mut thin_vec::ThinVec<::nsstring::nsCString>) -> ::nserror::nsresult {
((*self.vtable).GetFeatures)(self, _retval)
}
/// ```text
/// /**
/// * Returns a JavaScript object that contains a description of the currently configured
/// * state of the profiler when the profiler is active. This can be useful to assert
/// * the UI of the profiler's recording panel in tests. It returns null when the profiler
/// * is not active.
/// */
/// ```
///
/// `[implicit_jscontext] readonly attribute jsval activeConfiguration;`
const _GetActiveConfiguration: () = ();
/// ```text
/// /**
/// * Returns an array of all features that are supported by the profiler.
/// * The array may contain features that are not supported in this build.
/// */
/// ```
///
/// `Array<AUTF8String> GetAllFeatures ();`
#[inline]
pub unsafe fn GetAllFeatures(&self, _retval: *mut thin_vec::ThinVec<::nsstring::nsCString>) -> ::nserror::nsresult {
((*self.vtable).GetAllFeatures)(self, _retval)
}
/// `void GetBufferInfo (out uint32_t aCurrentPosition, out uint32_t aTotalSize, out uint32_t aGeneration);`
#[inline]
pub unsafe fn GetBufferInfo(&self, aCurrentPosition: *mut u32, aTotalSize: *mut u32, aGeneration: *mut u32) -> ::nserror::nsresult {
((*self.vtable).GetBufferInfo)(self, aCurrentPosition, aTotalSize, aGeneration)
}
/// ```text
/// /**
/// * Returns the elapsed time, in milliseconds, since the profiler's epoch.
/// * The epoch is guaranteed to be constant for the duration of the
/// * process, but is otherwise arbitrary.
/// */
/// ```
///
/// `double getElapsedTime ();`
#[inline]
pub unsafe fn GetElapsedTime(&self, _retval: *mut libc::c_double) -> ::nserror::nsresult {
((*self.vtable).GetElapsedTime)(self, _retval)
}
/// ```text
/// /**
/// * Contains an array of shared library objects.
/// * Every object has the properties:
/// * - start: The start address of the memory region occupied by this library.
/// * - end: The end address of the memory region occupied by this library.
/// * - offset: Usually zero, except on Linux / Android if the first mapped
/// * section of the library has been mapped to an address that's
/// * different from the library's base address.
/// * Then offset = start - baseAddress.
/// * - name: The name (file basename) of the binary.
/// * - path: The full absolute path to the binary.
/// * - debugName: On Windows, the name of the pdb file for the binary. On other
/// * platforms, the same as |name|.
/// * - debugPath: On Windows, the full absolute path of the pdb file for the
/// * binary. On other platforms, the same as |path|.
/// * - arch: On Mac, the name of the architecture that identifies the right
/// * binary image of a fat binary. Example values are "i386", "x86_64",
/// * and "x86_64h". (x86_64h is used for binaries that contain
/// * instructions that are specific to the Intel Haswell microarchitecture.)
/// * On non-Mac platforms, arch is "".
/// * - breakpadId: A unique identifier string for this library, as used by breakpad.
/// */
/// ```
///
/// `[implicit_jscontext] readonly attribute jsval sharedLibraries;`
const _GetSharedLibraries: () = ();
/// ```text
/// /**
/// * Returns a promise that resolves to a SymbolTableAsTuple for the binary at
/// * the given path.
/// *
/// * SymbolTable as tuple: [addrs, index, buffer]
/// * Contains a symbol table, which can be used to map addresses to strings.
/// *
/// * The first element of this tuple, commonly named "addrs", is a sorted array of
/// * symbol addresses, as library-relative offsets in bytes, in ascending order.
/// * The third element of this tuple, commonly named "buffer", is a buffer of
/// * bytes that contains all strings from this symbol table, in the order of the
/// * addresses they correspond to, in utf-8 encoded form, all concatenated
/// * together.
/// * The second element of this tuple, commonly named "index", contains positions
/// * into "buffer". For every address, that position is where the string for that
/// * address starts in the buffer.
/// * index.length == addrs.length + 1.
/// * index[addrs.length] is the end position of the last string in the buffer.
/// *
/// * The string for the address addrs[i] is
/// * (new TextDecoder()).decode(buffer.subarray(index[i], index[i + 1]))
/// */
/// ```
///
/// `[implicit_jscontext] Promise getSymbolTable (in ACString aDebugPath, in ACString aBreakpadID);`
const _GetSymbolTable: () = ();
/// `[nostdcall,notxpcom] ProfileDataBufferMozPromise getProfileDataAsGzippedArrayBufferAndroid (in double aSinceTime);`
const _GetProfileDataAsGzippedArrayBufferAndroid: () = ();
}