Flutter Engine
The Flutter Engine
Loading...
Searching...
No Matches
Classes | Public Types | Public Member Functions | List of all members
skia_private::THashMap< K, V, HashK > Class Template Reference

#include <SkTHash.h>

Classes

struct  Pair
 

Public Types

using Iter = typename THashTable< Pair, K >::template Iter< std::pair< K, V > >
 

Public Member Functions

 THashMap ()=default
 
 THashMap (THashMap< K, V, HashK > &&that)=default
 
 THashMap (const THashMap< K, V, HashK > &that)=default
 
THashMap< K, V, HashK > & operator= (THashMap< K, V, HashK > &&that)=default
 
THashMap< K, V, HashK > & operator= (const THashMap< K, V, HashK > &that)=default
 
 THashMap (std::initializer_list< Pair > pairs)
 
void reset ()
 
int count () const
 
bool empty () const
 
size_t approxBytesUsed () const
 
Vset (K key, V val)
 
Vfind (const K &key) const
 
Voperator[] (const K &key)
 
void remove (const K &key)
 
bool removeIfExists (const K &key)
 
template<typename Fn , std::enable_if_t< std::is_invocable_v< Fn, K, V * > > * = nullptr>
void foreach (Fn &&fn)
 
template<typename Fn , std::enable_if_t< std::is_invocable_v< Fn, K, V > > * = nullptr>
void foreach (Fn &&fn) const
 
template<typename Fn , std::enable_if_t< std::is_invocable_v< Fn, Pair > > * = nullptr>
void foreach (Fn &&fn) const
 
Iter begin () const
 
Iter end () const
 

Detailed Description

template<typename K, typename V, typename HashK = SkGoodHash>
class skia_private::THashMap< K, V, HashK >

Definition at line 431 of file SkTHash.h.

Member Typedef Documentation

◆ Iter

template<typename K , typename V , typename HashK = SkGoodHash>
using skia_private::THashMap< K, V, HashK >::Iter = typename THashTable<Pair, K>::template Iter<std::pair<K, V> >

Definition at line 525 of file SkTHash.h.

Constructor & Destructor Documentation

◆ THashMap() [1/4]

template<typename K , typename V , typename HashK = SkGoodHash>
skia_private::THashMap< K, V, HashK >::THashMap ( )
default

◆ THashMap() [2/4]

template<typename K , typename V , typename HashK = SkGoodHash>
skia_private::THashMap< K, V, HashK >::THashMap ( THashMap< K, V, HashK > &&  that)
default

◆ THashMap() [3/4]

template<typename K , typename V , typename HashK = SkGoodHash>
skia_private::THashMap< K, V, HashK >::THashMap ( const THashMap< K, V, HashK > &  that)
default

◆ THashMap() [4/4]

template<typename K , typename V , typename HashK = SkGoodHash>
skia_private::THashMap< K, V, HashK >::THashMap ( std::initializer_list< Pair pairs)
inline

Definition at line 449 of file SkTHash.h.

449 {
450 fTable.resize(pairs.size() * 5 / 3);
451 for (const Pair& p : pairs) {
452 fTable.set(p);
453 }
454 }

Member Function Documentation

◆ approxBytesUsed()

template<typename K , typename V , typename HashK = SkGoodHash>
size_t skia_private::THashMap< K, V, HashK >::approxBytesUsed ( ) const
inline

Definition at line 466 of file SkTHash.h.

466{ return fTable.approxBytesUsed(); }

◆ begin()

template<typename K , typename V , typename HashK = SkGoodHash>
Iter skia_private::THashMap< K, V, HashK >::begin ( ) const
inline

Definition at line 527 of file SkTHash.h.

527 {
528 return Iter::MakeBegin(&fTable);
529 }

◆ count()

template<typename K , typename V , typename HashK = SkGoodHash>
int skia_private::THashMap< K, V, HashK >::count ( ) const
inline

Definition at line 460 of file SkTHash.h.

460{ return fTable.count(); }

◆ empty()

template<typename K , typename V , typename HashK = SkGoodHash>
bool skia_private::THashMap< K, V, HashK >::empty ( ) const
inline

Definition at line 463 of file SkTHash.h.

463{ return fTable.count() == 0; }

◆ end()

template<typename K , typename V , typename HashK = SkGoodHash>
Iter skia_private::THashMap< K, V, HashK >::end ( ) const
inline

Definition at line 531 of file SkTHash.h.

531 {
532 return Iter::MakeEnd(&fTable);
533 }

◆ find()

template<typename K , typename V , typename HashK = SkGoodHash>
V * skia_private::THashMap< K, V, HashK >::find ( const K key) const
inline

Definition at line 479 of file SkTHash.h.

479 {
480 if (Pair* p = fTable.find(key)) {
481 return &p->second;
482 }
483 return nullptr;
484 }

◆ foreach() [1/3]

template<typename K , typename V , typename HashK = SkGoodHash>
template<typename Fn , std::enable_if_t< std::is_invocable_v< Fn, K, V * > > * = nullptr>
void skia_private::THashMap< K, V, HashK >::foreach ( Fn &&  fn)
inline

Definition at line 506 of file SkTHash.h.

506 {
507 fTable.foreach([&fn](Pair* p) { fn(p->first, &p->second); });
508 }

◆ foreach() [2/3]

template<typename K , typename V , typename HashK = SkGoodHash>
template<typename Fn , std::enable_if_t< std::is_invocable_v< Fn, K, V > > * = nullptr>
void skia_private::THashMap< K, V, HashK >::foreach ( Fn &&  fn) const
inline

Definition at line 513 of file SkTHash.h.

513 {
514 fTable.foreach([&fn](const Pair& p) { fn(p.first, p.second); });
515 }

◆ foreach() [3/3]

template<typename K , typename V , typename HashK = SkGoodHash>
template<typename Fn , std::enable_if_t< std::is_invocable_v< Fn, Pair > > * = nullptr>
void skia_private::THashMap< K, V, HashK >::foreach ( Fn &&  fn) const
inline

Definition at line 520 of file SkTHash.h.

520 {
521 fTable.foreach([&fn](const Pair& p) { fn(p); });
522 }

◆ operator=() [1/2]

template<typename K , typename V , typename HashK = SkGoodHash>
THashMap< K, V, HashK > & skia_private::THashMap< K, V, HashK >::operator= ( const THashMap< K, V, HashK > &  that)
default

◆ operator=() [2/2]

template<typename K , typename V , typename HashK = SkGoodHash>
THashMap< K, V, HashK > & skia_private::THashMap< K, V, HashK >::operator= ( THashMap< K, V, HashK > &&  that)
default

◆ operator[]()

template<typename K , typename V , typename HashK = SkGoodHash>
V & skia_private::THashMap< K, V, HashK >::operator[] ( const K key)
inline

Definition at line 486 of file SkTHash.h.

486 {
487 if (V* val = this->find(key)) {
488 return *val;
489 }
490 return *this->set(key, V{});
491 }
V * find(const K &key) const
Definition SkTHash.h:479
V * set(K key, V val)
Definition SkTHash.h:472
T __attribute__((ext_vector_type(N))) V

◆ remove()

template<typename K , typename V , typename HashK = SkGoodHash>
void skia_private::THashMap< K, V, HashK >::remove ( const K key)
inline

Definition at line 494 of file SkTHash.h.

494 {
495 fTable.remove(key);
496 }

◆ removeIfExists()

template<typename K , typename V , typename HashK = SkGoodHash>
bool skia_private::THashMap< K, V, HashK >::removeIfExists ( const K key)
inline

Definition at line 499 of file SkTHash.h.

499 {
500 return fTable.removeIfExists(key);
501 }

◆ reset()

template<typename K , typename V , typename HashK = SkGoodHash>
void skia_private::THashMap< K, V, HashK >::reset ( )
inline

Definition at line 457 of file SkTHash.h.

457{ fTable.reset(); }

◆ set()

template<typename K , typename V , typename HashK = SkGoodHash>
V * skia_private::THashMap< K, V, HashK >::set ( K  key,
V  val 
)
inline

Definition at line 472 of file SkTHash.h.

472 {
473 Pair* out = fTable.set({std::move(key), std::move(val)});
474 return &out->second;
475 }

The documentation for this class was generated from the following file: