XPCOM 集合

nsTArrayAutoTArray

nsTArray<T> 是一个用于保存各种对象的类型安全数组,类似于 std::vector<T>。(请注意,nsTArray<T> 是动态大小的,与 std::array<T> 不同)以下是这两个之间映射的不完整列表

std::vector<T>

nsTArray<T>

size()

Length()

empty()

IsEmpty()

resize()

SetLength()SetLengthAndRetainStorage()

capacity()

Capacity()

reserve()

SetCapacity()

push_back()

AppendElement()

insert()

AppendElements()

emplace_back()

EmplaceBack()

clear()

Clear()ClearAndRetainStorage()

data()

Elements()

at()

ElementAt()

back()

LastElement()

Rust 绑定

thin_vec crate 在 Gecko 中构建时,thin_vec::ThinVec<T> 保证具有与 nsTArray 相同的内存布局和分配策略,这意味着这两种类型可以在 FFI 边界之间互换使用。由于 Rust 和 C++ 在运行析构函数时的时机不同,因此该类型安全通过值在 FFI 边界之间传递。

元素类型 T 必须与 Rust 和 C++ 代码在内存上兼容才能在 FFI 上使用。

nsTHashMapnsTHashSet

这些类型是在 XPCOM 代码中编写新的 XPCOM 哈希映射和哈希集的推荐接口。

支持的哈希键

以下类型作为 nsTHashMapnsTHashSet 的键参数受支持。

类型

哈希键

T*

nsPtrHashKey<T>

T*

nsPtrHashKey<T>

nsCString

nsCStringHashKey

nsString

nsStringHashKey

uint32_t

nsUint32HashKey

uint64_t

nsUint64HashKey

intptr_t

IntPtrHashKey

nsCOMPtr<nsISupports>

nsISupportsHashKey

RefPtr<T>

nsRefPtrHashKey<T>

nsID

nsIDHashKey

此列表中未包含的任何键必须继承自 PLDHashEntryHdr 类以实现手动哈希行为。

类参考

注意

在代码中,nsTHashMapnsTHashSet 类型的声明方式并不完全像这样。这主要旨在作为一种实用的参考。

template<K, V>
class nsTHashMap<K, V>

nsTHashMap<K, V> 类当前定义为围绕 nsBaseHashtable 的一个轻量级类型别名。有关更详细的文档,请参见该类上定义的方法。

https://searchfox.org/mozilla-central/source/xpcom/ds/nsBaseHashtable.h

uint32_t Count() const
bool IsEmpty() const
bool Get(KeyType aKey, V *aData) const

获取值,返回一个标志,指示表中是否存在该条目。

V Get(KeyType aKey) const

获取值,如果表中不存在该条目,则返回一个默认初始化的对象。

Maybe<V> MaybeGet(KeyType aKey) const

获取值,如果表中不存在该条目,则返回 Nothing。

V &LookupOrInsert(KeyType aKey, Args&&... aArgs) const
V &LookupOrInsertWith(KeyType aKey, F &&aFunc) const
template<K>
class nsTHashSet<K>

nsTHashSet<K> 类当前定义为围绕 nsTBaseHashSet 的一个轻量级类型别名。有关更详细的文档,请参见该类上定义的方法。

https://searchfox.org/mozilla-central/source/xpcom/ds/nsTHashSet.h