Coverage Report

Created: 2026-10-14 09:33

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/work/workdir/UnpackedTarball/harfbuzz/src/hb-map.hh
Line
Count
Source
1
/*
2
 * Copyright © 2018  Google, Inc.
3
 *
4
 *  This is part of HarfBuzz, a text shaping library.
5
 *
6
 * Permission is hereby granted, without written agreement and without
7
 * license or royalty fees, to use, copy, modify, and distribute this
8
 * software and its documentation for any purpose, provided that the
9
 * above copyright notice and the following two paragraphs appear in
10
 * all copies of this software.
11
 *
12
 * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
13
 * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
14
 * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
15
 * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
16
 * DAMAGE.
17
 *
18
 * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
19
 * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
20
 * FITNESS FOR A PARTICULAR PURPOSE.  THE SOFTWARE PROVIDED HEREUNDER IS
21
 * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
22
 * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
23
 *
24
 * Google Author(s): Behdad Esfahbod
25
 */
26
27
#ifndef HB_MAP_HH
28
#define HB_MAP_HH
29
30
#include "hb.hh"
31
32
#include "hb-set.hh"
33
34
35
/*
36
 * hb_hashmap_t
37
 */
38
39
extern HB_INTERNAL const hb_codepoint_t minus_1;
40
41
template <typename K, typename V,
42
    bool minus_one = false>
43
struct hb_hashmap_t
44
{
45
  static constexpr bool realloc_move = true;
46
47
811k
  hb_hashmap_t ()  { init (); }
hb_hashmap_t<hb_serialize_context_t::object_t const*, unsigned int, false>::hb_hashmap_t()
Line
Count
Source
47
114k
  hb_hashmap_t ()  { init (); }
hb_hashmap_t<unsigned int, unsigned int, true>::hb_hashmap_t()
Line
Count
Source
47
305k
  hb_hashmap_t ()  { init (); }
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_set_t, false>::hb_hashmap_t()
hb_hashmap_t<unsigned int, hb::unique_ptr<hb_set_t>, false>::hb_hashmap_t()
Line
Count
Source
47
32.6k
  hb_hashmap_t ()  { init (); }
hb_hashmap_t<unsigned int, Triple, false>::hb_hashmap_t()
Line
Count
Source
47
81.5k
  hb_hashmap_t ()  { init (); }
Unexecuted instantiation: hb_hashmap_t<unsigned int, unsigned int, false>::hb_hashmap_t()
Unexecuted instantiation: hb_hashmap_t<graph::overflow_record_t, bool, false>::hb_hashmap_t()
Unexecuted instantiation: hb_hashmap_t<hb_array_t<char const>, unsigned int, true>::hb_hashmap_t()
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_vector_t<unsigned int, false>, false>::hb_hashmap_t()
hb_hashmap_t<unsigned int, hb::unique_ptr<hb_blob_t>, false>::hb_hashmap_t()
Line
Count
Source
47
16.3k
  hb_hashmap_t ()  { init (); }
hb_hashmap_t<unsigned int, hb::shared_ptr<hb_set_t>, false>::hb_hashmap_t()
Line
Count
Source
47
65.2k
  hb_hashmap_t ()  { init (); }
hb_hashmap_t<unsigned int, OT::Feature const*, false>::hb_hashmap_t()
Line
Count
Source
47
32.6k
  hb_hashmap_t ()  { init (); }
hb_hashmap_t<unsigned int, hb_pair_t<void const*, void const*>, false>::hb_hashmap_t()
Line
Count
Source
47
32.6k
  hb_hashmap_t ()  { init (); }
hb_hashmap_t<unsigned int, hb_pair_t<unsigned int, int>, false>::hb_hashmap_t()
Line
Count
Source
47
81.5k
  hb_hashmap_t ()  { init (); }
hb_hashmap_t<unsigned int, TripleDistances, false>::hb_hashmap_t()
Line
Count
Source
47
16.3k
  hb_hashmap_t ()  { init (); }
hb_hashmap_t<unsigned int, double, false>::hb_hashmap_t()
Line
Count
Source
47
16.3k
  hb_hashmap_t ()  { init (); }
hb_hashmap_t<unsigned int, contour_point_vector_t, false>::hb_hashmap_t()
Line
Count
Source
47
16.3k
  hb_hashmap_t ()  { init (); }
Unexecuted instantiation: hb_hashmap_t<hb::shared_ptr<hb_map_t>, unsigned int, false>::hb_hashmap_t()
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_pair_t<double, double>, false>::hb_hashmap_t()
Unexecuted instantiation: hb_hashmap_t<hb_hashmap_t<unsigned int, Triple, false> const*, unsigned int, false>::hb_hashmap_t()
Unexecuted instantiation: hb_hashmap_t<hb_vector_t<bool, false> const*, hb_vector_t<unsigned char, false>, false>::hb_hashmap_t()
Unexecuted instantiation: hb_hashmap_t<hb_vector_t<bool, false> const*, unsigned int, false>::hb_hashmap_t()
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_vector_t<int, false> const*, false>::hb_hashmap_t()
Unexecuted instantiation: hb_hashmap_t<hb_vector_t<int, false> const*, unsigned int, false>::hb_hashmap_t()
Unexecuted instantiation: hb_hashmap_t<hb_vector_t<OT::HBFixed<OT::NumType<true, short, 2u>, 14u>, false> const*, unsigned int, false>::hb_hashmap_t()
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_array_t<char const>, false>::hb_hashmap_t()
Unexecuted instantiation: hb_hashmap_t<hb_array_t<OT::NumType<true, unsigned int, 4u> const>, unsigned int, false>::hb_hashmap_t()
Unexecuted instantiation: hb_hashmap_t<unsigned int, graph::Lookup*, false>::hb_hashmap_t()
48
811k
  ~hb_hashmap_t () { fini (); }
hb_hashmap_t<hb_serialize_context_t::object_t const*, unsigned int, false>::~hb_hashmap_t()
Line
Count
Source
48
114k
  ~hb_hashmap_t () { fini (); }
hb_hashmap_t<unsigned int, unsigned int, true>::~hb_hashmap_t()
Line
Count
Source
48
305k
  ~hb_hashmap_t () { fini (); }
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_set_t, false>::~hb_hashmap_t()
hb_hashmap_t<unsigned int, hb::unique_ptr<hb_set_t>, false>::~hb_hashmap_t()
Line
Count
Source
48
32.6k
  ~hb_hashmap_t () { fini (); }
hb_hashmap_t<unsigned int, Triple, false>::~hb_hashmap_t()
Line
Count
Source
48
81.5k
  ~hb_hashmap_t () { fini (); }
Unexecuted instantiation: hb_hashmap_t<unsigned int, unsigned int, false>::~hb_hashmap_t()
Unexecuted instantiation: hb_hashmap_t<graph::overflow_record_t, bool, false>::~hb_hashmap_t()
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_vector_t<unsigned int, false>, false>::~hb_hashmap_t()
Unexecuted instantiation: hb_hashmap_t<unsigned int, graph::Lookup*, false>::~hb_hashmap_t()
Unexecuted instantiation: hb_hashmap_t<hb_array_t<char const>, unsigned int, true>::~hb_hashmap_t()
hb_hashmap_t<unsigned int, hb::unique_ptr<hb_blob_t>, false>::~hb_hashmap_t()
Line
Count
Source
48
16.3k
  ~hb_hashmap_t () { fini (); }
hb_hashmap_t<unsigned int, hb::shared_ptr<hb_set_t>, false>::~hb_hashmap_t()
Line
Count
Source
48
65.2k
  ~hb_hashmap_t () { fini (); }
hb_hashmap_t<unsigned int, OT::Feature const*, false>::~hb_hashmap_t()
Line
Count
Source
48
32.6k
  ~hb_hashmap_t () { fini (); }
hb_hashmap_t<unsigned int, hb_pair_t<void const*, void const*>, false>::~hb_hashmap_t()
Line
Count
Source
48
32.6k
  ~hb_hashmap_t () { fini (); }
hb_hashmap_t<unsigned int, hb_pair_t<unsigned int, int>, false>::~hb_hashmap_t()
Line
Count
Source
48
81.5k
  ~hb_hashmap_t () { fini (); }
hb_hashmap_t<unsigned int, TripleDistances, false>::~hb_hashmap_t()
Line
Count
Source
48
16.3k
  ~hb_hashmap_t () { fini (); }
hb_hashmap_t<unsigned int, double, false>::~hb_hashmap_t()
Line
Count
Source
48
16.3k
  ~hb_hashmap_t () { fini (); }
hb_hashmap_t<unsigned int, contour_point_vector_t, false>::~hb_hashmap_t()
Line
Count
Source
48
16.3k
  ~hb_hashmap_t () { fini (); }
Unexecuted instantiation: hb_hashmap_t<hb::shared_ptr<hb_map_t>, unsigned int, false>::~hb_hashmap_t()
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_pair_t<double, double>, false>::~hb_hashmap_t()
Unexecuted instantiation: hb_hashmap_t<hb_vector_t<bool, false> const*, unsigned int, false>::~hb_hashmap_t()
Unexecuted instantiation: hb_hashmap_t<hb_vector_t<bool, false> const*, hb_vector_t<unsigned char, false>, false>::~hb_hashmap_t()
Unexecuted instantiation: hb_hashmap_t<hb_hashmap_t<unsigned int, Triple, false> const*, unsigned int, false>::~hb_hashmap_t()
Unexecuted instantiation: hb_hashmap_t<hb_vector_t<int, false> const*, unsigned int, false>::~hb_hashmap_t()
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_vector_t<int, false> const*, false>::~hb_hashmap_t()
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_array_t<char const>, false>::~hb_hashmap_t()
Unexecuted instantiation: hb_hashmap_t<hb_vector_t<OT::HBFixed<OT::NumType<true, short, 2u>, 14u>, false> const*, unsigned int, false>::~hb_hashmap_t()
Unexecuted instantiation: hb_hashmap_t<hb_array_t<OT::NumType<true, unsigned int, 4u> const>, unsigned int, false>::~hb_hashmap_t()
49
50
  void _copy (const hb_hashmap_t& o)
51
16.3k
  {
52
16.3k
    if (unlikely (!o.successful))
53
0
    {
54
0
      successful = false;
55
0
      return;
56
0
    }
57
16.3k
    if (unlikely (!o.mask)) return;
58
59
0
    if (hb_is_trivially_copy_assignable (item_t))
60
0
    {
61
0
      items = (item_t *) hb_malloc2 ((o.mask + 1), sizeof (item_t));
62
0
      if (unlikely (!items))
63
0
      {
64
0
  successful = false;
65
0
  return;
66
0
      }
67
0
      population = o.population;
68
0
      occupancy = o.occupancy;
69
0
      mask = o.mask;
70
0
      prime = o.prime;
71
0
      max_chain_length = o.max_chain_length;
72
0
      memcpy (items, o.items, sizeof (item_t) * (mask + 1));
73
0
      return;
74
0
    }
75
76
0
    alloc (o.population); hb_copy (o, *this);
77
0
  }
Unexecuted instantiation: hb_hashmap_t<unsigned int, unsigned int, true>::_copy(hb_hashmap_t<unsigned int, unsigned int, true> const&)
hb_hashmap_t<unsigned int, Triple, false>::_copy(hb_hashmap_t<unsigned int, Triple, false> const&)
Line
Count
Source
51
16.3k
  {
52
16.3k
    if (unlikely (!o.successful))
53
0
    {
54
0
      successful = false;
55
0
      return;
56
0
    }
57
16.3k
    if (unlikely (!o.mask)) return;
58
59
0
    if (hb_is_trivially_copy_assignable (item_t))
60
0
    {
61
0
      items = (item_t *) hb_malloc2 ((o.mask + 1), sizeof (item_t));
62
0
      if (unlikely (!items))
63
0
      {
64
0
  successful = false;
65
0
  return;
66
0
      }
67
0
      population = o.population;
68
0
      occupancy = o.occupancy;
69
0
      mask = o.mask;
70
0
      prime = o.prime;
71
0
      max_chain_length = o.max_chain_length;
72
0
      memcpy (items, o.items, sizeof (item_t) * (mask + 1));
73
0
      return;
74
0
    }
75
76
0
    alloc (o.population); hb_copy (o, *this);
77
0
  }
78
79
0
  hb_hashmap_t (const hb_hashmap_t& o) : hb_hashmap_t () { _copy (o); }
80
  hb_hashmap_t& operator= (const hb_hashmap_t& o)
81
16.3k
  {
82
16.3k
    reset ();
83
16.3k
    if (!items) { _copy (o); return *this; }
84
0
    alloc (o.population); hb_copy (o, *this); return *this;
85
16.3k
  }
hb_hashmap_t<unsigned int, Triple, false>::operator=(hb_hashmap_t<unsigned int, Triple, false> const&)
Line
Count
Source
81
16.3k
  {
82
16.3k
    reset ();
83
16.3k
    if (!items) { _copy (o); return *this; }
84
0
    alloc (o.population); hb_copy (o, *this); return *this;
85
16.3k
  }
Unexecuted instantiation: hb_hashmap_t<unsigned int, unsigned int, true>::operator=(hb_hashmap_t<unsigned int, unsigned int, true> const&)
86
87
0
  hb_hashmap_t (hb_hashmap_t&& o)  noexcept : hb_hashmap_t () { hb_swap (*this, o); }
Unexecuted instantiation: hb_hashmap_t<unsigned int, unsigned int, false>::hb_hashmap_t(hb_hashmap_t<unsigned int, unsigned int, false>&&)
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_set_t, false>::hb_hashmap_t(hb_hashmap_t<unsigned int, hb_set_t, false>&&)
Unexecuted instantiation: hb_hashmap_t<unsigned int, Triple, false>::hb_hashmap_t(hb_hashmap_t<unsigned int, Triple, false>&&)
Unexecuted instantiation: hb_hashmap_t<hb_vector_t<bool, false> const*, hb_vector_t<unsigned char, false>, false>::hb_hashmap_t(hb_hashmap_t<hb_vector_t<bool, false> const*, hb_vector_t<unsigned char, false>, false>&&)
Unexecuted instantiation: hb_hashmap_t<hb_vector_t<bool, false> const*, unsigned int, false>::hb_hashmap_t(hb_hashmap_t<hb_vector_t<bool, false> const*, unsigned int, false>&&)
Unexecuted instantiation: hb_hashmap_t<unsigned int, graph::Lookup*, false>::hb_hashmap_t(hb_hashmap_t<unsigned int, graph::Lookup*, false>&&)
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_vector_t<unsigned int, false>, false>::hb_hashmap_t(hb_hashmap_t<unsigned int, hb_vector_t<unsigned int, false>, false>&&)
88
0
  hb_hashmap_t& operator= (hb_hashmap_t&& o)   noexcept { hb_swap (*this, o); return *this; }
Unexecuted instantiation: hb_hashmap_t<unsigned int, unsigned int, true>::operator=(hb_hashmap_t<unsigned int, unsigned int, true>&&)
Unexecuted instantiation: hb_hashmap_t<hb_vector_t<bool, false> const*, hb_vector_t<unsigned char, false>, false>::operator=(hb_hashmap_t<hb_vector_t<bool, false> const*, hb_vector_t<unsigned char, false>, false>&&)
Unexecuted instantiation: hb_hashmap_t<hb_vector_t<bool, false> const*, unsigned int, false>::operator=(hb_hashmap_t<hb_vector_t<bool, false> const*, unsigned int, false>&&)
Unexecuted instantiation: hb_hashmap_t<unsigned int, Triple, false>::operator=(hb_hashmap_t<unsigned int, Triple, false>&&)
Unexecuted instantiation: hb_hashmap_t<unsigned int, unsigned int, false>::operator=(hb_hashmap_t<unsigned int, unsigned int, false>&&)
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_pair_t<unsigned int, int>, false>::operator=(hb_hashmap_t<unsigned int, hb_pair_t<unsigned int, int>, false>&&)
89
90
  hb_hashmap_t (std::initializer_list<hb_pair_t<K, V>> lst) : hb_hashmap_t ()
91
  {
92
    for (auto&& item : lst)
93
      set (item.first, item.second);
94
  }
95
  template <typename Iterable,
96
      hb_requires (hb_is_iterable (Iterable))>
97
0
  hb_hashmap_t (const Iterable &o) : hb_hashmap_t ()
98
0
  {
99
0
    auto iter = hb_iter (o);
100
0
    if (iter.is_random_access_iterator || iter.has_fast_len)
101
0
      alloc (hb_len (iter));
102
0
    hb_copy (iter, *this);
103
0
  }
104
105
  struct item_t
106
  {
107
    K key;
108
    uint32_t is_real_ : 1;
109
    uint32_t is_used_ : 1;
110
    uint32_t hash : 30;
111
    V value;
112
113
0
    item_t () : key (),
114
391k
    is_real_ (false), is_used_ (false),
115
391k
    hash (0),
116
391k
    value () {}
Unexecuted instantiation: hb_hashmap_t<hb_array_t<char const>, unsigned int, true>::item_t::item_t()
Unexecuted instantiation: hb_hashmap_t<hb::shared_ptr<hb_map_t>, unsigned int, false>::item_t::item_t()
Unexecuted instantiation: hb_hashmap_t<hb_array_t<OT::NumType<true, unsigned int, 4u> const>, unsigned int, false>::item_t::item_t()
Unexecuted instantiation: hb_hashmap_t<unsigned int, unsigned int, true>::item_t::item_t()
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb::unique_ptr<hb_set_t>, false>::item_t::item_t()
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_set_t, false>::item_t::item_t()
Unexecuted instantiation: hb_hashmap_t<unsigned int, Triple, false>::item_t::item_t()
hb_hashmap_t<unsigned int, hb::unique_ptr<hb_blob_t>, false>::item_t::item_t()
Line
Count
Source
114
391k
    is_real_ (false), is_used_ (false),
115
391k
    hash (0),
116
391k
    value () {}
Unexecuted instantiation: hb_hashmap_t<unsigned int, unsigned int, false>::item_t::item_t()
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_vector_t<unsigned int, false>, false>::item_t::item_t()
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb::shared_ptr<hb_set_t>, false>::item_t::item_t()
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_pair_t<void const*, void const*>, false>::item_t::item_t()
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_pair_t<double, double>, false>::item_t::item_t()
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_pair_t<unsigned int, int>, false>::item_t::item_t()
Unexecuted instantiation: hb_hashmap_t<unsigned int, TripleDistances, false>::item_t::item_t()
Unexecuted instantiation: hb_hashmap_t<unsigned int, contour_point_vector_t, false>::item_t::item_t()
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_array_t<char const>, false>::item_t::item_t()
Unexecuted instantiation: hb_hashmap_t<hb_vector_t<bool, false> const*, hb_vector_t<unsigned char, false>, false>::item_t::item_t()
117
118
    // Needed for https://github.com/harfbuzz/harfbuzz/issues/4138
119
0
    K& get_key () { return key; }
Unexecuted instantiation: hb_hashmap_t<unsigned int, unsigned int, true>::item_t::get_key()
Unexecuted instantiation: hb_hashmap_t<unsigned int, Triple, false>::item_t::get_key()
Unexecuted instantiation: hb_hashmap_t<unsigned int, face_table_info_t, false>::item_t::get_key()
Unexecuted instantiation: hb_hashmap_t<unsigned int, unsigned int, false>::item_t::get_key()
Unexecuted instantiation: hb_hashmap_t<unsigned int, graph::Lookup*, false>::item_t::get_key()
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_set_t, false>::item_t::get_key()
120
892k
    V& get_value () { return value; }
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_vector_t<unsigned int, false>, false>::item_t::get_value()
hb_hashmap_t<unsigned int, unsigned int, true>::item_t::get_value()
Line
Count
Source
120
501k
    V& get_value () { return value; }
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_pair_t<unsigned int, int>, false>::item_t::get_value()
hb_hashmap_t<unsigned int, face_table_info_t, false>::item_t::get_value()
Line
Count
Source
120
391k
    V& get_value () { return value; }
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_set_t, false>::item_t::get_value()
Unexecuted instantiation: hb_hashmap_t<unsigned int, graph::Lookup*, false>::item_t::get_value()
121
122
231M
    bool is_used () const { return is_used_; }
hb_hashmap_t<unsigned int, unsigned int, true>::item_t::is_used() const
Line
Count
Source
122
228M
    bool is_used () const { return is_used_; }
hb_hashmap_t<hb_serialize_context_t::object_t const*, unsigned int, false>::item_t::is_used() const
Line
Count
Source
122
568k
    bool is_used () const { return is_used_; }
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_vector_t<unsigned int, false>, false>::item_t::is_used() const
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb::shared_ptr<hb_set_t>, false>::item_t::is_used() const
Unexecuted instantiation: hb_hashmap_t<unsigned int, OT::Feature const*, false>::item_t::is_used() const
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb::unique_ptr<hb_set_t>, false>::item_t::is_used() const
Unexecuted instantiation: hb_hashmap_t<unsigned int, Triple, false>::item_t::is_used() const
Unexecuted instantiation: hb_hashmap_t<unsigned int, TripleDistances, false>::item_t::is_used() const
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_pair_t<unsigned int, int>, false>::item_t::is_used() const
Unexecuted instantiation: hb_hashmap_t<hb::shared_ptr<hb_map_t>, unsigned int, false>::item_t::is_used() const
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_pair_t<void const*, void const*>, false>::item_t::is_used() const
Unexecuted instantiation: hb_hashmap_t<hb_vector_t<OT::HBFixed<OT::NumType<true, short, 2u>, 14u>, false> const*, unsigned int, false>::item_t::is_used() const
Unexecuted instantiation: hb_hashmap_t<hb_hashmap_t<unsigned int, Triple, false> const*, unsigned int, false>::item_t::is_used() const
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_vector_t<int, false> const*, false>::item_t::is_used() const
Unexecuted instantiation: hb_hashmap_t<hb_vector_t<int, false> const*, unsigned int, false>::item_t::is_used() const
Unexecuted instantiation: hb_hashmap_t<hb_set_t const*, unsigned int, false>::item_t::is_used() const
Unexecuted instantiation: hb_hashmap_t<unsigned long, unsigned int, false>::item_t::is_used() const
Unexecuted instantiation: hb_hashmap_t<OT::hb_depend_context_t::recurse_key_t, bool, false>::item_t::is_used() const
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_set_t, false>::item_t::is_used() const
Unexecuted instantiation: hb_hashmap_t<OT::hb_depend_context_t::glyph_set_cache_key_t, unsigned int, false>::item_t::is_used() const
Unexecuted instantiation: hb_hashmap_t<OT::hb_depend_context_t::context_set_cache_key_t, unsigned int, false>::item_t::is_used() const
hb_hashmap_t<unsigned int, face_table_info_t, false>::item_t::is_used() const
Line
Count
Source
122
1.56M
    bool is_used () const { return is_used_; }
Unexecuted instantiation: hb_hashmap_t<unsigned int, unsigned int, false>::item_t::is_used() const
Unexecuted instantiation: hb_hashmap_t<hb_array_t<OT::NumType<true, unsigned int, 4u> const>, unsigned int, false>::item_t::is_used() const
Unexecuted instantiation: hb_hashmap_t<OT::SVG::svg_id_span_t, hb_pair_t<unsigned int, unsigned int>, false>::item_t::is_used() const
hb_hashmap_t<unsigned int, hb::unique_ptr<hb_blob_t>, false>::item_t::is_used() const
Line
Count
Source
122
619k
    bool is_used () const { return is_used_; }
Unexecuted instantiation: hb_hashmap_t<graph::overflow_record_t, bool, false>::item_t::is_used() const
Unexecuted instantiation: hb_hashmap_t<unsigned int, graph::Lookup*, false>::item_t::is_used() const
Unexecuted instantiation: hb_hashmap_t<hb_array_t<char const>, unsigned int, true>::item_t::is_used() const
Unexecuted instantiation: hb_hashmap_t<hb_vector_t<bool, false> const*, hb_vector_t<unsigned char, false>, false>::item_t::is_used() const
Unexecuted instantiation: hb_hashmap_t<hb_vector_t<bool, false> const*, unsigned int, false>::item_t::is_used() const
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_pair_t<double, double>, false>::item_t::is_used() const
Unexecuted instantiation: hb_hashmap_t<unsigned int, double, false>::item_t::is_used() const
Unexecuted instantiation: hb_hashmap_t<unsigned int, contour_point_vector_t, false>::item_t::is_used() const
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_array_t<char const>, false>::item_t::is_used() const
123
86.3M
    void set_used (bool is_used) { is_used_ = is_used; }
hb_hashmap_t<unsigned int, unsigned int, true>::item_t::set_used(bool)
Line
Count
Source
123
85.5M
    void set_used (bool is_used) { is_used_ = is_used; }
hb_hashmap_t<hb_serialize_context_t::object_t const*, unsigned int, false>::item_t::set_used(bool)
Line
Count
Source
123
182k
    void set_used (bool is_used) { is_used_ = is_used; }
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_vector_t<unsigned int, false>, false>::item_t::set_used(bool)
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb::unique_ptr<hb_set_t>, false>::item_t::set_used(bool)
Unexecuted instantiation: hb_hashmap_t<unsigned int, Triple, false>::item_t::set_used(bool)
Unexecuted instantiation: hb_hashmap_t<hb::shared_ptr<hb_map_t>, unsigned int, false>::item_t::set_used(bool)
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb::shared_ptr<hb_set_t>, false>::item_t::set_used(bool)
Unexecuted instantiation: hb_hashmap_t<unsigned int, OT::Feature const*, false>::item_t::set_used(bool)
Unexecuted instantiation: hb_hashmap_t<hb_hashmap_t<unsigned int, Triple, false> const*, unsigned int, false>::item_t::set_used(bool)
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_vector_t<int, false> const*, false>::item_t::set_used(bool)
Unexecuted instantiation: hb_hashmap_t<hb_vector_t<int, false> const*, unsigned int, false>::item_t::set_used(bool)
Unexecuted instantiation: hb_hashmap_t<hb_set_t const*, unsigned int, false>::item_t::set_used(bool)
Unexecuted instantiation: hb_hashmap_t<unsigned long, unsigned int, false>::item_t::set_used(bool)
Unexecuted instantiation: hb_hashmap_t<OT::hb_depend_context_t::recurse_key_t, bool, false>::item_t::set_used(bool)
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_set_t, false>::item_t::set_used(bool)
Unexecuted instantiation: hb_hashmap_t<OT::hb_depend_context_t::glyph_set_cache_key_t, unsigned int, false>::item_t::set_used(bool)
Unexecuted instantiation: hb_hashmap_t<OT::hb_depend_context_t::context_set_cache_key_t, unsigned int, false>::item_t::set_used(bool)
hb_hashmap_t<unsigned int, face_table_info_t, false>::item_t::set_used(bool)
Line
Count
Source
123
440k
    void set_used (bool is_used) { is_used_ = is_used; }
Unexecuted instantiation: hb_hashmap_t<unsigned int, unsigned int, false>::item_t::set_used(bool)
Unexecuted instantiation: hb_hashmap_t<hb_array_t<OT::NumType<true, unsigned int, 4u> const>, unsigned int, false>::item_t::set_used(bool)
Unexecuted instantiation: hb_hashmap_t<OT::SVG::svg_id_span_t, hb_pair_t<unsigned int, unsigned int>, false>::item_t::set_used(bool)
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_pair_t<unsigned int, int>, false>::item_t::set_used(bool)
hb_hashmap_t<unsigned int, hb::unique_ptr<hb_blob_t>, false>::item_t::set_used(bool)
Line
Count
Source
123
179k
    void set_used (bool is_used) { is_used_ = is_used; }
Unexecuted instantiation: hb_hashmap_t<graph::overflow_record_t, bool, false>::item_t::set_used(bool)
Unexecuted instantiation: hb_hashmap_t<unsigned int, graph::Lookup*, false>::item_t::set_used(bool)
Unexecuted instantiation: hb_hashmap_t<hb_array_t<char const>, unsigned int, true>::item_t::set_used(bool)
Unexecuted instantiation: hb_hashmap_t<hb_vector_t<bool, false> const*, unsigned int, false>::item_t::set_used(bool)
Unexecuted instantiation: hb_hashmap_t<hb_vector_t<bool, false> const*, hb_vector_t<unsigned char, false>, false>::item_t::set_used(bool)
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_pair_t<void const*, void const*>, false>::item_t::set_used(bool)
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_pair_t<double, double>, false>::item_t::set_used(bool)
Unexecuted instantiation: hb_hashmap_t<unsigned int, double, false>::item_t::set_used(bool)
Unexecuted instantiation: hb_hashmap_t<unsigned int, TripleDistances, false>::item_t::set_used(bool)
Unexecuted instantiation: hb_hashmap_t<unsigned int, contour_point_vector_t, false>::item_t::set_used(bool)
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_array_t<char const>, false>::item_t::set_used(bool)
Unexecuted instantiation: hb_hashmap_t<hb_vector_t<OT::HBFixed<OT::NumType<true, short, 2u>, 14u>, false> const*, unsigned int, false>::item_t::set_used(bool)
124
86.3M
    void set_real (bool is_real) { is_real_ = is_real; }
hb_hashmap_t<unsigned int, unsigned int, true>::item_t::set_real(bool)
Line
Count
Source
124
85.5M
    void set_real (bool is_real) { is_real_ = is_real; }
hb_hashmap_t<hb_serialize_context_t::object_t const*, unsigned int, false>::item_t::set_real(bool)
Line
Count
Source
124
182k
    void set_real (bool is_real) { is_real_ = is_real; }
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_vector_t<unsigned int, false>, false>::item_t::set_real(bool)
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb::unique_ptr<hb_set_t>, false>::item_t::set_real(bool)
Unexecuted instantiation: hb_hashmap_t<unsigned int, Triple, false>::item_t::set_real(bool)
Unexecuted instantiation: hb_hashmap_t<hb::shared_ptr<hb_map_t>, unsigned int, false>::item_t::set_real(bool)
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb::shared_ptr<hb_set_t>, false>::item_t::set_real(bool)
Unexecuted instantiation: hb_hashmap_t<unsigned int, OT::Feature const*, false>::item_t::set_real(bool)
Unexecuted instantiation: hb_hashmap_t<hb_hashmap_t<unsigned int, Triple, false> const*, unsigned int, false>::item_t::set_real(bool)
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_vector_t<int, false> const*, false>::item_t::set_real(bool)
Unexecuted instantiation: hb_hashmap_t<hb_vector_t<int, false> const*, unsigned int, false>::item_t::set_real(bool)
Unexecuted instantiation: hb_hashmap_t<hb_set_t const*, unsigned int, false>::item_t::set_real(bool)
Unexecuted instantiation: hb_hashmap_t<unsigned long, unsigned int, false>::item_t::set_real(bool)
Unexecuted instantiation: hb_hashmap_t<OT::hb_depend_context_t::recurse_key_t, bool, false>::item_t::set_real(bool)
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_set_t, false>::item_t::set_real(bool)
Unexecuted instantiation: hb_hashmap_t<OT::hb_depend_context_t::glyph_set_cache_key_t, unsigned int, false>::item_t::set_real(bool)
Unexecuted instantiation: hb_hashmap_t<OT::hb_depend_context_t::context_set_cache_key_t, unsigned int, false>::item_t::set_real(bool)
hb_hashmap_t<unsigned int, face_table_info_t, false>::item_t::set_real(bool)
Line
Count
Source
124
440k
    void set_real (bool is_real) { is_real_ = is_real; }
Unexecuted instantiation: hb_hashmap_t<unsigned int, unsigned int, false>::item_t::set_real(bool)
Unexecuted instantiation: hb_hashmap_t<hb_array_t<OT::NumType<true, unsigned int, 4u> const>, unsigned int, false>::item_t::set_real(bool)
Unexecuted instantiation: hb_hashmap_t<OT::SVG::svg_id_span_t, hb_pair_t<unsigned int, unsigned int>, false>::item_t::set_real(bool)
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_pair_t<unsigned int, int>, false>::item_t::set_real(bool)
hb_hashmap_t<unsigned int, hb::unique_ptr<hb_blob_t>, false>::item_t::set_real(bool)
Line
Count
Source
124
179k
    void set_real (bool is_real) { is_real_ = is_real; }
Unexecuted instantiation: hb_hashmap_t<graph::overflow_record_t, bool, false>::item_t::set_real(bool)
Unexecuted instantiation: hb_hashmap_t<unsigned int, graph::Lookup*, false>::item_t::set_real(bool)
Unexecuted instantiation: hb_hashmap_t<hb_array_t<char const>, unsigned int, true>::item_t::set_real(bool)
Unexecuted instantiation: hb_hashmap_t<hb_vector_t<bool, false> const*, unsigned int, false>::item_t::set_real(bool)
Unexecuted instantiation: hb_hashmap_t<hb_vector_t<bool, false> const*, hb_vector_t<unsigned char, false>, false>::item_t::set_real(bool)
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_pair_t<void const*, void const*>, false>::item_t::set_real(bool)
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_pair_t<double, double>, false>::item_t::set_real(bool)
Unexecuted instantiation: hb_hashmap_t<unsigned int, double, false>::item_t::set_real(bool)
Unexecuted instantiation: hb_hashmap_t<unsigned int, TripleDistances, false>::item_t::set_real(bool)
Unexecuted instantiation: hb_hashmap_t<unsigned int, contour_point_vector_t, false>::item_t::set_real(bool)
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_array_t<char const>, false>::item_t::set_real(bool)
Unexecuted instantiation: hb_hashmap_t<hb_vector_t<OT::HBFixed<OT::NumType<true, short, 2u>, 14u>, false> const*, unsigned int, false>::item_t::set_real(bool)
125
123M
    bool is_real () const { return is_real_; }
hb_hashmap_t<unsigned int, unsigned int, true>::item_t::is_real() const
Line
Count
Source
125
121M
    bool is_real () const { return is_real_; }
hb_hashmap_t<hb_serialize_context_t::object_t const*, unsigned int, false>::item_t::is_real() const
Line
Count
Source
125
188k
    bool is_real () const { return is_real_; }
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_vector_t<unsigned int, false>, false>::item_t::is_real() const
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb::shared_ptr<hb_set_t>, false>::item_t::is_real() const
Unexecuted instantiation: hb_hashmap_t<unsigned int, OT::Feature const*, false>::item_t::is_real() const
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb::unique_ptr<hb_set_t>, false>::item_t::is_real() const
Unexecuted instantiation: hb_hashmap_t<unsigned int, Triple, false>::item_t::is_real() const
Unexecuted instantiation: hb_hashmap_t<unsigned int, TripleDistances, false>::item_t::is_real() const
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_pair_t<unsigned int, int>, false>::item_t::is_real() const
Unexecuted instantiation: hb_hashmap_t<hb::shared_ptr<hb_map_t>, unsigned int, false>::item_t::is_real() const
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_pair_t<void const*, void const*>, false>::item_t::is_real() const
Unexecuted instantiation: hb_hashmap_t<hb_vector_t<OT::HBFixed<OT::NumType<true, short, 2u>, 14u>, false> const*, unsigned int, false>::item_t::is_real() const
Unexecuted instantiation: hb_hashmap_t<hb_hashmap_t<unsigned int, Triple, false> const*, unsigned int, false>::item_t::is_real() const
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_vector_t<int, false> const*, false>::item_t::is_real() const
Unexecuted instantiation: hb_hashmap_t<hb_vector_t<int, false> const*, unsigned int, false>::item_t::is_real() const
Unexecuted instantiation: hb_hashmap_t<hb_set_t const*, unsigned int, false>::item_t::is_real() const
Unexecuted instantiation: hb_hashmap_t<unsigned long, unsigned int, false>::item_t::is_real() const
Unexecuted instantiation: hb_hashmap_t<OT::hb_depend_context_t::recurse_key_t, bool, false>::item_t::is_real() const
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_set_t, false>::item_t::is_real() const
Unexecuted instantiation: hb_hashmap_t<OT::hb_depend_context_t::glyph_set_cache_key_t, unsigned int, false>::item_t::is_real() const
Unexecuted instantiation: hb_hashmap_t<OT::hb_depend_context_t::context_set_cache_key_t, unsigned int, false>::item_t::is_real() const
hb_hashmap_t<unsigned int, face_table_info_t, false>::item_t::is_real() const
Line
Count
Source
125
2.13M
    bool is_real () const { return is_real_; }
Unexecuted instantiation: hb_hashmap_t<unsigned int, unsigned int, false>::item_t::is_real() const
Unexecuted instantiation: hb_hashmap_t<hb_array_t<OT::NumType<true, unsigned int, 4u> const>, unsigned int, false>::item_t::is_real() const
Unexecuted instantiation: hb_hashmap_t<OT::SVG::svg_id_span_t, hb_pair_t<unsigned int, unsigned int>, false>::item_t::is_real() const
hb_hashmap_t<unsigned int, hb::unique_ptr<hb_blob_t>, false>::item_t::is_real() const
Line
Count
Source
125
212k
    bool is_real () const { return is_real_; }
Unexecuted instantiation: hb_hashmap_t<graph::overflow_record_t, bool, false>::item_t::is_real() const
Unexecuted instantiation: hb_hashmap_t<unsigned int, graph::Lookup*, false>::item_t::is_real() const
Unexecuted instantiation: hb_hashmap_t<hb_array_t<char const>, unsigned int, true>::item_t::is_real() const
Unexecuted instantiation: hb_hashmap_t<hb_vector_t<bool, false> const*, hb_vector_t<unsigned char, false>, false>::item_t::is_real() const
Unexecuted instantiation: hb_hashmap_t<hb_vector_t<bool, false> const*, unsigned int, false>::item_t::is_real() const
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_pair_t<double, double>, false>::item_t::is_real() const
Unexecuted instantiation: hb_hashmap_t<unsigned int, double, false>::item_t::is_real() const
Unexecuted instantiation: hb_hashmap_t<unsigned int, contour_point_vector_t, false>::item_t::is_real() const
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_array_t<char const>, false>::item_t::is_real() const
126
127
    template <bool v = minus_one,
128
        hb_enable_if (v == false)>
129
362k
    static inline const V& default_value () { return Null(V); };
_ZN12hb_hashmap_tIPKN22hb_serialize_context_t8object_tEjLb0EE6item_t13default_valueILb0ETnPN12hb_enable_ifIXeqT_Lb0EEvE4typeELPv0EEERKjv
Line
Count
Source
129
101k
    static inline const V& default_value () { return Null(V); };
Unexecuted instantiation: _ZN12hb_hashmap_tIjN2hb10unique_ptrI8hb_set_tEELb0EE6item_t13default_valueILb0ETnPN12hb_enable_ifIXeqT_Lb0EEvE4typeELPv0EEERKS3_v
Unexecuted instantiation: _ZN12hb_hashmap_tIjN2hb10shared_ptrI8hb_set_tEELb0EE6item_t13default_valueILb0ETnPN12hb_enable_ifIXeqT_Lb0EEvE4typeELPv0EEERKS3_v
Unexecuted instantiation: _ZN12hb_hashmap_tIj15TripleDistancesLb0EE6item_t13default_valueILb0ETnPN12hb_enable_ifIXeqT_Lb0EEvE4typeELPv0EEERKS0_v
Unexecuted instantiation: _ZN12hb_hashmap_tIj6TripleLb0EE6item_t13default_valueILb0ETnPN12hb_enable_ifIXeqT_Lb0EEvE4typeELPv0EEERKS0_v
_ZN12hb_hashmap_tIj17face_table_info_tLb0EE6item_t13default_valueILb0ETnPN12hb_enable_ifIXeqT_Lb0EEvE4typeELPv0EEERKS0_v
Line
Count
Source
129
261k
    static inline const V& default_value () { return Null(V); };
Unexecuted instantiation: _ZN12hb_hashmap_tIjN2hb10unique_ptrI9hb_blob_tEELb0EE6item_t13default_valueILb0ETnPN12hb_enable_ifIXeqT_Lb0EEvE4typeELPv0EEERKS3_v
Unexecuted instantiation: _ZN12hb_hashmap_tIjPN5graph6LookupELb0EE6item_t13default_valueILb0ETnPN12hb_enable_ifIXeqT_Lb0EEvE4typeELPv0EEERKS2_v
Unexecuted instantiation: _ZN12hb_hashmap_tIj8hb_set_tLb0EE6item_t13default_valueILb0ETnPN12hb_enable_ifIXeqT_Lb0EEvE4typeELPv0EEERKS0_v
Unexecuted instantiation: _ZN12hb_hashmap_tIjjLb0EE6item_t13default_valueILb0ETnPN12hb_enable_ifIXeqT_Lb0EEvE4typeELPv0EEERKjv
Unexecuted instantiation: _ZN12hb_hashmap_tIj10hb_array_tIKcELb0EE6item_t13default_valueILb0ETnPN12hb_enable_ifIXeqT_Lb0EEvE4typeELPv0EEERKS2_v
Unexecuted instantiation: _ZN12hb_hashmap_tIj9hb_pair_tIjiELb0EE6item_t13default_valueILb0ETnPN12hb_enable_ifIXeqT_Lb0EEvE4typeELPv0EEERKS1_v
130
    template <bool v = minus_one,
131
        hb_enable_if (v == true)>
132
    static inline const V& default_value ()
133
92
    {
134
92
      static_assert (hb_is_same (V, hb_codepoint_t), "");
135
92
      return minus_1;
136
92
    };
_ZN12hb_hashmap_tIjjLb1EE6item_t13default_valueILb1ETnPN12hb_enable_ifIXeqT_Lb1EEvE4typeELPv0EEERKjv
Line
Count
Source
133
92
    {
134
92
      static_assert (hb_is_same (V, hb_codepoint_t), "");
135
92
      return minus_1;
136
92
    };
Unexecuted instantiation: _ZN12hb_hashmap_tI10hb_array_tIKcEjLb1EE6item_t13default_valueILb1ETnPN12hb_enable_ifIXeqT_Lb1EEvE4typeELPv0EEERKjv
137
138
57.7M
    bool operator == (const K &o) const { return hb_deref (key) == hb_deref (o); }
hb_hashmap_t<unsigned int, unsigned int, true>::item_t::operator==(unsigned int const&) const
Line
Count
Source
138
57.1M
    bool operator == (const K &o) const { return hb_deref (key) == hb_deref (o); }
hb_hashmap_t<hb_serialize_context_t::object_t const*, unsigned int, false>::item_t::operator==(hb_serialize_context_t::object_t const* const&) const
Line
Count
Source
138
13.0k
    bool operator == (const K &o) const { return hb_deref (key) == hb_deref (o); }
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_vector_t<unsigned int, false>, false>::item_t::operator==(unsigned int const&) const
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb::shared_ptr<hb_set_t>, false>::item_t::operator==(unsigned int const&) const
Unexecuted instantiation: hb_hashmap_t<unsigned int, OT::Feature const*, false>::item_t::operator==(unsigned int const&) const
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb::unique_ptr<hb_set_t>, false>::item_t::operator==(unsigned int const&) const
Unexecuted instantiation: hb_hashmap_t<unsigned int, Triple, false>::item_t::operator==(unsigned int const&) const
Unexecuted instantiation: hb_hashmap_t<unsigned int, TripleDistances, false>::item_t::operator==(unsigned int const&) const
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_pair_t<unsigned int, int>, false>::item_t::operator==(unsigned int const&) const
Unexecuted instantiation: hb_hashmap_t<hb::shared_ptr<hb_map_t>, unsigned int, false>::item_t::operator==(hb::shared_ptr<hb_map_t> const&) const
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_pair_t<void const*, void const*>, false>::item_t::operator==(unsigned int const&) const
Unexecuted instantiation: hb_hashmap_t<hb_vector_t<OT::HBFixed<OT::NumType<true, short, 2u>, 14u>, false> const*, unsigned int, false>::item_t::operator==(hb_vector_t<OT::HBFixed<OT::NumType<true, short, 2u>, 14u>, false> const* const&) const
Unexecuted instantiation: hb_hashmap_t<hb_hashmap_t<unsigned int, Triple, false> const*, unsigned int, false>::item_t::operator==(hb_hashmap_t<unsigned int, Triple, false> const* const&) const
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_vector_t<int, false> const*, false>::item_t::operator==(unsigned int const&) const
Unexecuted instantiation: hb_hashmap_t<hb_vector_t<int, false> const*, unsigned int, false>::item_t::operator==(hb_vector_t<int, false> const* const&) const
Unexecuted instantiation: hb_hashmap_t<hb_set_t const*, unsigned int, false>::item_t::operator==(hb_set_t const* const&) const
Unexecuted instantiation: hb_hashmap_t<unsigned long, unsigned int, false>::item_t::operator==(unsigned long const&) const
Unexecuted instantiation: hb_hashmap_t<OT::hb_depend_context_t::recurse_key_t, bool, false>::item_t::operator==(OT::hb_depend_context_t::recurse_key_t const&) const
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_set_t, false>::item_t::operator==(unsigned int const&) const
Unexecuted instantiation: hb_hashmap_t<OT::hb_depend_context_t::glyph_set_cache_key_t, unsigned int, false>::item_t::operator==(OT::hb_depend_context_t::glyph_set_cache_key_t const&) const
Unexecuted instantiation: hb_hashmap_t<OT::hb_depend_context_t::context_set_cache_key_t, unsigned int, false>::item_t::operator==(OT::hb_depend_context_t::context_set_cache_key_t const&) const
hb_hashmap_t<unsigned int, face_table_info_t, false>::item_t::operator==(unsigned int const&) const
Line
Count
Source
138
407k
    bool operator == (const K &o) const { return hb_deref (key) == hb_deref (o); }
Unexecuted instantiation: hb_hashmap_t<unsigned int, unsigned int, false>::item_t::operator==(unsigned int const&) const
Unexecuted instantiation: hb_hashmap_t<hb_array_t<OT::NumType<true, unsigned int, 4u> const>, unsigned int, false>::item_t::operator==(hb_array_t<OT::NumType<true, unsigned int, 4u> const> const&) const
Unexecuted instantiation: hb_hashmap_t<OT::SVG::svg_id_span_t, hb_pair_t<unsigned int, unsigned int>, false>::item_t::operator==(OT::SVG::svg_id_span_t const&) const
hb_hashmap_t<unsigned int, hb::unique_ptr<hb_blob_t>, false>::item_t::operator==(unsigned int const&) const
Line
Count
Source
138
179k
    bool operator == (const K &o) const { return hb_deref (key) == hb_deref (o); }
Unexecuted instantiation: hb_hashmap_t<graph::overflow_record_t, bool, false>::item_t::operator==(graph::overflow_record_t const&) const
Unexecuted instantiation: hb_hashmap_t<unsigned int, graph::Lookup*, false>::item_t::operator==(unsigned int const&) const
Unexecuted instantiation: hb_hashmap_t<hb_array_t<char const>, unsigned int, true>::item_t::operator==(hb_array_t<char const> const&) const
Unexecuted instantiation: hb_hashmap_t<hb_vector_t<bool, false> const*, hb_vector_t<unsigned char, false>, false>::item_t::operator==(hb_vector_t<bool, false> const* const&) const
Unexecuted instantiation: hb_hashmap_t<hb_vector_t<bool, false> const*, unsigned int, false>::item_t::operator==(hb_vector_t<bool, false> const* const&) const
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_pair_t<double, double>, false>::item_t::operator==(unsigned int const&) const
Unexecuted instantiation: hb_hashmap_t<unsigned int, double, false>::item_t::operator==(unsigned int const&) const
Unexecuted instantiation: hb_hashmap_t<unsigned int, contour_point_vector_t, false>::item_t::operator==(unsigned int const&) const
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_array_t<char const>, false>::item_t::operator==(unsigned int const&) const
139
    bool operator == (const item_t &o) const { return *this == o.key; }
140
195k
    hb_pair_t<K, V> get_pair() const { return hb_pair_t<K, V> (key, value); }
Unexecuted instantiation: hb_hashmap_t<unsigned int, unsigned int, true>::item_t::get_pair() const
Unexecuted instantiation: hb_hashmap_t<unsigned int, Triple, false>::item_t::get_pair() const
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_vector_t<int, false> const*, false>::item_t::get_pair() const
hb_hashmap_t<unsigned int, face_table_info_t, false>::item_t::get_pair() const
Line
Count
Source
140
195k
    hb_pair_t<K, V> get_pair() const { return hb_pair_t<K, V> (key, value); }
Unexecuted instantiation: hb_hashmap_t<unsigned int, double, false>::item_t::get_pair() const
Unexecuted instantiation: hb_hashmap_t<hb_vector_t<OT::HBFixed<OT::NumType<true, short, 2u>, 14u>, false> const*, unsigned int, false>::item_t::get_pair() const
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_pair_t<unsigned int, int>, false>::item_t::get_pair() const
Unexecuted instantiation: hb_hashmap_t<unsigned int, unsigned int, false>::item_t::get_pair() const
141
0
    hb_pair_t<const K &, V &> get_pair_ref() { return hb_pair_t<const K &, V &> (key, value); }
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_pair_t<unsigned int, int>, false>::item_t::get_pair_ref()
Unexecuted instantiation: hb_hashmap_t<unsigned int, unsigned int, true>::item_t::get_pair_ref()
Unexecuted instantiation: hb_hashmap_t<hb_vector_t<bool, false> const*, hb_vector_t<unsigned char, false>, false>::item_t::get_pair_ref()
142
143
    uint32_t total_hash () const
144
0
    { return (hash * 31u) + hb_hash (value); }
Unexecuted instantiation: hb_hashmap_t<unsigned int, unsigned int, true>::item_t::total_hash() const
Unexecuted instantiation: hb_hashmap_t<unsigned int, Triple, false>::item_t::total_hash() const
145
146
    static constexpr bool is_trivially_constructible = (hb_is_trivially_constructible(K) && hb_is_trivially_constructible(V));
147
  };
148
149
  hb_object_header_t header;
150
  bool successful; /* Allocations successful */
151
  unsigned short max_chain_length;
152
  unsigned int population; /* Not including tombstones. */
153
  unsigned int occupancy; /* Including tombstones. */
154
  unsigned int mask;
155
  unsigned int prime;
156
  item_t *items;
157
158
  friend void swap (hb_hashmap_t& a, hb_hashmap_t& b) noexcept
159
0
  {
160
0
    if (unlikely (!a.successful || !b.successful))
161
0
      return;
162
0
    hb_swap (a.max_chain_length, b.max_chain_length);
163
0
    hb_swap (a.population, b.population);
164
0
    hb_swap (a.occupancy, b.occupancy);
165
0
    hb_swap (a.mask, b.mask);
166
0
    hb_swap (a.prime, b.prime);
167
0
    hb_swap (a.items, b.items);
168
0
  }
Unexecuted instantiation: swap(hb_hashmap_t<unsigned int, unsigned int, true>&, hb_hashmap_t<unsigned int, unsigned int, true>&)
Unexecuted instantiation: swap(hb_hashmap_t<unsigned int, Triple, false>&, hb_hashmap_t<unsigned int, Triple, false>&)
Unexecuted instantiation: swap(hb_hashmap_t<hb_vector_t<bool, false> const*, hb_vector_t<unsigned char, false>, false>&, hb_hashmap_t<hb_vector_t<bool, false> const*, hb_vector_t<unsigned char, false>, false>&)
Unexecuted instantiation: swap(hb_hashmap_t<hb_vector_t<bool, false> const*, unsigned int, false>&, hb_hashmap_t<hb_vector_t<bool, false> const*, unsigned int, false>&)
Unexecuted instantiation: swap(hb_hashmap_t<unsigned int, unsigned int, false>&, hb_hashmap_t<unsigned int, unsigned int, false>&)
Unexecuted instantiation: swap(hb_hashmap_t<unsigned int, hb_set_t, false>&, hb_hashmap_t<unsigned int, hb_set_t, false>&)
Unexecuted instantiation: swap(hb_hashmap_t<unsigned int, hb_pair_t<unsigned int, int>, false>&, hb_hashmap_t<unsigned int, hb_pair_t<unsigned int, int>, false>&)
Unexecuted instantiation: swap(hb_hashmap_t<unsigned int, graph::Lookup*, false>&, hb_hashmap_t<unsigned int, graph::Lookup*, false>&)
Unexecuted instantiation: swap(hb_hashmap_t<unsigned int, hb_vector_t<unsigned int, false>, false>&, hb_hashmap_t<unsigned int, hb_vector_t<unsigned int, false>, false>&)
169
  void init ()
170
941k
  {
171
941k
    hb_object_init (this);
172
173
941k
    successful = true;
174
941k
    max_chain_length = 0;
175
941k
    population = occupancy = 0;
176
941k
    mask = 0;
177
941k
    prime = 0;
178
941k
    items = nullptr;
179
941k
  }
hb_hashmap_t<unsigned int, unsigned int, true>::init()
Line
Count
Source
170
305k
  {
171
305k
    hb_object_init (this);
172
173
305k
    successful = true;
174
305k
    max_chain_length = 0;
175
305k
    population = occupancy = 0;
176
305k
    mask = 0;
177
305k
    prime = 0;
178
305k
    items = nullptr;
179
305k
  }
hb_hashmap_t<hb_serialize_context_t::object_t const*, unsigned int, false>::init()
Line
Count
Source
170
228k
  {
171
228k
    hb_object_init (this);
172
173
228k
    successful = true;
174
228k
    max_chain_length = 0;
175
228k
    population = occupancy = 0;
176
228k
    mask = 0;
177
228k
    prime = 0;
178
228k
    items = nullptr;
179
228k
  }
hb_hashmap_t<unsigned int, hb::unique_ptr<hb_blob_t>, false>::init()
Line
Count
Source
170
16.3k
  {
171
16.3k
    hb_object_init (this);
172
173
16.3k
    successful = true;
174
16.3k
    max_chain_length = 0;
175
16.3k
    population = occupancy = 0;
176
16.3k
    mask = 0;
177
16.3k
    prime = 0;
178
16.3k
    items = nullptr;
179
16.3k
  }
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_vector_t<unsigned int, false>, false>::init()
hb_hashmap_t<unsigned int, Triple, false>::init()
Line
Count
Source
170
81.5k
  {
171
81.5k
    hb_object_init (this);
172
173
81.5k
    successful = true;
174
81.5k
    max_chain_length = 0;
175
81.5k
    population = occupancy = 0;
176
81.5k
    mask = 0;
177
81.5k
    prime = 0;
178
81.5k
    items = nullptr;
179
81.5k
  }
Unexecuted instantiation: hb_hashmap_t<hb_vector_t<bool, false> const*, hb_vector_t<unsigned char, false>, false>::init()
Unexecuted instantiation: hb_hashmap_t<hb_vector_t<bool, false> const*, unsigned int, false>::init()
Unexecuted instantiation: hb_hashmap_t<hb_hashmap_t<unsigned int, Triple, false> const*, unsigned int, false>::init()
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_vector_t<int, false> const*, false>::init()
Unexecuted instantiation: hb_hashmap_t<hb_vector_t<int, false> const*, unsigned int, false>::init()
Unexecuted instantiation: hb_hashmap_t<hb_set_t const*, unsigned int, false>::init()
Unexecuted instantiation: hb_hashmap_t<unsigned long, unsigned int, false>::init()
Unexecuted instantiation: hb_hashmap_t<OT::hb_depend_context_t::recurse_key_t, bool, false>::init()
Unexecuted instantiation: hb_hashmap_t<OT::hb_depend_context_t::glyph_set_cache_key_t, unsigned int, false>::init()
Unexecuted instantiation: hb_hashmap_t<OT::hb_depend_context_t::context_set_cache_key_t, unsigned int, false>::init()
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_set_t, false>::init()
hb_hashmap_t<unsigned int, hb::unique_ptr<hb_set_t>, false>::init()
Line
Count
Source
170
32.6k
  {
171
32.6k
    hb_object_init (this);
172
173
32.6k
    successful = true;
174
32.6k
    max_chain_length = 0;
175
32.6k
    population = occupancy = 0;
176
32.6k
    mask = 0;
177
32.6k
    prime = 0;
178
32.6k
    items = nullptr;
179
32.6k
  }
hb_hashmap_t<unsigned int, face_table_info_t, false>::init()
Line
Count
Source
170
16.3k
  {
171
16.3k
    hb_object_init (this);
172
173
16.3k
    successful = true;
174
16.3k
    max_chain_length = 0;
175
16.3k
    population = occupancy = 0;
176
16.3k
    mask = 0;
177
16.3k
    prime = 0;
178
16.3k
    items = nullptr;
179
16.3k
  }
Unexecuted instantiation: hb_hashmap_t<unsigned int, unsigned int, false>::init()
Unexecuted instantiation: hb_hashmap_t<hb_array_t<OT::NumType<true, unsigned int, 4u> const>, unsigned int, false>::init()
Unexecuted instantiation: hb_hashmap_t<OT::SVG::svg_id_span_t, hb_pair_t<unsigned int, unsigned int>, false>::init()
Unexecuted instantiation: hb_hashmap_t<graph::overflow_record_t, bool, false>::init()
Unexecuted instantiation: hb_hashmap_t<hb_array_t<char const>, unsigned int, true>::init()
hb_hashmap_t<unsigned int, hb::shared_ptr<hb_set_t>, false>::init()
Line
Count
Source
170
65.2k
  {
171
65.2k
    hb_object_init (this);
172
173
65.2k
    successful = true;
174
65.2k
    max_chain_length = 0;
175
65.2k
    population = occupancy = 0;
176
65.2k
    mask = 0;
177
65.2k
    prime = 0;
178
65.2k
    items = nullptr;
179
65.2k
  }
hb_hashmap_t<unsigned int, OT::Feature const*, false>::init()
Line
Count
Source
170
32.6k
  {
171
32.6k
    hb_object_init (this);
172
173
32.6k
    successful = true;
174
32.6k
    max_chain_length = 0;
175
32.6k
    population = occupancy = 0;
176
32.6k
    mask = 0;
177
32.6k
    prime = 0;
178
32.6k
    items = nullptr;
179
32.6k
  }
hb_hashmap_t<unsigned int, hb_pair_t<void const*, void const*>, false>::init()
Line
Count
Source
170
32.6k
  {
171
32.6k
    hb_object_init (this);
172
173
32.6k
    successful = true;
174
32.6k
    max_chain_length = 0;
175
32.6k
    population = occupancy = 0;
176
32.6k
    mask = 0;
177
32.6k
    prime = 0;
178
32.6k
    items = nullptr;
179
32.6k
  }
hb_hashmap_t<unsigned int, hb_pair_t<unsigned int, int>, false>::init()
Line
Count
Source
170
81.5k
  {
171
81.5k
    hb_object_init (this);
172
173
81.5k
    successful = true;
174
81.5k
    max_chain_length = 0;
175
81.5k
    population = occupancy = 0;
176
81.5k
    mask = 0;
177
81.5k
    prime = 0;
178
81.5k
    items = nullptr;
179
81.5k
  }
hb_hashmap_t<unsigned int, TripleDistances, false>::init()
Line
Count
Source
170
16.3k
  {
171
16.3k
    hb_object_init (this);
172
173
16.3k
    successful = true;
174
16.3k
    max_chain_length = 0;
175
16.3k
    population = occupancy = 0;
176
16.3k
    mask = 0;
177
16.3k
    prime = 0;
178
16.3k
    items = nullptr;
179
16.3k
  }
hb_hashmap_t<unsigned int, double, false>::init()
Line
Count
Source
170
16.3k
  {
171
16.3k
    hb_object_init (this);
172
173
16.3k
    successful = true;
174
16.3k
    max_chain_length = 0;
175
16.3k
    population = occupancy = 0;
176
16.3k
    mask = 0;
177
16.3k
    prime = 0;
178
16.3k
    items = nullptr;
179
16.3k
  }
hb_hashmap_t<unsigned int, contour_point_vector_t, false>::init()
Line
Count
Source
170
16.3k
  {
171
16.3k
    hb_object_init (this);
172
173
16.3k
    successful = true;
174
16.3k
    max_chain_length = 0;
175
16.3k
    population = occupancy = 0;
176
16.3k
    mask = 0;
177
16.3k
    prime = 0;
178
16.3k
    items = nullptr;
179
16.3k
  }
Unexecuted instantiation: hb_hashmap_t<hb::shared_ptr<hb_map_t>, unsigned int, false>::init()
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_pair_t<double, double>, false>::init()
Unexecuted instantiation: hb_hashmap_t<hb_vector_t<OT::HBFixed<OT::NumType<true, short, 2u>, 14u>, false> const*, unsigned int, false>::init()
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_array_t<char const>, false>::init()
Unexecuted instantiation: hb_hashmap_t<unsigned int, graph::Lookup*, false>::init()
180
  void fini ()
181
1.05M
  {
182
1.05M
    hb_object_fini (this);
183
184
1.05M
    if (likely (items))
185
158k
    {
186
158k
      unsigned size = mask + 1;
187
207M
      for (unsigned i = 0; i < size; i++)
188
207M
  items[i].~item_t ();
189
158k
      hb_free (items);
190
158k
      items = nullptr;
191
158k
    }
192
1.05M
    population = occupancy = 0;
193
1.05M
  }
hb_hashmap_t<unsigned int, unsigned int, true>::fini()
Line
Count
Source
181
305k
  {
182
305k
    hb_object_fini (this);
183
184
305k
    if (likely (items))
185
109k
    {
186
109k
      unsigned size = mask + 1;
187
206M
      for (unsigned i = 0; i < size; i++)
188
206M
  items[i].~item_t ();
189
109k
      hb_free (items);
190
109k
      items = nullptr;
191
109k
    }
192
305k
    population = occupancy = 0;
193
305k
  }
hb_hashmap_t<hb_serialize_context_t::object_t const*, unsigned int, false>::fini()
Line
Count
Source
181
342k
  {
182
342k
    hb_object_fini (this);
183
184
342k
    if (likely (items))
185
16.3k
    {
186
16.3k
      unsigned size = mask + 1;
187
277k
      for (unsigned i = 0; i < size; i++)
188
261k
  items[i].~item_t ();
189
16.3k
      hb_free (items);
190
16.3k
      items = nullptr;
191
16.3k
    }
192
342k
    population = occupancy = 0;
193
342k
  }
hb_hashmap_t<unsigned int, Triple, false>::fini()
Line
Count
Source
181
81.5k
  {
182
81.5k
    hb_object_fini (this);
183
184
81.5k
    if (likely (items))
185
0
    {
186
0
      unsigned size = mask + 1;
187
0
      for (unsigned i = 0; i < size; i++)
188
0
  items[i].~item_t ();
189
0
      hb_free (items);
190
0
      items = nullptr;
191
0
    }
192
81.5k
    population = occupancy = 0;
193
81.5k
  }
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_vector_t<unsigned int, false>, false>::fini()
hb_hashmap_t<unsigned int, hb::unique_ptr<hb_blob_t>, false>::fini()
Line
Count
Source
181
16.3k
  {
182
16.3k
    hb_object_fini (this);
183
184
16.3k
    if (likely (items))
185
16.3k
    {
186
16.3k
      unsigned size = mask + 1;
187
277k
      for (unsigned i = 0; i < size; i++)
188
261k
  items[i].~item_t ();
189
16.3k
      hb_free (items);
190
16.3k
      items = nullptr;
191
16.3k
    }
192
16.3k
    population = occupancy = 0;
193
16.3k
  }
Unexecuted instantiation: hb_hashmap_t<hb_vector_t<bool, false> const*, hb_vector_t<unsigned char, false>, false>::fini()
Unexecuted instantiation: hb_hashmap_t<hb_vector_t<bool, false> const*, unsigned int, false>::fini()
Unexecuted instantiation: hb_hashmap_t<hb_hashmap_t<unsigned int, Triple, false> const*, unsigned int, false>::fini()
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_vector_t<int, false> const*, false>::fini()
Unexecuted instantiation: hb_hashmap_t<hb_vector_t<int, false> const*, unsigned int, false>::fini()
Unexecuted instantiation: hb_hashmap_t<hb_set_t const*, unsigned int, false>::fini()
Unexecuted instantiation: hb_hashmap_t<unsigned long, unsigned int, false>::fini()
Unexecuted instantiation: hb_hashmap_t<OT::hb_depend_context_t::recurse_key_t, bool, false>::fini()
Unexecuted instantiation: hb_hashmap_t<OT::hb_depend_context_t::glyph_set_cache_key_t, unsigned int, false>::fini()
Unexecuted instantiation: hb_hashmap_t<OT::hb_depend_context_t::context_set_cache_key_t, unsigned int, false>::fini()
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_set_t, false>::fini()
hb_hashmap_t<unsigned int, hb::unique_ptr<hb_set_t>, false>::fini()
Line
Count
Source
181
32.6k
  {
182
32.6k
    hb_object_fini (this);
183
184
32.6k
    if (likely (items))
185
0
    {
186
0
      unsigned size = mask + 1;
187
0
      for (unsigned i = 0; i < size; i++)
188
0
  items[i].~item_t ();
189
0
      hb_free (items);
190
0
      items = nullptr;
191
0
    }
192
32.6k
    population = occupancy = 0;
193
32.6k
  }
hb_hashmap_t<unsigned int, face_table_info_t, false>::fini()
Line
Count
Source
181
16.3k
  {
182
16.3k
    hb_object_fini (this);
183
184
16.3k
    if (likely (items))
185
16.3k
    {
186
16.3k
      unsigned size = mask + 1;
187
538k
      for (unsigned i = 0; i < size; i++)
188
522k
  items[i].~item_t ();
189
16.3k
      hb_free (items);
190
16.3k
      items = nullptr;
191
16.3k
    }
192
16.3k
    population = occupancy = 0;
193
16.3k
  }
Unexecuted instantiation: hb_hashmap_t<unsigned int, unsigned int, false>::fini()
Unexecuted instantiation: hb_hashmap_t<OT::SVG::svg_id_span_t, hb_pair_t<unsigned int, unsigned int>, false>::fini()
Unexecuted instantiation: hb_hashmap_t<hb_array_t<OT::NumType<true, unsigned int, 4u> const>, unsigned int, false>::fini()
Unexecuted instantiation: hb_hashmap_t<graph::overflow_record_t, bool, false>::fini()
Unexecuted instantiation: hb_hashmap_t<unsigned int, graph::Lookup*, false>::fini()
Unexecuted instantiation: hb_hashmap_t<hb_array_t<char const>, unsigned int, true>::fini()
hb_hashmap_t<unsigned int, hb::shared_ptr<hb_set_t>, false>::fini()
Line
Count
Source
181
65.2k
  {
182
65.2k
    hb_object_fini (this);
183
184
65.2k
    if (likely (items))
185
0
    {
186
0
      unsigned size = mask + 1;
187
0
      for (unsigned i = 0; i < size; i++)
188
0
  items[i].~item_t ();
189
0
      hb_free (items);
190
0
      items = nullptr;
191
0
    }
192
65.2k
    population = occupancy = 0;
193
65.2k
  }
hb_hashmap_t<unsigned int, OT::Feature const*, false>::fini()
Line
Count
Source
181
32.6k
  {
182
32.6k
    hb_object_fini (this);
183
184
32.6k
    if (likely (items))
185
0
    {
186
0
      unsigned size = mask + 1;
187
0
      for (unsigned i = 0; i < size; i++)
188
0
  items[i].~item_t ();
189
0
      hb_free (items);
190
0
      items = nullptr;
191
0
    }
192
32.6k
    population = occupancy = 0;
193
32.6k
  }
hb_hashmap_t<unsigned int, hb_pair_t<void const*, void const*>, false>::fini()
Line
Count
Source
181
32.6k
  {
182
32.6k
    hb_object_fini (this);
183
184
32.6k
    if (likely (items))
185
0
    {
186
0
      unsigned size = mask + 1;
187
0
      for (unsigned i = 0; i < size; i++)
188
0
  items[i].~item_t ();
189
0
      hb_free (items);
190
0
      items = nullptr;
191
0
    }
192
32.6k
    population = occupancy = 0;
193
32.6k
  }
hb_hashmap_t<unsigned int, hb_pair_t<unsigned int, int>, false>::fini()
Line
Count
Source
181
81.5k
  {
182
81.5k
    hb_object_fini (this);
183
184
81.5k
    if (likely (items))
185
0
    {
186
0
      unsigned size = mask + 1;
187
0
      for (unsigned i = 0; i < size; i++)
188
0
  items[i].~item_t ();
189
0
      hb_free (items);
190
0
      items = nullptr;
191
0
    }
192
81.5k
    population = occupancy = 0;
193
81.5k
  }
hb_hashmap_t<unsigned int, TripleDistances, false>::fini()
Line
Count
Source
181
16.3k
  {
182
16.3k
    hb_object_fini (this);
183
184
16.3k
    if (likely (items))
185
0
    {
186
0
      unsigned size = mask + 1;
187
0
      for (unsigned i = 0; i < size; i++)
188
0
  items[i].~item_t ();
189
0
      hb_free (items);
190
0
      items = nullptr;
191
0
    }
192
16.3k
    population = occupancy = 0;
193
16.3k
  }
hb_hashmap_t<unsigned int, double, false>::fini()
Line
Count
Source
181
16.3k
  {
182
16.3k
    hb_object_fini (this);
183
184
16.3k
    if (likely (items))
185
0
    {
186
0
      unsigned size = mask + 1;
187
0
      for (unsigned i = 0; i < size; i++)
188
0
  items[i].~item_t ();
189
0
      hb_free (items);
190
0
      items = nullptr;
191
0
    }
192
16.3k
    population = occupancy = 0;
193
16.3k
  }
hb_hashmap_t<unsigned int, contour_point_vector_t, false>::fini()
Line
Count
Source
181
16.3k
  {
182
16.3k
    hb_object_fini (this);
183
184
16.3k
    if (likely (items))
185
0
    {
186
0
      unsigned size = mask + 1;
187
0
      for (unsigned i = 0; i < size; i++)
188
0
  items[i].~item_t ();
189
0
      hb_free (items);
190
0
      items = nullptr;
191
0
    }
192
16.3k
    population = occupancy = 0;
193
16.3k
  }
Unexecuted instantiation: hb_hashmap_t<hb::shared_ptr<hb_map_t>, unsigned int, false>::fini()
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_pair_t<double, double>, false>::fini()
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_array_t<char const>, false>::fini()
Unexecuted instantiation: hb_hashmap_t<hb_vector_t<OT::HBFixed<OT::NumType<true, short, 2u>, 14u>, false> const*, unsigned int, false>::fini()
194
195
  hb_hashmap_t& reset ()
196
16.3k
  {
197
16.3k
    successful = true;
198
16.3k
    clear ();
199
16.3k
    return *this;
200
16.3k
  }
Unexecuted instantiation: hb_hashmap_t<unsigned int, unsigned int, true>::reset()
hb_hashmap_t<unsigned int, Triple, false>::reset()
Line
Count
Source
196
16.3k
  {
197
16.3k
    successful = true;
198
16.3k
    clear ();
199
16.3k
    return *this;
200
16.3k
  }
Unexecuted instantiation: hb_hashmap_t<unsigned int, unsigned int, false>::reset()
201
202
982k
  bool in_error () const { return !successful; }
hb_hashmap_t<hb_serialize_context_t::object_t const*, unsigned int, false>::in_error() const
Line
Count
Source
202
231k
  bool in_error () const { return !successful; }
hb_hashmap_t<unsigned int, Triple, false>::in_error() const
Line
Count
Source
202
97.8k
  bool in_error () const { return !successful; }
hb_hashmap_t<unsigned int, unsigned int, true>::in_error() const
Line
Count
Source
202
228k
  bool in_error () const { return !successful; }
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_vector_t<unsigned int, false>, false>::in_error() const
hb_hashmap_t<unsigned int, hb::unique_ptr<hb_blob_t>, false>::in_error() const
Line
Count
Source
202
114k
  bool in_error () const { return !successful; }
Unexecuted instantiation: hb_hashmap_t<hb_hashmap_t<unsigned int, Triple, false> const*, unsigned int, false>::in_error() const
Unexecuted instantiation: hb_hashmap_t<hb_vector_t<int, false> const*, unsigned int, false>::in_error() const
hb_hashmap_t<unsigned int, hb::unique_ptr<hb_set_t>, false>::in_error() const
Line
Count
Source
202
32.6k
  bool in_error () const { return !successful; }
hb_hashmap_t<unsigned int, face_table_info_t, false>::in_error() const
Line
Count
Source
202
16.3k
  bool in_error () const { return !successful; }
Unexecuted instantiation: hb_hashmap_t<unsigned int, unsigned int, false>::in_error() const
Unexecuted instantiation: hb_hashmap_t<graph::overflow_record_t, bool, false>::in_error() const
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_set_t, false>::in_error() const
Unexecuted instantiation: hb_hashmap_t<unsigned int, graph::Lookup*, false>::in_error() const
hb_hashmap_t<unsigned int, hb::shared_ptr<hb_set_t>, false>::in_error() const
Line
Count
Source
202
65.2k
  bool in_error () const { return !successful; }
hb_hashmap_t<unsigned int, OT::Feature const*, false>::in_error() const
Line
Count
Source
202
32.6k
  bool in_error () const { return !successful; }
hb_hashmap_t<unsigned int, hb_pair_t<void const*, void const*>, false>::in_error() const
Line
Count
Source
202
32.6k
  bool in_error () const { return !successful; }
hb_hashmap_t<unsigned int, hb_pair_t<unsigned int, int>, false>::in_error() const
Line
Count
Source
202
81.5k
  bool in_error () const { return !successful; }
hb_hashmap_t<unsigned int, TripleDistances, false>::in_error() const
Line
Count
Source
202
16.3k
  bool in_error () const { return !successful; }
hb_hashmap_t<unsigned int, double, false>::in_error() const
Line
Count
Source
202
16.3k
  bool in_error () const { return !successful; }
hb_hashmap_t<unsigned int, contour_point_vector_t, false>::in_error() const
Line
Count
Source
202
16.3k
  bool in_error () const { return !successful; }
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_array_t<char const>, false>::in_error() const
Unexecuted instantiation: hb_hashmap_t<hb_vector_t<OT::HBFixed<OT::NumType<true, short, 2u>, 14u>, false> const*, unsigned int, false>::in_error() const
203
204
  bool alloc (unsigned new_population = 0)
205
442k
  {
206
442k
    if (unlikely (!successful)) return false;
207
442k
    if (unlikely (population > 0x3FFFFFFFu || new_population > 0x3FFFFFFFu))
208
0
    {
209
      // Population sizes >0x3FFFFFFF will result in power
210
      // being larger than 31, which in turn leads to a new size
211
      // that overflows u32.
212
0
      successful = false;
213
0
      return false;
214
0
    }
215
216
442k
    if (new_population != 0 && (new_population + new_population / 2) < mask) return true;
217
218
410k
    unsigned int power = hb_bit_storage (hb_max (hb_max ((unsigned) population, new_population) * 2, 4u));
219
410k
    unsigned int new_size = 1u << power;
220
410k
    item_t *new_items = (item_t *) hb_malloc2 ((size_t) new_size, sizeof (item_t));
221
410k
    if (unlikely (!new_items))
222
0
    {
223
0
      successful = false;
224
0
      return false;
225
0
    }
226
410k
    if (!item_t::is_trivially_constructible)
227
32.6k
      for (auto &_ : hb_iter (new_items, new_size))
228
391k
  new (&_) item_t ();
229
377k
    else
230
377k
      hb_memset (new_items, 0, (size_t) new_size * sizeof (item_t));
231
232
410k
    unsigned int old_size = size ();
233
410k
    item_t *old_items = items;
234
235
    /* Switch to new, empty, array. */
236
410k
    population = occupancy = 0;
237
410k
    mask = new_size - 1;
238
410k
    prime = prime_for (power);
239
410k
    max_chain_length = power * 2;
240
410k
    items = new_items;
241
242
    /* Insert back old items. */
243
68.7M
    for (unsigned int i = 0; i < old_size; i++)
244
68.3M
    {
245
68.3M
      if (old_items[i].is_real ())
246
45.4M
      {
247
45.4M
  set_with_hash (std::move (old_items[i].key),
248
45.4M
           old_items[i].hash,
249
45.4M
           std::move (old_items[i].value));
250
45.4M
      }
251
68.3M
    }
252
68.7M
    for (unsigned int i = 0; i < old_size; i++)
253
68.3M
      old_items[i].~item_t ();
254
255
410k
    hb_free (old_items);
256
257
410k
    return true;
258
410k
  }
hb_hashmap_t<hb_serialize_context_t::object_t const*, unsigned int, false>::alloc(unsigned int)
Line
Count
Source
205
32.6k
  {
206
32.6k
    if (unlikely (!successful)) return false;
207
32.6k
    if (unlikely (population > 0x3FFFFFFFu || new_population > 0x3FFFFFFFu))
208
0
    {
209
      // Population sizes >0x3FFFFFFF will result in power
210
      // being larger than 31, which in turn leads to a new size
211
      // that overflows u32.
212
0
      successful = false;
213
0
      return false;
214
0
    }
215
216
32.6k
    if (new_population != 0 && (new_population + new_population / 2) < mask) return true;
217
218
32.6k
    unsigned int power = hb_bit_storage (hb_max (hb_max ((unsigned) population, new_population) * 2, 4u));
219
32.6k
    unsigned int new_size = 1u << power;
220
32.6k
    item_t *new_items = (item_t *) hb_malloc2 ((size_t) new_size, sizeof (item_t));
221
32.6k
    if (unlikely (!new_items))
222
0
    {
223
0
      successful = false;
224
0
      return false;
225
0
    }
226
32.6k
    if (!item_t::is_trivially_constructible)
227
0
      for (auto &_ : hb_iter (new_items, new_size))
228
0
  new (&_) item_t ();
229
32.6k
    else
230
32.6k
      hb_memset (new_items, 0, (size_t) new_size * sizeof (item_t));
231
232
32.6k
    unsigned int old_size = size ();
233
32.6k
    item_t *old_items = items;
234
235
    /* Switch to new, empty, array. */
236
32.6k
    population = occupancy = 0;
237
32.6k
    mask = new_size - 1;
238
32.6k
    prime = prime_for (power);
239
32.6k
    max_chain_length = power * 2;
240
32.6k
    items = new_items;
241
242
    /* Insert back old items. */
243
163k
    for (unsigned int i = 0; i < old_size; i++)
244
130k
    {
245
130k
      if (old_items[i].is_real ())
246
81.5k
      {
247
81.5k
  set_with_hash (std::move (old_items[i].key),
248
81.5k
           old_items[i].hash,
249
81.5k
           std::move (old_items[i].value));
250
81.5k
      }
251
130k
    }
252
163k
    for (unsigned int i = 0; i < old_size; i++)
253
130k
      old_items[i].~item_t ();
254
255
32.6k
    hb_free (old_items);
256
257
32.6k
    return true;
258
32.6k
  }
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_vector_t<unsigned int, false>, false>::alloc(unsigned int)
hb_hashmap_t<unsigned int, unsigned int, true>::alloc(unsigned int)
Line
Count
Source
205
328k
  {
206
328k
    if (unlikely (!successful)) return false;
207
328k
    if (unlikely (population > 0x3FFFFFFFu || new_population > 0x3FFFFFFFu))
208
0
    {
209
      // Population sizes >0x3FFFFFFF will result in power
210
      // being larger than 31, which in turn leads to a new size
211
      // that overflows u32.
212
0
      successful = false;
213
0
      return false;
214
0
    }
215
216
328k
    if (new_population != 0 && (new_population + new_population / 2) < mask) return true;
217
218
295k
    unsigned int power = hb_bit_storage (hb_max (hb_max ((unsigned) population, new_population) * 2, 4u));
219
295k
    unsigned int new_size = 1u << power;
220
295k
    item_t *new_items = (item_t *) hb_malloc2 ((size_t) new_size, sizeof (item_t));
221
295k
    if (unlikely (!new_items))
222
0
    {
223
0
      successful = false;
224
0
      return false;
225
0
    }
226
295k
    if (!item_t::is_trivially_constructible)
227
0
      for (auto &_ : hb_iter (new_items, new_size))
228
0
  new (&_) item_t ();
229
295k
    else
230
295k
      hb_memset (new_items, 0, (size_t) new_size * sizeof (item_t));
231
232
295k
    unsigned int old_size = size ();
233
295k
    item_t *old_items = items;
234
235
    /* Switch to new, empty, array. */
236
295k
    population = occupancy = 0;
237
295k
    mask = new_size - 1;
238
295k
    prime = prime_for (power);
239
295k
    max_chain_length = power * 2;
240
295k
    items = new_items;
241
242
    /* Insert back old items. */
243
67.9M
    for (unsigned int i = 0; i < old_size; i++)
244
67.6M
    {
245
67.6M
      if (old_items[i].is_real ())
246
45.0M
      {
247
45.0M
  set_with_hash (std::move (old_items[i].key),
248
45.0M
           old_items[i].hash,
249
45.0M
           std::move (old_items[i].value));
250
45.0M
      }
251
67.6M
    }
252
67.9M
    for (unsigned int i = 0; i < old_size; i++)
253
67.6M
      old_items[i].~item_t ();
254
255
295k
    hb_free (old_items);
256
257
295k
    return true;
258
295k
  }
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb::unique_ptr<hb_set_t>, false>::alloc(unsigned int)
Unexecuted instantiation: hb_hashmap_t<unsigned int, Triple, false>::alloc(unsigned int)
Unexecuted instantiation: hb_hashmap_t<hb::shared_ptr<hb_map_t>, unsigned int, false>::alloc(unsigned int)
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb::shared_ptr<hb_set_t>, false>::alloc(unsigned int)
Unexecuted instantiation: hb_hashmap_t<unsigned int, OT::Feature const*, false>::alloc(unsigned int)
Unexecuted instantiation: hb_hashmap_t<hb_hashmap_t<unsigned int, Triple, false> const*, unsigned int, false>::alloc(unsigned int)
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_vector_t<int, false> const*, false>::alloc(unsigned int)
Unexecuted instantiation: hb_hashmap_t<hb_vector_t<int, false> const*, unsigned int, false>::alloc(unsigned int)
Unexecuted instantiation: hb_hashmap_t<hb_set_t const*, unsigned int, false>::alloc(unsigned int)
Unexecuted instantiation: hb_hashmap_t<unsigned long, unsigned int, false>::alloc(unsigned int)
Unexecuted instantiation: hb_hashmap_t<OT::hb_depend_context_t::recurse_key_t, bool, false>::alloc(unsigned int)
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_set_t, false>::alloc(unsigned int)
Unexecuted instantiation: hb_hashmap_t<OT::hb_depend_context_t::glyph_set_cache_key_t, unsigned int, false>::alloc(unsigned int)
Unexecuted instantiation: hb_hashmap_t<OT::hb_depend_context_t::context_set_cache_key_t, unsigned int, false>::alloc(unsigned int)
hb_hashmap_t<unsigned int, face_table_info_t, false>::alloc(unsigned int)
Line
Count
Source
205
48.9k
  {
206
48.9k
    if (unlikely (!successful)) return false;
207
48.9k
    if (unlikely (population > 0x3FFFFFFFu || new_population > 0x3FFFFFFFu))
208
0
    {
209
      // Population sizes >0x3FFFFFFF will result in power
210
      // being larger than 31, which in turn leads to a new size
211
      // that overflows u32.
212
0
      successful = false;
213
0
      return false;
214
0
    }
215
216
48.9k
    if (new_population != 0 && (new_population + new_population / 2) < mask) return true;
217
218
48.9k
    unsigned int power = hb_bit_storage (hb_max (hb_max ((unsigned) population, new_population) * 2, 4u));
219
48.9k
    unsigned int new_size = 1u << power;
220
48.9k
    item_t *new_items = (item_t *) hb_malloc2 ((size_t) new_size, sizeof (item_t));
221
48.9k
    if (unlikely (!new_items))
222
0
    {
223
0
      successful = false;
224
0
      return false;
225
0
    }
226
48.9k
    if (!item_t::is_trivially_constructible)
227
0
      for (auto &_ : hb_iter (new_items, new_size))
228
0
  new (&_) item_t ();
229
48.9k
    else
230
48.9k
      hb_memset (new_items, 0, (size_t) new_size * sizeof (item_t));
231
232
48.9k
    unsigned int old_size = size ();
233
48.9k
    item_t *old_items = items;
234
235
    /* Switch to new, empty, array. */
236
48.9k
    population = occupancy = 0;
237
48.9k
    mask = new_size - 1;
238
48.9k
    prime = prime_for (power);
239
48.9k
    max_chain_length = power * 2;
240
48.9k
    items = new_items;
241
242
    /* Insert back old items. */
243
440k
    for (unsigned int i = 0; i < old_size; i++)
244
391k
    {
245
391k
      if (old_items[i].is_real ())
246
244k
      {
247
244k
  set_with_hash (std::move (old_items[i].key),
248
244k
           old_items[i].hash,
249
244k
           std::move (old_items[i].value));
250
244k
      }
251
391k
    }
252
440k
    for (unsigned int i = 0; i < old_size; i++)
253
391k
      old_items[i].~item_t ();
254
255
48.9k
    hb_free (old_items);
256
257
48.9k
    return true;
258
48.9k
  }
Unexecuted instantiation: hb_hashmap_t<unsigned int, unsigned int, false>::alloc(unsigned int)
Unexecuted instantiation: hb_hashmap_t<hb_array_t<OT::NumType<true, unsigned int, 4u> const>, unsigned int, false>::alloc(unsigned int)
Unexecuted instantiation: hb_hashmap_t<OT::SVG::svg_id_span_t, hb_pair_t<unsigned int, unsigned int>, false>::alloc(unsigned int)
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_pair_t<unsigned int, int>, false>::alloc(unsigned int)
hb_hashmap_t<unsigned int, hb::unique_ptr<hb_blob_t>, false>::alloc(unsigned int)
Line
Count
Source
205
32.6k
  {
206
32.6k
    if (unlikely (!successful)) return false;
207
32.6k
    if (unlikely (population > 0x3FFFFFFFu || new_population > 0x3FFFFFFFu))
208
0
    {
209
      // Population sizes >0x3FFFFFFF will result in power
210
      // being larger than 31, which in turn leads to a new size
211
      // that overflows u32.
212
0
      successful = false;
213
0
      return false;
214
0
    }
215
216
32.6k
    if (new_population != 0 && (new_population + new_population / 2) < mask) return true;
217
218
32.6k
    unsigned int power = hb_bit_storage (hb_max (hb_max ((unsigned) population, new_population) * 2, 4u));
219
32.6k
    unsigned int new_size = 1u << power;
220
32.6k
    item_t *new_items = (item_t *) hb_malloc2 ((size_t) new_size, sizeof (item_t));
221
32.6k
    if (unlikely (!new_items))
222
0
    {
223
0
      successful = false;
224
0
      return false;
225
0
    }
226
32.6k
    if (!item_t::is_trivially_constructible)
227
32.6k
      for (auto &_ : hb_iter (new_items, new_size))
228
391k
  new (&_) item_t ();
229
0
    else
230
0
      hb_memset (new_items, 0, (size_t) new_size * sizeof (item_t));
231
232
32.6k
    unsigned int old_size = size ();
233
32.6k
    item_t *old_items = items;
234
235
    /* Switch to new, empty, array. */
236
32.6k
    population = occupancy = 0;
237
32.6k
    mask = new_size - 1;
238
32.6k
    prime = prime_for (power);
239
32.6k
    max_chain_length = power * 2;
240
32.6k
    items = new_items;
241
242
    /* Insert back old items. */
243
163k
    for (unsigned int i = 0; i < old_size; i++)
244
130k
    {
245
130k
      if (old_items[i].is_real ())
246
81.5k
      {
247
81.5k
  set_with_hash (std::move (old_items[i].key),
248
81.5k
           old_items[i].hash,
249
81.5k
           std::move (old_items[i].value));
250
81.5k
      }
251
130k
    }
252
163k
    for (unsigned int i = 0; i < old_size; i++)
253
130k
      old_items[i].~item_t ();
254
255
32.6k
    hb_free (old_items);
256
257
32.6k
    return true;
258
32.6k
  }
Unexecuted instantiation: hb_hashmap_t<graph::overflow_record_t, bool, false>::alloc(unsigned int)
Unexecuted instantiation: hb_hashmap_t<unsigned int, graph::Lookup*, false>::alloc(unsigned int)
Unexecuted instantiation: hb_hashmap_t<hb_array_t<char const>, unsigned int, true>::alloc(unsigned int)
Unexecuted instantiation: hb_hashmap_t<hb_vector_t<bool, false> const*, unsigned int, false>::alloc(unsigned int)
Unexecuted instantiation: hb_hashmap_t<hb_vector_t<bool, false> const*, hb_vector_t<unsigned char, false>, false>::alloc(unsigned int)
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_pair_t<void const*, void const*>, false>::alloc(unsigned int)
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_pair_t<double, double>, false>::alloc(unsigned int)
Unexecuted instantiation: hb_hashmap_t<unsigned int, double, false>::alloc(unsigned int)
Unexecuted instantiation: hb_hashmap_t<unsigned int, TripleDistances, false>::alloc(unsigned int)
Unexecuted instantiation: hb_hashmap_t<unsigned int, contour_point_vector_t, false>::alloc(unsigned int)
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_array_t<char const>, false>::alloc(unsigned int)
Unexecuted instantiation: hb_hashmap_t<hb_vector_t<OT::HBFixed<OT::NumType<true, short, 2u>, 14u>, false> const*, unsigned int, false>::alloc(unsigned int)
259
260
  template <typename KK, typename VV>
261
  bool set_with_hash (KK&& key, uint32_t hash, VV&& value, bool overwrite = true)
262
86.3M
  {
263
86.3M
    if (unlikely (!successful)) return false;
264
86.3M
    if (unlikely ((occupancy + occupancy / 2) >= mask && !alloc ())) return false;
265
266
86.3M
    hash &= 0x3FFFFFFF; // We only store lower 30bit of hash
267
86.3M
    unsigned int tombstone = (unsigned int) -1;
268
86.3M
    unsigned int i = hash % prime;
269
86.3M
    unsigned length = 0;
270
86.3M
    unsigned step = 0;
271
99.7M
    while (items[i].is_used ())
272
13.3M
    {
273
13.3M
      if ((std::is_integral<K>::value || items[i].hash == hash) &&
274
13.3M
    items[i] == key)
275
4.27k
      {
276
4.27k
        if (!overwrite)
277
0
    return false;
278
4.27k
        else
279
4.27k
    break;
280
4.27k
      }
281
13.3M
      if (!items[i].is_real () && tombstone == (unsigned) -1)
282
0
        tombstone = i;
283
13.3M
      i = (i + ++step) & mask;
284
13.3M
      length++;
285
13.3M
    }
286
287
86.3M
    item_t &item = items[tombstone == (unsigned) -1 ? i : tombstone];
288
289
86.3M
    if (item.is_used ())
290
4.27k
    {
291
4.27k
      occupancy--;
292
4.27k
      population -= item.is_real ();
293
4.27k
    }
294
295
86.3M
    item.key = std::forward<KK> (key);
296
86.3M
    item.value = std::forward<VV> (value);
297
86.3M
    item.hash = hash;
298
86.3M
    item.set_used (true);
299
86.3M
    item.set_real (true);
300
301
86.3M
    occupancy++;
302
86.3M
    population++;
303
304
86.3M
    if (unlikely (length > max_chain_length) && occupancy > mask / 8)
305
128
      alloc (mask - 8); // This ensures we jump to next larger size
306
307
86.3M
    return true;
308
86.3M
  }
bool hb_hashmap_t<unsigned int, unsigned int, true>::set_with_hash<unsigned int const&, unsigned int const&>(unsigned int const&, unsigned int, unsigned int const&, bool)
Line
Count
Source
262
1.07M
  {
263
1.07M
    if (unlikely (!successful)) return false;
264
1.07M
    if (unlikely ((occupancy + occupancy / 2) >= mask && !alloc ())) return false;
265
266
1.07M
    hash &= 0x3FFFFFFF; // We only store lower 30bit of hash
267
1.07M
    unsigned int tombstone = (unsigned int) -1;
268
1.07M
    unsigned int i = hash % prime;
269
1.07M
    unsigned length = 0;
270
1.07M
    unsigned step = 0;
271
1.16M
    while (items[i].is_used ())
272
87.7k
    {
273
87.7k
      if ((std::is_integral<K>::value || items[i].hash == hash) &&
274
87.7k
    items[i] == key)
275
0
      {
276
0
        if (!overwrite)
277
0
    return false;
278
0
        else
279
0
    break;
280
0
      }
281
87.7k
      if (!items[i].is_real () && tombstone == (unsigned) -1)
282
0
        tombstone = i;
283
87.7k
      i = (i + ++step) & mask;
284
87.7k
      length++;
285
87.7k
    }
286
287
1.07M
    item_t &item = items[tombstone == (unsigned) -1 ? i : tombstone];
288
289
1.07M
    if (item.is_used ())
290
0
    {
291
0
      occupancy--;
292
0
      population -= item.is_real ();
293
0
    }
294
295
1.07M
    item.key = std::forward<KK> (key);
296
1.07M
    item.value = std::forward<VV> (value);
297
1.07M
    item.hash = hash;
298
1.07M
    item.set_used (true);
299
1.07M
    item.set_real (true);
300
301
1.07M
    occupancy++;
302
1.07M
    population++;
303
304
1.07M
    if (unlikely (length > max_chain_length) && occupancy > mask / 8)
305
0
      alloc (mask - 8); // This ensures we jump to next larger size
306
307
1.07M
    return true;
308
1.07M
  }
bool hb_hashmap_t<hb_serialize_context_t::object_t const*, unsigned int, false>::set_with_hash<hb_serialize_context_t::object_t*&, unsigned int&>(hb_serialize_context_t::object_t*&, unsigned int, unsigned int&, bool)
Line
Count
Source
262
101k
  {
263
101k
    if (unlikely (!successful)) return false;
264
101k
    if (unlikely ((occupancy + occupancy / 2) >= mask && !alloc ())) return false;
265
266
101k
    hash &= 0x3FFFFFFF; // We only store lower 30bit of hash
267
101k
    unsigned int tombstone = (unsigned int) -1;
268
101k
    unsigned int i = hash % prime;
269
101k
    unsigned length = 0;
270
101k
    unsigned step = 0;
271
145k
    while (items[i].is_used ())
272
44.6k
    {
273
44.6k
      if ((std::is_integral<K>::value || items[i].hash == hash) &&
274
0
    items[i] == key)
275
0
      {
276
0
        if (!overwrite)
277
0
    return false;
278
0
        else
279
0
    break;
280
0
      }
281
44.6k
      if (!items[i].is_real () && tombstone == (unsigned) -1)
282
0
        tombstone = i;
283
44.6k
      i = (i + ++step) & mask;
284
44.6k
      length++;
285
44.6k
    }
286
287
101k
    item_t &item = items[tombstone == (unsigned) -1 ? i : tombstone];
288
289
101k
    if (item.is_used ())
290
0
    {
291
0
      occupancy--;
292
0
      population -= item.is_real ();
293
0
    }
294
295
101k
    item.key = std::forward<KK> (key);
296
101k
    item.value = std::forward<VV> (value);
297
101k
    item.hash = hash;
298
101k
    item.set_used (true);
299
101k
    item.set_real (true);
300
301
101k
    occupancy++;
302
101k
    population++;
303
304
101k
    if (unlikely (length > max_chain_length) && occupancy > mask / 8)
305
0
      alloc (mask - 8); // This ensures we jump to next larger size
306
307
101k
    return true;
308
101k
  }
bool hb_hashmap_t<hb_serialize_context_t::object_t const*, unsigned int, false>::set_with_hash<hb_serialize_context_t::object_t const*, unsigned int>(hb_serialize_context_t::object_t const*&&, unsigned int, unsigned int&&, bool)
Line
Count
Source
262
81.5k
  {
263
81.5k
    if (unlikely (!successful)) return false;
264
81.5k
    if (unlikely ((occupancy + occupancy / 2) >= mask && !alloc ())) return false;
265
266
81.5k
    hash &= 0x3FFFFFFF; // We only store lower 30bit of hash
267
81.5k
    unsigned int tombstone = (unsigned int) -1;
268
81.5k
    unsigned int i = hash % prime;
269
81.5k
    unsigned length = 0;
270
81.5k
    unsigned step = 0;
271
81.5k
    while (items[i].is_used ())
272
0
    {
273
0
      if ((std::is_integral<K>::value || items[i].hash == hash) &&
274
0
    items[i] == key)
275
0
      {
276
0
        if (!overwrite)
277
0
    return false;
278
0
        else
279
0
    break;
280
0
      }
281
0
      if (!items[i].is_real () && tombstone == (unsigned) -1)
282
0
        tombstone = i;
283
0
      i = (i + ++step) & mask;
284
0
      length++;
285
0
    }
286
287
81.5k
    item_t &item = items[tombstone == (unsigned) -1 ? i : tombstone];
288
289
81.5k
    if (item.is_used ())
290
0
    {
291
0
      occupancy--;
292
0
      population -= item.is_real ();
293
0
    }
294
295
81.5k
    item.key = std::forward<KK> (key);
296
81.5k
    item.value = std::forward<VV> (value);
297
81.5k
    item.hash = hash;
298
81.5k
    item.set_used (true);
299
81.5k
    item.set_real (true);
300
301
81.5k
    occupancy++;
302
81.5k
    population++;
303
304
81.5k
    if (unlikely (length > max_chain_length) && occupancy > mask / 8)
305
0
      alloc (mask - 8); // This ensures we jump to next larger size
306
307
81.5k
    return true;
308
81.5k
  }
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, hb_vector_t<unsigned int, false>, false>::set_with_hash<unsigned int const&, hb_vector_t<unsigned int, false> >(unsigned int const&, unsigned int, hb_vector_t<unsigned int, false>&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, hb_vector_t<unsigned int, false>, false>::set_with_hash<unsigned int, hb_vector_t<unsigned int, false> >(unsigned int&&, unsigned int, hb_vector_t<unsigned int, false>&&, bool)
bool hb_hashmap_t<unsigned int, unsigned int, true>::set_with_hash<unsigned int const&, unsigned int&>(unsigned int const&, unsigned int, unsigned int&, bool)
Line
Count
Source
262
39.4M
  {
263
39.4M
    if (unlikely (!successful)) return false;
264
39.4M
    if (unlikely ((occupancy + occupancy / 2) >= mask && !alloc ())) return false;
265
266
39.4M
    hash &= 0x3FFFFFFF; // We only store lower 30bit of hash
267
39.4M
    unsigned int tombstone = (unsigned int) -1;
268
39.4M
    unsigned int i = hash % prime;
269
39.4M
    unsigned length = 0;
270
39.4M
    unsigned step = 0;
271
52.0M
    while (items[i].is_used ())
272
12.5M
    {
273
12.5M
      if ((std::is_integral<K>::value || items[i].hash == hash) &&
274
12.5M
    items[i] == key)
275
4.27k
      {
276
4.27k
        if (!overwrite)
277
0
    return false;
278
4.27k
        else
279
4.27k
    break;
280
4.27k
      }
281
12.5M
      if (!items[i].is_real () && tombstone == (unsigned) -1)
282
0
        tombstone = i;
283
12.5M
      i = (i + ++step) & mask;
284
12.5M
      length++;
285
12.5M
    }
286
287
39.4M
    item_t &item = items[tombstone == (unsigned) -1 ? i : tombstone];
288
289
39.4M
    if (item.is_used ())
290
4.27k
    {
291
4.27k
      occupancy--;
292
4.27k
      population -= item.is_real ();
293
4.27k
    }
294
295
39.4M
    item.key = std::forward<KK> (key);
296
39.4M
    item.value = std::forward<VV> (value);
297
39.4M
    item.hash = hash;
298
39.4M
    item.set_used (true);
299
39.4M
    item.set_real (true);
300
301
39.4M
    occupancy++;
302
39.4M
    population++;
303
304
39.4M
    if (unlikely (length > max_chain_length) && occupancy > mask / 8)
305
128
      alloc (mask - 8); // This ensures we jump to next larger size
306
307
39.4M
    return true;
308
39.4M
  }
bool hb_hashmap_t<unsigned int, unsigned int, true>::set_with_hash<unsigned int, unsigned int>(unsigned int&&, unsigned int, unsigned int&&, bool)
Line
Count
Source
262
45.0M
  {
263
45.0M
    if (unlikely (!successful)) return false;
264
45.0M
    if (unlikely ((occupancy + occupancy / 2) >= mask && !alloc ())) return false;
265
266
45.0M
    hash &= 0x3FFFFFFF; // We only store lower 30bit of hash
267
45.0M
    unsigned int tombstone = (unsigned int) -1;
268
45.0M
    unsigned int i = hash % prime;
269
45.0M
    unsigned length = 0;
270
45.0M
    unsigned step = 0;
271
45.4M
    while (items[i].is_used ())
272
473k
    {
273
473k
      if ((std::is_integral<K>::value || items[i].hash == hash) &&
274
473k
    items[i] == key)
275
0
      {
276
0
        if (!overwrite)
277
0
    return false;
278
0
        else
279
0
    break;
280
0
      }
281
473k
      if (!items[i].is_real () && tombstone == (unsigned) -1)
282
0
        tombstone = i;
283
473k
      i = (i + ++step) & mask;
284
473k
      length++;
285
473k
    }
286
287
45.0M
    item_t &item = items[tombstone == (unsigned) -1 ? i : tombstone];
288
289
45.0M
    if (item.is_used ())
290
0
    {
291
0
      occupancy--;
292
0
      population -= item.is_real ();
293
0
    }
294
295
45.0M
    item.key = std::forward<KK> (key);
296
45.0M
    item.value = std::forward<VV> (value);
297
45.0M
    item.hash = hash;
298
45.0M
    item.set_used (true);
299
45.0M
    item.set_real (true);
300
301
45.0M
    occupancy++;
302
45.0M
    population++;
303
304
45.0M
    if (unlikely (length > max_chain_length) && occupancy > mask / 8)
305
0
      alloc (mask - 8); // This ensures we jump to next larger size
306
307
45.0M
    return true;
308
45.0M
  }
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, unsigned int, true>::set_with_hash<unsigned int, unsigned int&>(unsigned int&&, unsigned int, unsigned int&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, unsigned int, true>::set_with_hash<unsigned int const&, unsigned int>(unsigned int const&, unsigned int, unsigned int&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, hb::unique_ptr<hb_set_t>, false>::set_with_hash<unsigned int const&, hb::unique_ptr<hb_set_t> >(unsigned int const&, unsigned int, hb::unique_ptr<hb_set_t>&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, hb::unique_ptr<hb_set_t>, false>::set_with_hash<unsigned int, hb::unique_ptr<hb_set_t> >(unsigned int&&, unsigned int, hb::unique_ptr<hb_set_t>&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, unsigned int, true>::set_with_hash<unsigned int, int>(unsigned int&&, unsigned int, int&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, Triple, false>::set_with_hash<unsigned int const&, Triple>(unsigned int const&, unsigned int, Triple&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, Triple, false>::set_with_hash<unsigned int, Triple>(unsigned int&&, unsigned int, Triple&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<hb::shared_ptr<hb_map_t>, unsigned int, false>::set_with_hash<hb::shared_ptr<hb_map_t> const&, int>(hb::shared_ptr<hb_map_t> const&, unsigned int, int&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<hb::shared_ptr<hb_map_t>, unsigned int, false>::set_with_hash<hb::shared_ptr<hb_map_t>, unsigned int>(hb::shared_ptr<hb_map_t>&&, unsigned int, unsigned int&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, hb::shared_ptr<hb_set_t>, false>::set_with_hash<unsigned int const&, hb::shared_ptr<hb_set_t>&>(unsigned int const&, unsigned int, hb::shared_ptr<hb_set_t>&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, hb::shared_ptr<hb_set_t>, false>::set_with_hash<unsigned int, hb::shared_ptr<hb_set_t> >(unsigned int&&, unsigned int, hb::shared_ptr<hb_set_t>&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, OT::Feature const*, false>::set_with_hash<unsigned int, OT::Feature const*>(unsigned int&&, unsigned int, OT::Feature const*&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, Triple, false>::set_with_hash<unsigned int const&, Triple const&>(unsigned int const&, unsigned int, Triple const&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, Triple, false>::set_with_hash<unsigned int const&, Triple&>(unsigned int const&, unsigned int, Triple&, bool)
Unexecuted instantiation: bool hb_hashmap_t<hb_hashmap_t<unsigned int, Triple, false> const*, unsigned int, false>::set_with_hash<hb_hashmap_t<unsigned int, Triple, false> const*, unsigned int>(hb_hashmap_t<unsigned int, Triple, false> const*&&, unsigned int, unsigned int&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<hb_hashmap_t<unsigned int, Triple, false> const*, unsigned int, false>::set_with_hash<hb_hashmap_t<unsigned int, Triple, false> const* const&, int>(hb_hashmap_t<unsigned int, Triple, false> const* const&, unsigned int, int&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<hb_hashmap_t<unsigned int, Triple, false> const*, unsigned int, false>::set_with_hash<hb_hashmap_t<unsigned int, Triple, false> const*, unsigned int&>(hb_hashmap_t<unsigned int, Triple, false> const*&&, unsigned int, unsigned int&, bool)
Unexecuted instantiation: bool hb_hashmap_t<hb_hashmap_t<unsigned int, Triple, false> const*, unsigned int, false>::set_with_hash<hb_hashmap_t<unsigned int, Triple, false> const* const&, unsigned int&>(hb_hashmap_t<unsigned int, Triple, false> const* const&, unsigned int, unsigned int&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, hb_vector_t<int, false> const*, false>::set_with_hash<unsigned int, hb_vector_t<int, false> const*>(unsigned int&&, unsigned int, hb_vector_t<int, false> const*&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<hb_vector_t<int, false> const*, unsigned int, false>::set_with_hash<hb_vector_t<int, false> const*, int>(hb_vector_t<int, false> const*&&, unsigned int, int&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<hb_vector_t<int, false> const*, unsigned int, false>::set_with_hash<hb_vector_t<int, false> const*, unsigned int>(hb_vector_t<int, false> const*&&, unsigned int, unsigned int&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<hb_vector_t<int, false> const*, unsigned int, false>::set_with_hash<hb_vector_t<int, false> const* const&, unsigned int>(hb_vector_t<int, false> const* const&, unsigned int, unsigned int&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<hb_set_t const*, unsigned int, false>::set_with_hash<hb_set_t const*, unsigned int&>(hb_set_t const*&&, unsigned int, unsigned int&, bool)
Unexecuted instantiation: bool hb_hashmap_t<hb_set_t const*, unsigned int, false>::set_with_hash<hb_set_t const*, unsigned int>(hb_set_t const*&&, unsigned int, unsigned int&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned long, unsigned int, false>::set_with_hash<unsigned long const&, unsigned int&>(unsigned long const&, unsigned int, unsigned int&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned long, unsigned int, false>::set_with_hash<unsigned long, unsigned int>(unsigned long&&, unsigned int, unsigned int&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<OT::hb_depend_context_t::recurse_key_t, bool, false>::set_with_hash<OT::hb_depend_context_t::recurse_key_t const&, bool>(OT::hb_depend_context_t::recurse_key_t const&, unsigned int, bool&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<OT::hb_depend_context_t::recurse_key_t, bool, false>::set_with_hash<OT::hb_depend_context_t::recurse_key_t, bool>(OT::hb_depend_context_t::recurse_key_t&&, unsigned int, bool&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, unsigned int, true>::set_with_hash<unsigned int const&, bool&>(unsigned int const&, unsigned int, bool&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, hb_set_t, false>::set_with_hash<unsigned int const&, hb_set_t>(unsigned int const&, unsigned int, hb_set_t&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, hb_set_t, false>::set_with_hash<unsigned int, hb_set_t>(unsigned int&&, unsigned int, hb_set_t&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<OT::hb_depend_context_t::glyph_set_cache_key_t, unsigned int, false>::set_with_hash<OT::hb_depend_context_t::glyph_set_cache_key_t const&, unsigned int&>(OT::hb_depend_context_t::glyph_set_cache_key_t const&, unsigned int, unsigned int&, bool)
Unexecuted instantiation: bool hb_hashmap_t<OT::hb_depend_context_t::glyph_set_cache_key_t, unsigned int, false>::set_with_hash<OT::hb_depend_context_t::glyph_set_cache_key_t, unsigned int>(OT::hb_depend_context_t::glyph_set_cache_key_t&&, unsigned int, unsigned int&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<OT::hb_depend_context_t::context_set_cache_key_t, unsigned int, false>::set_with_hash<OT::hb_depend_context_t::context_set_cache_key_t const&, unsigned int&>(OT::hb_depend_context_t::context_set_cache_key_t const&, unsigned int, unsigned int&, bool)
Unexecuted instantiation: bool hb_hashmap_t<OT::hb_depend_context_t::context_set_cache_key_t, unsigned int, false>::set_with_hash<OT::hb_depend_context_t::context_set_cache_key_t, unsigned int>(OT::hb_depend_context_t::context_set_cache_key_t&&, unsigned int, unsigned int&&, bool)
bool hb_hashmap_t<unsigned int, face_table_info_t, false>::set_with_hash<unsigned int const&, face_table_info_t>(unsigned int const&, unsigned int, face_table_info_t&&, bool)
Line
Count
Source
262
195k
  {
263
195k
    if (unlikely (!successful)) return false;
264
195k
    if (unlikely ((occupancy + occupancy / 2) >= mask && !alloc ())) return false;
265
266
195k
    hash &= 0x3FFFFFFF; // We only store lower 30bit of hash
267
195k
    unsigned int tombstone = (unsigned int) -1;
268
195k
    unsigned int i = hash % prime;
269
195k
    unsigned length = 0;
270
195k
    unsigned step = 0;
271
228k
    while (items[i].is_used ())
272
32.6k
    {
273
32.6k
      if ((std::is_integral<K>::value || items[i].hash == hash) &&
274
32.6k
    items[i] == key)
275
0
      {
276
0
        if (!overwrite)
277
0
    return false;
278
0
        else
279
0
    break;
280
0
      }
281
32.6k
      if (!items[i].is_real () && tombstone == (unsigned) -1)
282
0
        tombstone = i;
283
32.6k
      i = (i + ++step) & mask;
284
32.6k
      length++;
285
32.6k
    }
286
287
195k
    item_t &item = items[tombstone == (unsigned) -1 ? i : tombstone];
288
289
195k
    if (item.is_used ())
290
0
    {
291
0
      occupancy--;
292
0
      population -= item.is_real ();
293
0
    }
294
295
195k
    item.key = std::forward<KK> (key);
296
195k
    item.value = std::forward<VV> (value);
297
195k
    item.hash = hash;
298
195k
    item.set_used (true);
299
195k
    item.set_real (true);
300
301
195k
    occupancy++;
302
195k
    population++;
303
304
195k
    if (unlikely (length > max_chain_length) && occupancy > mask / 8)
305
0
      alloc (mask - 8); // This ensures we jump to next larger size
306
307
195k
    return true;
308
195k
  }
bool hb_hashmap_t<unsigned int, face_table_info_t, false>::set_with_hash<unsigned int, face_table_info_t>(unsigned int&&, unsigned int, face_table_info_t&&, bool)
Line
Count
Source
262
244k
  {
263
244k
    if (unlikely (!successful)) return false;
264
244k
    if (unlikely ((occupancy + occupancy / 2) >= mask && !alloc ())) return false;
265
266
244k
    hash &= 0x3FFFFFFF; // We only store lower 30bit of hash
267
244k
    unsigned int tombstone = (unsigned int) -1;
268
244k
    unsigned int i = hash % prime;
269
244k
    unsigned length = 0;
270
244k
    unsigned step = 0;
271
326k
    while (items[i].is_used ())
272
81.5k
    {
273
81.5k
      if ((std::is_integral<K>::value || items[i].hash == hash) &&
274
81.5k
    items[i] == key)
275
0
      {
276
0
        if (!overwrite)
277
0
    return false;
278
0
        else
279
0
    break;
280
0
      }
281
81.5k
      if (!items[i].is_real () && tombstone == (unsigned) -1)
282
0
        tombstone = i;
283
81.5k
      i = (i + ++step) & mask;
284
81.5k
      length++;
285
81.5k
    }
286
287
244k
    item_t &item = items[tombstone == (unsigned) -1 ? i : tombstone];
288
289
244k
    if (item.is_used ())
290
0
    {
291
0
      occupancy--;
292
0
      population -= item.is_real ();
293
0
    }
294
295
244k
    item.key = std::forward<KK> (key);
296
244k
    item.value = std::forward<VV> (value);
297
244k
    item.hash = hash;
298
244k
    item.set_used (true);
299
244k
    item.set_real (true);
300
301
244k
    occupancy++;
302
244k
    population++;
303
304
244k
    if (unlikely (length > max_chain_length) && occupancy > mask / 8)
305
0
      alloc (mask - 8); // This ensures we jump to next larger size
306
307
244k
    return true;
308
244k
  }
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, unsigned int, false>::set_with_hash<unsigned int const&, int>(unsigned int const&, unsigned int, int&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, unsigned int, false>::set_with_hash<unsigned int, unsigned int>(unsigned int&&, unsigned int, unsigned int&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<hb_array_t<OT::NumType<true, unsigned int, 4u> const>, unsigned int, false>::set_with_hash<hb_array_t<OT::NumType<true, unsigned int, 4u> const>, unsigned int&>(hb_array_t<OT::NumType<true, unsigned int, 4u> const>&&, unsigned int, unsigned int&, bool)
Unexecuted instantiation: bool hb_hashmap_t<hb_array_t<OT::NumType<true, unsigned int, 4u> const>, unsigned int, false>::set_with_hash<hb_array_t<OT::NumType<true, unsigned int, 4u> const>, unsigned int>(hb_array_t<OT::NumType<true, unsigned int, 4u> const>&&, unsigned int, unsigned int&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, unsigned int, true>::set_with_hash<unsigned int const&, OT::OffsetTo<OT::ClipBox, OT::NumType<true, unsigned int, 3u>, void, true> const&>(unsigned int const&, unsigned int, OT::OffsetTo<OT::ClipBox, OT::NumType<true, unsigned int, 3u>, void, true> const&, bool)
Unexecuted instantiation: bool hb_hashmap_t<OT::SVG::svg_id_span_t, hb_pair_t<unsigned int, unsigned int>, false>::set_with_hash<OT::SVG::svg_id_span_t const&, hb_pair_t<unsigned int, unsigned int> >(OT::SVG::svg_id_span_t const&, unsigned int, hb_pair_t<unsigned int, unsigned int>&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<OT::SVG::svg_id_span_t, hb_pair_t<unsigned int, unsigned int>, false>::set_with_hash<OT::SVG::svg_id_span_t, hb_pair_t<unsigned int, unsigned int> >(OT::SVG::svg_id_span_t&&, unsigned int, hb_pair_t<unsigned int, unsigned int>&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, hb_pair_t<unsigned int, int>, false>::set_with_hash<unsigned int&, hb_pair_t<unsigned int, int&> >(unsigned int&, unsigned int, hb_pair_t<unsigned int, int&>&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, hb_pair_t<unsigned int, int>, false>::set_with_hash<unsigned int, hb_pair_t<unsigned int, int> >(unsigned int&&, unsigned int, hb_pair_t<unsigned int, int>&&, bool)
bool hb_hashmap_t<unsigned int, hb::unique_ptr<hb_blob_t>, false>::set_with_hash<unsigned int, hb::unique_ptr<hb_blob_t> >(unsigned int&&, unsigned int, hb::unique_ptr<hb_blob_t>&&, bool)
Line
Count
Source
262
179k
  {
263
179k
    if (unlikely (!successful)) return false;
264
179k
    if (unlikely ((occupancy + occupancy / 2) >= mask && !alloc ())) return false;
265
266
179k
    hash &= 0x3FFFFFFF; // We only store lower 30bit of hash
267
179k
    unsigned int tombstone = (unsigned int) -1;
268
179k
    unsigned int i = hash % prime;
269
179k
    unsigned length = 0;
270
179k
    unsigned step = 0;
271
261k
    while (items[i].is_used ())
272
81.5k
    {
273
81.5k
      if ((std::is_integral<K>::value || items[i].hash == hash) &&
274
81.5k
    items[i] == key)
275
0
      {
276
0
        if (!overwrite)
277
0
    return false;
278
0
        else
279
0
    break;
280
0
      }
281
81.5k
      if (!items[i].is_real () && tombstone == (unsigned) -1)
282
0
        tombstone = i;
283
81.5k
      i = (i + ++step) & mask;
284
81.5k
      length++;
285
81.5k
    }
286
287
179k
    item_t &item = items[tombstone == (unsigned) -1 ? i : tombstone];
288
289
179k
    if (item.is_used ())
290
0
    {
291
0
      occupancy--;
292
0
      population -= item.is_real ();
293
0
    }
294
295
179k
    item.key = std::forward<KK> (key);
296
179k
    item.value = std::forward<VV> (value);
297
179k
    item.hash = hash;
298
179k
    item.set_used (true);
299
179k
    item.set_real (true);
300
301
179k
    occupancy++;
302
179k
    population++;
303
304
179k
    if (unlikely (length > max_chain_length) && occupancy > mask / 8)
305
0
      alloc (mask - 8); // This ensures we jump to next larger size
306
307
179k
    return true;
308
179k
  }
Unexecuted instantiation: bool hb_hashmap_t<graph::overflow_record_t, bool, false>::set_with_hash<graph::overflow_record_t const&, bool>(graph::overflow_record_t const&, unsigned int, bool&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<graph::overflow_record_t, bool, false>::set_with_hash<graph::overflow_record_t, bool>(graph::overflow_record_t&&, unsigned int, bool&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, unsigned int, true>::set_with_hash<unsigned int const&, int>(unsigned int const&, unsigned int, int&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, unsigned int, false>::set_with_hash<unsigned int const&, unsigned int&>(unsigned int const&, unsigned int, unsigned int&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, unsigned int, false>::set_with_hash<unsigned int const&, unsigned int const&>(unsigned int const&, unsigned int, unsigned int const&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, hb_vector_t<unsigned int, false>, false>::set_with_hash<unsigned int const&, hb_vector_t<unsigned int, false>&>(unsigned int const&, unsigned int, hb_vector_t<unsigned int, false>&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, graph::Lookup*, false>::set_with_hash<unsigned int const&, graph::Lookup*&>(unsigned int const&, unsigned int, graph::Lookup*&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, graph::Lookup*, false>::set_with_hash<unsigned int, graph::Lookup*>(unsigned int&&, unsigned int, graph::Lookup*&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<hb_array_t<char const>, unsigned int, true>::set_with_hash<hb_array_t<char const>, unsigned int>(hb_array_t<char const>&&, unsigned int, unsigned int&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<hb_array_t<char const>, unsigned int, true>::set_with_hash<hb_array_t<char const> const&, unsigned int&>(hb_array_t<char const> const&, unsigned int, unsigned int&, bool)
Unexecuted instantiation: bool hb_hashmap_t<hb_vector_t<bool, false> const*, unsigned int, false>::set_with_hash<hb_vector_t<bool, false> const* const&, unsigned int>(hb_vector_t<bool, false> const* const&, unsigned int, unsigned int&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<hb_vector_t<bool, false> const*, unsigned int, false>::set_with_hash<hb_vector_t<bool, false> const*, unsigned int>(hb_vector_t<bool, false> const*&&, unsigned int, unsigned int&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<hb_vector_t<bool, false> const*, hb_vector_t<unsigned char, false>, false>::set_with_hash<hb_vector_t<bool, false> const* const&, hb_vector_t<unsigned char, false> >(hb_vector_t<bool, false> const* const&, unsigned int, hb_vector_t<unsigned char, false>&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<hb_vector_t<bool, false> const*, hb_vector_t<unsigned char, false>, false>::set_with_hash<hb_vector_t<bool, false> const*, hb_vector_t<unsigned char, false> >(hb_vector_t<bool, false> const*&&, unsigned int, hb_vector_t<unsigned char, false>&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<hb_vector_t<bool, false> const*, unsigned int, false>::set_with_hash<hb_vector_t<bool, false> const* const&, int>(hb_vector_t<bool, false> const* const&, unsigned int, int&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, hb_pair_t<void const*, void const*>, false>::set_with_hash<unsigned int const&, hb_pair_t<OT::Feature const*, void const*&> >(unsigned int const&, unsigned int, hb_pair_t<OT::Feature const*, void const*&>&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, hb_pair_t<void const*, void const*>, false>::set_with_hash<unsigned int, hb_pair_t<void const*, void const*> >(unsigned int&&, unsigned int, hb_pair_t<void const*, void const*>&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, hb_pair_t<double, double>, false>::set_with_hash<unsigned int const&, hb_pair_t<double&, double&> >(unsigned int const&, unsigned int, hb_pair_t<double&, double&>&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, hb_pair_t<double, double>, false>::set_with_hash<unsigned int, hb_pair_t<double, double> >(unsigned int&&, unsigned int, hb_pair_t<double, double>&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, double, false>::set_with_hash<unsigned int const&, double>(unsigned int const&, unsigned int, double&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, double, false>::set_with_hash<unsigned int, double>(unsigned int&&, unsigned int, double&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, hb_pair_t<unsigned int, int>, false>::set_with_hash<unsigned int const&, hb_pair_t<unsigned int, int> >(unsigned int const&, unsigned int, hb_pair_t<unsigned int, int>&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, TripleDistances, false>::set_with_hash<unsigned int const&, TripleDistances>(unsigned int const&, unsigned int, TripleDistances&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, TripleDistances, false>::set_with_hash<unsigned int, TripleDistances>(unsigned int&&, unsigned int, TripleDistances&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, hb_pair_t<unsigned int, int>, false>::set_with_hash<unsigned int const&, hb_pair_t<unsigned int, int&> >(unsigned int const&, unsigned int, hb_pair_t<unsigned int, int&>&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, contour_point_vector_t, false>::set_with_hash<unsigned int const&, contour_point_vector_t&>(unsigned int const&, unsigned int, contour_point_vector_t&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, contour_point_vector_t, false>::set_with_hash<unsigned int, contour_point_vector_t>(unsigned int&&, unsigned int, contour_point_vector_t&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, hb_array_t<char const>, false>::set_with_hash<unsigned int, hb_array_t<char const> >(unsigned int&&, unsigned int, hb_array_t<char const>&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, hb_array_t<char const>, false>::set_with_hash<unsigned int const&, hb_array_t<char const>&>(unsigned int const&, unsigned int, hb_array_t<char const>&, bool)
Unexecuted instantiation: bool hb_hashmap_t<hb_vector_t<OT::HBFixed<OT::NumType<true, short, 2u>, 14u>, false> const*, unsigned int, false>::set_with_hash<hb_vector_t<OT::HBFixed<OT::NumType<true, short, 2u>, 14u>, false>*, int>(hb_vector_t<OT::HBFixed<OT::NumType<true, short, 2u>, 14u>, false>*&&, unsigned int, int&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<hb_vector_t<OT::HBFixed<OT::NumType<true, short, 2u>, 14u>, false> const*, unsigned int, false>::set_with_hash<hb_vector_t<OT::HBFixed<OT::NumType<true, short, 2u>, 14u>, false> const*, unsigned int>(hb_vector_t<OT::HBFixed<OT::NumType<true, short, 2u>, 14u>, false> const*&&, unsigned int, unsigned int&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<hb_vector_t<OT::HBFixed<OT::NumType<true, short, 2u>, 14u>, false> const*, unsigned int, false>::set_with_hash<hb_vector_t<OT::HBFixed<OT::NumType<true, short, 2u>, 14u>, false> const* const&, unsigned int&>(hb_vector_t<OT::HBFixed<OT::NumType<true, short, 2u>, 14u>, false> const* const&, unsigned int, unsigned int&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, unsigned int, false>::set_with_hash<unsigned int const&, unsigned int>(unsigned int const&, unsigned int, unsigned int&&, bool)
309
310
  template <typename VV>
311
40.7M
  bool set (const K &key, VV&& value, bool overwrite = true) { return set_with_hash (key, hb_hash (key), std::forward<VV> (value), overwrite); }
bool hb_hashmap_t<unsigned int, unsigned int, true>::set<unsigned int const&>(unsigned int const&, unsigned int const&, bool)
Line
Count
Source
311
1.07M
  bool set (const K &key, VV&& value, bool overwrite = true) { return set_with_hash (key, hb_hash (key), std::forward<VV> (value), overwrite); }
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, hb_vector_t<unsigned int, false>, false>::set<hb_vector_t<unsigned int, false> >(unsigned int const&, hb_vector_t<unsigned int, false>&&, bool)
bool hb_hashmap_t<unsigned int, unsigned int, true>::set<unsigned int&>(unsigned int const&, unsigned int&, bool)
Line
Count
Source
311
39.4M
  bool set (const K &key, VV&& value, bool overwrite = true) { return set_with_hash (key, hb_hash (key), std::forward<VV> (value), overwrite); }
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, unsigned int, true>::set<unsigned int>(unsigned int const&, unsigned int&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, hb::unique_ptr<hb_set_t>, false>::set<hb::unique_ptr<hb_set_t> >(unsigned int const&, hb::unique_ptr<hb_set_t>&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, Triple, false>::set<Triple>(unsigned int const&, Triple&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<hb::shared_ptr<hb_map_t>, unsigned int, false>::set<int>(hb::shared_ptr<hb_map_t> const&, int&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, hb::shared_ptr<hb_set_t>, false>::set<hb::shared_ptr<hb_set_t>&>(unsigned int const&, hb::shared_ptr<hb_set_t>&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, Triple, false>::set<Triple const&>(unsigned int const&, Triple const&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, Triple, false>::set<Triple&>(unsigned int const&, Triple&, bool)
Unexecuted instantiation: bool hb_hashmap_t<hb_hashmap_t<unsigned int, Triple, false> const*, unsigned int, false>::set<int>(hb_hashmap_t<unsigned int, Triple, false> const* const&, int&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<hb_hashmap_t<unsigned int, Triple, false> const*, unsigned int, false>::set<unsigned int&>(hb_hashmap_t<unsigned int, Triple, false> const* const&, unsigned int&, bool)
Unexecuted instantiation: bool hb_hashmap_t<hb_vector_t<int, false> const*, unsigned int, false>::set<unsigned int>(hb_vector_t<int, false> const* const&, unsigned int&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned long, unsigned int, false>::set<unsigned int&>(unsigned long const&, unsigned int&, bool)
Unexecuted instantiation: bool hb_hashmap_t<OT::hb_depend_context_t::recurse_key_t, bool, false>::set<bool>(OT::hb_depend_context_t::recurse_key_t const&, bool&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, unsigned int, true>::set<bool&>(unsigned int const&, bool&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, hb_set_t, false>::set<hb_set_t>(unsigned int const&, hb_set_t&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<OT::hb_depend_context_t::glyph_set_cache_key_t, unsigned int, false>::set<unsigned int&>(OT::hb_depend_context_t::glyph_set_cache_key_t const&, unsigned int&, bool)
Unexecuted instantiation: bool hb_hashmap_t<OT::hb_depend_context_t::context_set_cache_key_t, unsigned int, false>::set<unsigned int&>(OT::hb_depend_context_t::context_set_cache_key_t const&, unsigned int&, bool)
bool hb_hashmap_t<unsigned int, face_table_info_t, false>::set<face_table_info_t>(unsigned int const&, face_table_info_t&&, bool)
Line
Count
Source
311
195k
  bool set (const K &key, VV&& value, bool overwrite = true) { return set_with_hash (key, hb_hash (key), std::forward<VV> (value), overwrite); }
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, unsigned int, false>::set<int>(unsigned int const&, int&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, unsigned int, true>::set<OT::OffsetTo<OT::ClipBox, OT::NumType<true, unsigned int, 3u>, void, true> const&>(unsigned int const&, OT::OffsetTo<OT::ClipBox, OT::NumType<true, unsigned int, 3u>, void, true> const&, bool)
Unexecuted instantiation: bool hb_hashmap_t<OT::SVG::svg_id_span_t, hb_pair_t<unsigned int, unsigned int>, false>::set<hb_pair_t<unsigned int, unsigned int> >(OT::SVG::svg_id_span_t const&, hb_pair_t<unsigned int, unsigned int>&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<graph::overflow_record_t, bool, false>::set<bool>(graph::overflow_record_t const&, bool&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, unsigned int, true>::set<int>(unsigned int const&, int&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, unsigned int, false>::set<unsigned int&>(unsigned int const&, unsigned int&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, unsigned int, false>::set<unsigned int const&>(unsigned int const&, unsigned int const&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, hb_vector_t<unsigned int, false>, false>::set<hb_vector_t<unsigned int, false>&>(unsigned int const&, hb_vector_t<unsigned int, false>&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, graph::Lookup*, false>::set<graph::Lookup*&>(unsigned int const&, graph::Lookup*&, bool)
Unexecuted instantiation: bool hb_hashmap_t<hb_array_t<char const>, unsigned int, true>::set<unsigned int&>(hb_array_t<char const> const&, unsigned int&, bool)
Unexecuted instantiation: bool hb_hashmap_t<hb_vector_t<bool, false> const*, unsigned int, false>::set<unsigned int>(hb_vector_t<bool, false> const* const&, unsigned int&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<hb_vector_t<bool, false> const*, hb_vector_t<unsigned char, false>, false>::set<hb_vector_t<unsigned char, false> >(hb_vector_t<bool, false> const* const&, hb_vector_t<unsigned char, false>&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<hb_vector_t<bool, false> const*, unsigned int, false>::set<int>(hb_vector_t<bool, false> const* const&, int&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, hb_pair_t<void const*, void const*>, false>::set<hb_pair_t<OT::Feature const*, void const*&> >(unsigned int const&, hb_pair_t<OT::Feature const*, void const*&>&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, hb_pair_t<double, double>, false>::set<hb_pair_t<double&, double&> >(unsigned int const&, hb_pair_t<double&, double&>&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, double, false>::set<double>(unsigned int const&, double&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, hb_pair_t<unsigned int, int>, false>::set<hb_pair_t<unsigned int, int> >(unsigned int const&, hb_pair_t<unsigned int, int>&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, TripleDistances, false>::set<TripleDistances>(unsigned int const&, TripleDistances&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, hb_pair_t<unsigned int, int>, false>::set<hb_pair_t<unsigned int, int&> >(unsigned int const&, hb_pair_t<unsigned int, int&>&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, contour_point_vector_t, false>::set<contour_point_vector_t&>(unsigned int const&, contour_point_vector_t&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, hb_array_t<char const>, false>::set<hb_array_t<char const>&>(unsigned int const&, hb_array_t<char const>&, bool)
Unexecuted instantiation: bool hb_hashmap_t<hb_vector_t<OT::HBFixed<OT::NumType<true, short, 2u>, 14u>, false> const*, unsigned int, false>::set<unsigned int&>(hb_vector_t<OT::HBFixed<OT::NumType<true, short, 2u>, 14u>, false> const* const&, unsigned int&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, unsigned int, false>::set<unsigned int>(unsigned int const&, unsigned int&&, bool)
312
  template <typename VV>
313
  bool set (K &&key, VV&& value, bool overwrite = true)
314
97.8k
  {
315
97.8k
    uint32_t hash = hb_hash (key);
316
97.8k
    return set_with_hash (std::move (key), hash, std::forward<VV> (value), overwrite);
317
97.8k
  }
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, unsigned int, true>::set<unsigned int&>(unsigned int&&, unsigned int&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, unsigned int, true>::set<int>(unsigned int&&, int&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, unsigned int, true>::set<unsigned int>(unsigned int&&, unsigned int&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, OT::Feature const*, false>::set<OT::Feature const*>(unsigned int&&, OT::Feature const*&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<hb_hashmap_t<unsigned int, Triple, false> const*, unsigned int, false>::set<unsigned int>(hb_hashmap_t<unsigned int, Triple, false> const*&&, unsigned int&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<hb_hashmap_t<unsigned int, Triple, false> const*, unsigned int, false>::set<unsigned int&>(hb_hashmap_t<unsigned int, Triple, false> const*&&, unsigned int&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, hb_vector_t<int, false> const*, false>::set<hb_vector_t<int, false> const*>(unsigned int&&, hb_vector_t<int, false> const*&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<hb_vector_t<int, false> const*, unsigned int, false>::set<int>(hb_vector_t<int, false> const*&&, int&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<hb_set_t const*, unsigned int, false>::set<unsigned int&>(hb_set_t const*&&, unsigned int&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, hb::unique_ptr<hb_set_t>, false>::set<hb::unique_ptr<hb_set_t> >(unsigned int&&, hb::unique_ptr<hb_set_t>&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<hb_array_t<OT::NumType<true, unsigned int, 4u> const>, unsigned int, false>::set<unsigned int&>(hb_array_t<OT::NumType<true, unsigned int, 4u> const>&&, unsigned int&, bool)
bool hb_hashmap_t<unsigned int, hb::unique_ptr<hb_blob_t>, false>::set<hb::unique_ptr<hb_blob_t> >(unsigned int&&, hb::unique_ptr<hb_blob_t>&&, bool)
Line
Count
Source
314
97.8k
  {
315
97.8k
    uint32_t hash = hb_hash (key);
316
97.8k
    return set_with_hash (std::move (key), hash, std::forward<VV> (value), overwrite);
317
97.8k
  }
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, hb_array_t<char const>, false>::set<hb_array_t<char const> >(unsigned int&&, hb_array_t<char const>&&, bool)
318
  bool add (const K &key)
319
  {
320
    uint32_t hash = hb_hash (key);
321
    return set_with_hash (key, hash, item_t::default_value ());
322
  }
323
324
  const V& get_with_hash (const K &key, uint32_t hash) const
325
39.4M
  {
326
39.4M
    if (!items) return item_t::default_value ();
327
39.4M
    auto *item = fetch_item (key, hash);
328
39.4M
    if (item)
329
39.1M
      return item->value;
330
329k
    return item_t::default_value ();
331
39.4M
  }
hb_hashmap_t<hb_serialize_context_t::object_t const*, unsigned int, false>::get_with_hash(hb_serialize_context_t::object_t const* const&, unsigned int) const
Line
Count
Source
325
114k
  {
326
114k
    if (!items) return item_t::default_value ();
327
97.8k
    auto *item = fetch_item (key, hash);
328
97.8k
    if (item)
329
13.0k
      return item->value;
330
84.8k
    return item_t::default_value ();
331
97.8k
  }
hb_hashmap_t<unsigned int, unsigned int, true>::get_with_hash(unsigned int const&, unsigned int) const
Line
Count
Source
325
39.0M
  {
326
39.0M
    if (!items) return item_t::default_value ();
327
39.0M
    auto *item = fetch_item (key, hash);
328
39.0M
    if (item)
329
39.0M
      return item->value;
330
92
    return item_t::default_value ();
331
39.0M
  }
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb::unique_ptr<hb_set_t>, false>::get_with_hash(unsigned int const&, unsigned int) const
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb::shared_ptr<hb_set_t>, false>::get_with_hash(unsigned int const&, unsigned int) const
Unexecuted instantiation: hb_hashmap_t<unsigned int, TripleDistances, false>::get_with_hash(unsigned int const&, unsigned int) const
Unexecuted instantiation: hb_hashmap_t<unsigned int, Triple, false>::get_with_hash(unsigned int const&, unsigned int) const
hb_hashmap_t<unsigned int, face_table_info_t, false>::get_with_hash(unsigned int const&, unsigned int) const
Line
Count
Source
325
309k
  {
326
309k
    if (!items) return item_t::default_value ();
327
309k
    auto *item = fetch_item (key, hash);
328
309k
    if (item)
329
65.2k
      return item->value;
330
244k
    return item_t::default_value ();
331
309k
  }
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb::unique_ptr<hb_blob_t>, false>::get_with_hash(unsigned int const&, unsigned int) const
Unexecuted instantiation: hb_hashmap_t<unsigned int, graph::Lookup*, false>::get_with_hash(unsigned int const&, unsigned int) const
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_set_t, false>::get_with_hash(unsigned int const&, unsigned int) const
Unexecuted instantiation: hb_hashmap_t<unsigned int, unsigned int, false>::get_with_hash(unsigned int const&, unsigned int) const
Unexecuted instantiation: hb_hashmap_t<hb_array_t<char const>, unsigned int, true>::get_with_hash(hb_array_t<char const> const&, unsigned int) const
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_array_t<char const>, false>::get_with_hash(unsigned int const&, unsigned int) const
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_pair_t<unsigned int, int>, false>::get_with_hash(unsigned int const&, unsigned int) const
332
  const V& get (const K &key) const
333
39.3M
  {
334
39.3M
    if (!items) return item_t::default_value ();
335
39.3M
    return get_with_hash (key, hb_hash (key));
336
39.3M
  }
hb_hashmap_t<unsigned int, unsigned int, true>::get(unsigned int const&) const
Line
Count
Source
333
39.0M
  {
334
39.0M
    if (!items) return item_t::default_value ();
335
39.0M
    return get_with_hash (key, hb_hash (key));
336
39.0M
  }
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb::unique_ptr<hb_set_t>, false>::get(unsigned int const&) const
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb::shared_ptr<hb_set_t>, false>::get(unsigned int const&) const
Unexecuted instantiation: hb_hashmap_t<unsigned int, TripleDistances, false>::get(unsigned int const&) const
Unexecuted instantiation: hb_hashmap_t<unsigned int, Triple, false>::get(unsigned int const&) const
hb_hashmap_t<unsigned int, face_table_info_t, false>::get(unsigned int const&) const
Line
Count
Source
333
326k
  {
334
326k
    if (!items) return item_t::default_value ();
335
309k
    return get_with_hash (key, hb_hash (key));
336
326k
  }
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb::unique_ptr<hb_blob_t>, false>::get(unsigned int const&) const
Unexecuted instantiation: hb_hashmap_t<unsigned int, graph::Lookup*, false>::get(unsigned int const&) const
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_set_t, false>::get(unsigned int const&) const
Unexecuted instantiation: hb_hashmap_t<unsigned int, unsigned int, false>::get(unsigned int const&) const
Unexecuted instantiation: hb_hashmap_t<hb_array_t<char const>, unsigned int, true>::get(hb_array_t<char const> const&) const
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_array_t<char const>, false>::get(unsigned int const&) const
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_pair_t<unsigned int, int>, false>::get(unsigned int const&) const
337
338
  void del (const K &key)
339
0
  {
340
0
    if (!items) return;
341
0
    auto *item = fetch_item (key, hb_hash (key));
342
0
    if (item)
343
0
    {
344
0
      item->set_real (false);
345
0
      population--;
346
0
    }
347
0
  }
Unexecuted instantiation: hb_hashmap_t<hb_serialize_context_t::object_t const*, unsigned int, false>::del(hb_serialize_context_t::object_t const* const&)
Unexecuted instantiation: hb_hashmap_t<unsigned int, unsigned int, true>::del(unsigned int const&)
Unexecuted instantiation: hb_hashmap_t<unsigned int, Triple, false>::del(unsigned int const&)
Unexecuted instantiation: hb_hashmap_t<hb_hashmap_t<unsigned int, Triple, false> const*, unsigned int, false>::del(hb_hashmap_t<unsigned int, Triple, false> const* const&)
Unexecuted instantiation: hb_hashmap_t<hb_set_t const*, unsigned int, false>::del(hb_set_t const* const&)
Unexecuted instantiation: hb_hashmap_t<unsigned int, unsigned int, false>::del(unsigned int const&)
348
349
  /* Has interface. */
350
38.0M
  const V& operator [] (K k) const { return get (k); }
hb_hashmap_t<unsigned int, unsigned int, true>::operator[](unsigned int) const
Line
Count
Source
350
37.9M
  const V& operator [] (K k) const { return get (k); }
hb_hashmap_t<unsigned int, face_table_info_t, false>::operator[](unsigned int) const
Line
Count
Source
350
130k
  const V& operator [] (K k) const { return get (k); }
351
  template <typename VV=V>
352
  bool has (const K &key, VV **vp = nullptr) const
353
1.54M
  {
354
1.54M
    if (!items) return false;
355
946k
    return has_with_hash (key, hb_hash (key), vp);
356
1.54M
  }
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, hb_vector_t<unsigned int, false>, false>::has<hb_vector_t<unsigned int, false> >(unsigned int const&, hb_vector_t<unsigned int, false>**) const
bool hb_hashmap_t<unsigned int, unsigned int, true>::has<unsigned int>(unsigned int const&, unsigned int**) const
Line
Count
Source
353
831k
  {
354
831k
    if (!items) return false;
355
831k
    return has_with_hash (key, hb_hash (key), vp);
356
831k
  }
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, unsigned int, true>::has<unsigned int const>(unsigned int const&, unsigned int const**) const
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, hb::shared_ptr<hb_set_t>, false>::has<hb::shared_ptr<hb_set_t> >(unsigned int const&, hb::shared_ptr<hb_set_t>**) const
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, OT::Feature const*, false>::has<OT::Feature const*>(unsigned int const&, OT::Feature const***) const
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, hb::unique_ptr<hb_set_t>, false>::has<hb::unique_ptr<hb_set_t> >(unsigned int const&, hb::unique_ptr<hb_set_t>**) const
bool hb_hashmap_t<unsigned int, Triple, false>::has<Triple>(unsigned int const&, Triple**) const
Line
Count
Source
353
48.9k
  {
354
48.9k
    if (!items) return false;
355
0
    return has_with_hash (key, hb_hash (key), vp);
356
48.9k
  }
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, TripleDistances, false>::has<TripleDistances>(unsigned int const&, TripleDistances**) const
bool hb_hashmap_t<unsigned int, hb_pair_t<unsigned int, int>, false>::has<hb_pair_t<unsigned int, int> >(unsigned int const&, hb_pair_t<unsigned int, int>**) const
Line
Count
Source
353
538k
  {
354
538k
    if (!items) return false;
355
0
    return has_with_hash (key, hb_hash (key), vp);
356
538k
  }
Unexecuted instantiation: bool hb_hashmap_t<hb::shared_ptr<hb_map_t>, unsigned int, false>::has<unsigned int>(hb::shared_ptr<hb_map_t> const&, unsigned int**) const
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, hb_pair_t<void const*, void const*>, false>::has<hb_pair_t<void const*, void const*> >(unsigned int const&, hb_pair_t<void const*, void const*>**) const
Unexecuted instantiation: bool hb_hashmap_t<hb_vector_t<OT::HBFixed<OT::NumType<true, short, 2u>, 14u>, false> const*, unsigned int, false>::has<unsigned int>(hb_vector_t<OT::HBFixed<OT::NumType<true, short, 2u>, 14u>, false> const* const&, unsigned int**) const
Unexecuted instantiation: bool hb_hashmap_t<hb_hashmap_t<unsigned int, Triple, false> const*, unsigned int, false>::has<unsigned int>(hb_hashmap_t<unsigned int, Triple, false> const* const&, unsigned int**) const
Unexecuted instantiation: bool hb_hashmap_t<hb_vector_t<int, false> const*, unsigned int, false>::has<unsigned int>(hb_vector_t<int, false> const* const&, unsigned int**) const
Unexecuted instantiation: bool hb_hashmap_t<hb_set_t const*, unsigned int, false>::has<unsigned int>(hb_set_t const* const&, unsigned int**) const
Unexecuted instantiation: bool hb_hashmap_t<unsigned long, unsigned int, false>::has<unsigned int>(unsigned long const&, unsigned int**) const
Unexecuted instantiation: bool hb_hashmap_t<OT::hb_depend_context_t::recurse_key_t, bool, false>::has<bool>(OT::hb_depend_context_t::recurse_key_t const&, bool**) const
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, hb_set_t, false>::has<hb_set_t>(unsigned int const&, hb_set_t**) const
Unexecuted instantiation: bool hb_hashmap_t<OT::hb_depend_context_t::glyph_set_cache_key_t, unsigned int, false>::has<unsigned int>(OT::hb_depend_context_t::glyph_set_cache_key_t const&, unsigned int**) const
Unexecuted instantiation: bool hb_hashmap_t<OT::hb_depend_context_t::context_set_cache_key_t, unsigned int, false>::has<unsigned int>(OT::hb_depend_context_t::context_set_cache_key_t const&, unsigned int**) const
bool hb_hashmap_t<unsigned int, face_table_info_t, false>::has<face_table_info_t>(unsigned int const&, face_table_info_t**) const
Line
Count
Source
353
32.6k
  {
354
32.6k
    if (!items) return false;
355
32.6k
    return has_with_hash (key, hb_hash (key), vp);
356
32.6k
  }
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, unsigned int, false>::has<unsigned int>(unsigned int const&, unsigned int**) const
Unexecuted instantiation: bool hb_hashmap_t<hb_array_t<OT::NumType<true, unsigned int, 4u> const>, unsigned int, false>::has<unsigned int>(hb_array_t<OT::NumType<true, unsigned int, 4u> const> const&, unsigned int**) const
Unexecuted instantiation: bool hb_hashmap_t<OT::SVG::svg_id_span_t, hb_pair_t<unsigned int, unsigned int>, false>::has<hb_pair_t<unsigned int, unsigned int> >(OT::SVG::svg_id_span_t const&, hb_pair_t<unsigned int, unsigned int>**) const
bool hb_hashmap_t<unsigned int, hb::unique_ptr<hb_blob_t>, false>::has<hb::unique_ptr<hb_blob_t> >(unsigned int const&, hb::unique_ptr<hb_blob_t>**) const
Line
Count
Source
353
97.8k
  {
354
97.8k
    if (!items) return false;
355
81.5k
    return has_with_hash (key, hb_hash (key), vp);
356
97.8k
  }
Unexecuted instantiation: bool hb_hashmap_t<graph::overflow_record_t, bool, false>::has<bool>(graph::overflow_record_t const&, bool**) const
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, unsigned int, false>::has<unsigned int const>(unsigned int const&, unsigned int const**) const
Unexecuted instantiation: bool hb_hashmap_t<hb_vector_t<bool, false> const*, hb_vector_t<unsigned char, false>, false>::has<hb_vector_t<unsigned char, false> >(hb_vector_t<bool, false> const* const&, hb_vector_t<unsigned char, false>**) const
Unexecuted instantiation: bool hb_hashmap_t<hb_vector_t<bool, false> const*, unsigned int, false>::has<unsigned int>(hb_vector_t<bool, false> const* const&, unsigned int**) const
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, hb_pair_t<double, double>, false>::has<hb_pair_t<double, double> >(unsigned int const&, hb_pair_t<double, double>**) const
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, double, false>::has<double>(unsigned int const&, double**) const
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, hb_array_t<char const>, false>::has<hb_array_t<char const> >(unsigned int const&, hb_array_t<char const>**) const
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, contour_point_vector_t, false>::has<contour_point_vector_t>(unsigned int const&, contour_point_vector_t**) const
357
  template <typename VV=V>
358
  bool has_with_hash (const K &key, uint32_t hash, VV **vp = nullptr) const
359
946k
  {
360
946k
    if (!items) return false;
361
946k
    auto *item = fetch_item (key, hash);
362
946k
    if (item)
363
489k
    {
364
489k
      if (vp) *vp = std::addressof (item->value);
365
489k
      return true;
366
489k
    }
367
456k
    return false;
368
946k
  }
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, hb_vector_t<unsigned int, false>, false>::has_with_hash<hb_vector_t<unsigned int, false> >(unsigned int const&, unsigned int, hb_vector_t<unsigned int, false>**) const
bool hb_hashmap_t<unsigned int, unsigned int, true>::has_with_hash<unsigned int>(unsigned int const&, unsigned int, unsigned int**) const
Line
Count
Source
359
831k
  {
360
831k
    if (!items) return false;
361
831k
    auto *item = fetch_item (key, hash);
362
831k
    if (item)
363
489k
    {
364
489k
      if (vp) *vp = std::addressof (item->value);
365
489k
      return true;
366
489k
    }
367
342k
    return false;
368
831k
  }
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, unsigned int, true>::has_with_hash<unsigned int const>(unsigned int const&, unsigned int, unsigned int const**) const
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, hb::shared_ptr<hb_set_t>, false>::has_with_hash<hb::shared_ptr<hb_set_t> >(unsigned int const&, unsigned int, hb::shared_ptr<hb_set_t>**) const
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, OT::Feature const*, false>::has_with_hash<OT::Feature const*>(unsigned int const&, unsigned int, OT::Feature const***) const
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, hb::unique_ptr<hb_set_t>, false>::has_with_hash<hb::unique_ptr<hb_set_t> >(unsigned int const&, unsigned int, hb::unique_ptr<hb_set_t>**) const
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, Triple, false>::has_with_hash<Triple>(unsigned int const&, unsigned int, Triple**) const
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, TripleDistances, false>::has_with_hash<TripleDistances>(unsigned int const&, unsigned int, TripleDistances**) const
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, hb_pair_t<unsigned int, int>, false>::has_with_hash<hb_pair_t<unsigned int, int> >(unsigned int const&, unsigned int, hb_pair_t<unsigned int, int>**) const
Unexecuted instantiation: bool hb_hashmap_t<hb::shared_ptr<hb_map_t>, unsigned int, false>::has_with_hash<unsigned int>(hb::shared_ptr<hb_map_t> const&, unsigned int, unsigned int**) const
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, hb_pair_t<void const*, void const*>, false>::has_with_hash<hb_pair_t<void const*, void const*> >(unsigned int const&, unsigned int, hb_pair_t<void const*, void const*>**) const
Unexecuted instantiation: bool hb_hashmap_t<hb_vector_t<OT::HBFixed<OT::NumType<true, short, 2u>, 14u>, false> const*, unsigned int, false>::has_with_hash<unsigned int>(hb_vector_t<OT::HBFixed<OT::NumType<true, short, 2u>, 14u>, false> const* const&, unsigned int, unsigned int**) const
Unexecuted instantiation: bool hb_hashmap_t<hb_hashmap_t<unsigned int, Triple, false> const*, unsigned int, false>::has_with_hash<unsigned int>(hb_hashmap_t<unsigned int, Triple, false> const* const&, unsigned int, unsigned int**) const
Unexecuted instantiation: bool hb_hashmap_t<hb_vector_t<int, false> const*, unsigned int, false>::has_with_hash<unsigned int>(hb_vector_t<int, false> const* const&, unsigned int, unsigned int**) const
Unexecuted instantiation: bool hb_hashmap_t<hb_set_t const*, unsigned int, false>::has_with_hash<unsigned int>(hb_set_t const* const&, unsigned int, unsigned int**) const
Unexecuted instantiation: bool hb_hashmap_t<unsigned long, unsigned int, false>::has_with_hash<unsigned int>(unsigned long const&, unsigned int, unsigned int**) const
Unexecuted instantiation: bool hb_hashmap_t<OT::hb_depend_context_t::recurse_key_t, bool, false>::has_with_hash<bool>(OT::hb_depend_context_t::recurse_key_t const&, unsigned int, bool**) const
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, hb_set_t, false>::has_with_hash<hb_set_t>(unsigned int const&, unsigned int, hb_set_t**) const
Unexecuted instantiation: bool hb_hashmap_t<OT::hb_depend_context_t::glyph_set_cache_key_t, unsigned int, false>::has_with_hash<unsigned int>(OT::hb_depend_context_t::glyph_set_cache_key_t const&, unsigned int, unsigned int**) const
Unexecuted instantiation: bool hb_hashmap_t<OT::hb_depend_context_t::context_set_cache_key_t, unsigned int, false>::has_with_hash<unsigned int>(OT::hb_depend_context_t::context_set_cache_key_t const&, unsigned int, unsigned int**) const
bool hb_hashmap_t<unsigned int, face_table_info_t, false>::has_with_hash<face_table_info_t>(unsigned int const&, unsigned int, face_table_info_t**) const
Line
Count
Source
359
32.6k
  {
360
32.6k
    if (!items) return false;
361
32.6k
    auto *item = fetch_item (key, hash);
362
32.6k
    if (item)
363
0
    {
364
0
      if (vp) *vp = std::addressof (item->value);
365
0
      return true;
366
0
    }
367
32.6k
    return false;
368
32.6k
  }
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, unsigned int, false>::has_with_hash<unsigned int>(unsigned int const&, unsigned int, unsigned int**) const
Unexecuted instantiation: bool hb_hashmap_t<hb_array_t<OT::NumType<true, unsigned int, 4u> const>, unsigned int, false>::has_with_hash<unsigned int>(hb_array_t<OT::NumType<true, unsigned int, 4u> const> const&, unsigned int, unsigned int**) const
Unexecuted instantiation: bool hb_hashmap_t<OT::SVG::svg_id_span_t, hb_pair_t<unsigned int, unsigned int>, false>::has_with_hash<hb_pair_t<unsigned int, unsigned int> >(OT::SVG::svg_id_span_t const&, unsigned int, hb_pair_t<unsigned int, unsigned int>**) const
bool hb_hashmap_t<unsigned int, hb::unique_ptr<hb_blob_t>, false>::has_with_hash<hb::unique_ptr<hb_blob_t> >(unsigned int const&, unsigned int, hb::unique_ptr<hb_blob_t>**) const
Line
Count
Source
359
81.5k
  {
360
81.5k
    if (!items) return false;
361
81.5k
    auto *item = fetch_item (key, hash);
362
81.5k
    if (item)
363
0
    {
364
0
      if (vp) *vp = std::addressof (item->value);
365
0
      return true;
366
0
    }
367
81.5k
    return false;
368
81.5k
  }
Unexecuted instantiation: bool hb_hashmap_t<graph::overflow_record_t, bool, false>::has_with_hash<bool>(graph::overflow_record_t const&, unsigned int, bool**) const
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, unsigned int, false>::has_with_hash<unsigned int const>(unsigned int const&, unsigned int, unsigned int const**) const
Unexecuted instantiation: bool hb_hashmap_t<hb_vector_t<bool, false> const*, hb_vector_t<unsigned char, false>, false>::has_with_hash<hb_vector_t<unsigned char, false> >(hb_vector_t<bool, false> const* const&, unsigned int, hb_vector_t<unsigned char, false>**) const
Unexecuted instantiation: bool hb_hashmap_t<hb_vector_t<bool, false> const*, unsigned int, false>::has_with_hash<unsigned int>(hb_vector_t<bool, false> const* const&, unsigned int, unsigned int**) const
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, hb_pair_t<double, double>, false>::has_with_hash<hb_pair_t<double, double> >(unsigned int const&, unsigned int, hb_pair_t<double, double>**) const
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, double, false>::has_with_hash<double>(unsigned int const&, unsigned int, double**) const
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, hb_array_t<char const>, false>::has_with_hash<hb_array_t<char const> >(unsigned int const&, unsigned int, hb_array_t<char const>**) const
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, contour_point_vector_t, false>::has_with_hash<contour_point_vector_t>(unsigned int const&, unsigned int, contour_point_vector_t**) const
369
  item_t *fetch_item (const K &key, uint32_t hash) const
370
40.4M
  {
371
40.4M
    hash &= 0x3FFFFFFF; // We only store lower 30bit of hash
372
40.4M
    unsigned int i = hash % prime;
373
40.4M
    unsigned step = 0;
374
45.2M
    while (items[i].is_used ())
375
44.4M
    {
376
44.4M
      if ((std::is_integral<K>::value || items[i].hash == hash) &&
377
44.4M
    items[i] == key)
378
39.6M
      {
379
39.6M
  if (items[i].is_real ())
380
39.6M
    return &items[i];
381
0
  else
382
0
    return nullptr;
383
39.6M
      }
384
4.84M
      i = (i + ++step) & mask;
385
4.84M
    }
386
786k
    return nullptr;
387
40.4M
  }
hb_hashmap_t<hb_serialize_context_t::object_t const*, unsigned int, false>::fetch_item(hb_serialize_context_t::object_t const* const&, unsigned int) const
Line
Count
Source
370
97.8k
  {
371
97.8k
    hash &= 0x3FFFFFFF; // We only store lower 30bit of hash
372
97.8k
    unsigned int i = hash % prime;
373
97.8k
    unsigned step = 0;
374
158k
    while (items[i].is_used ())
375
73.9k
    {
376
73.9k
      if ((std::is_integral<K>::value || items[i].hash == hash) &&
377
13.0k
    items[i] == key)
378
13.0k
      {
379
13.0k
  if (items[i].is_real ())
380
13.0k
    return &items[i];
381
0
  else
382
0
    return nullptr;
383
13.0k
      }
384
60.9k
      i = (i + ++step) & mask;
385
60.9k
    }
386
84.8k
    return nullptr;
387
97.8k
  }
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_vector_t<unsigned int, false>, false>::fetch_item(unsigned int const&, unsigned int) const
hb_hashmap_t<unsigned int, unsigned int, true>::fetch_item(unsigned int const&, unsigned int) const
Line
Count
Source
370
39.8M
  {
371
39.8M
    hash &= 0x3FFFFFFF; // We only store lower 30bit of hash
372
39.8M
    unsigned int i = hash % prime;
373
39.8M
    unsigned step = 0;
374
44.3M
    while (items[i].is_used ())
375
44.0M
    {
376
44.0M
      if ((std::is_integral<K>::value || items[i].hash == hash) &&
377
44.0M
    items[i] == key)
378
39.5M
      {
379
39.5M
  if (items[i].is_real ())
380
39.5M
    return &items[i];
381
0
  else
382
0
    return nullptr;
383
39.5M
      }
384
4.45M
      i = (i + ++step) & mask;
385
4.45M
    }
386
342k
    return nullptr;
387
39.8M
  }
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb::shared_ptr<hb_set_t>, false>::fetch_item(unsigned int const&, unsigned int) const
Unexecuted instantiation: hb_hashmap_t<unsigned int, OT::Feature const*, false>::fetch_item(unsigned int const&, unsigned int) const
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb::unique_ptr<hb_set_t>, false>::fetch_item(unsigned int const&, unsigned int) const
Unexecuted instantiation: hb_hashmap_t<unsigned int, Triple, false>::fetch_item(unsigned int const&, unsigned int) const
Unexecuted instantiation: hb_hashmap_t<unsigned int, TripleDistances, false>::fetch_item(unsigned int const&, unsigned int) const
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_pair_t<unsigned int, int>, false>::fetch_item(unsigned int const&, unsigned int) const
Unexecuted instantiation: hb_hashmap_t<hb::shared_ptr<hb_map_t>, unsigned int, false>::fetch_item(hb::shared_ptr<hb_map_t> const&, unsigned int) const
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_pair_t<void const*, void const*>, false>::fetch_item(unsigned int const&, unsigned int) const
Unexecuted instantiation: hb_hashmap_t<hb_vector_t<OT::HBFixed<OT::NumType<true, short, 2u>, 14u>, false> const*, unsigned int, false>::fetch_item(hb_vector_t<OT::HBFixed<OT::NumType<true, short, 2u>, 14u>, false> const* const&, unsigned int) const
Unexecuted instantiation: hb_hashmap_t<hb_hashmap_t<unsigned int, Triple, false> const*, unsigned int, false>::fetch_item(hb_hashmap_t<unsigned int, Triple, false> const* const&, unsigned int) const
Unexecuted instantiation: hb_hashmap_t<hb_vector_t<int, false> const*, unsigned int, false>::fetch_item(hb_vector_t<int, false> const* const&, unsigned int) const
Unexecuted instantiation: hb_hashmap_t<hb_set_t const*, unsigned int, false>::fetch_item(hb_set_t const* const&, unsigned int) const
Unexecuted instantiation: hb_hashmap_t<unsigned long, unsigned int, false>::fetch_item(unsigned long const&, unsigned int) const
Unexecuted instantiation: hb_hashmap_t<OT::hb_depend_context_t::recurse_key_t, bool, false>::fetch_item(OT::hb_depend_context_t::recurse_key_t const&, unsigned int) const
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_set_t, false>::fetch_item(unsigned int const&, unsigned int) const
Unexecuted instantiation: hb_hashmap_t<OT::hb_depend_context_t::glyph_set_cache_key_t, unsigned int, false>::fetch_item(OT::hb_depend_context_t::glyph_set_cache_key_t const&, unsigned int) const
Unexecuted instantiation: hb_hashmap_t<OT::hb_depend_context_t::context_set_cache_key_t, unsigned int, false>::fetch_item(OT::hb_depend_context_t::context_set_cache_key_t const&, unsigned int) const
hb_hashmap_t<unsigned int, face_table_info_t, false>::fetch_item(unsigned int const&, unsigned int) const
Line
Count
Source
370
342k
  {
371
342k
    hash &= 0x3FFFFFFF; // We only store lower 30bit of hash
372
342k
    unsigned int i = hash % prime;
373
342k
    unsigned step = 0;
374
570k
    while (items[i].is_used ())
375
293k
    {
376
293k
      if ((std::is_integral<K>::value || items[i].hash == hash) &&
377
293k
    items[i] == key)
378
65.2k
      {
379
65.2k
  if (items[i].is_real ())
380
65.2k
    return &items[i];
381
0
  else
382
0
    return nullptr;
383
65.2k
      }
384
228k
      i = (i + ++step) & mask;
385
228k
    }
386
277k
    return nullptr;
387
342k
  }
Unexecuted instantiation: hb_hashmap_t<unsigned int, unsigned int, false>::fetch_item(unsigned int const&, unsigned int) const
Unexecuted instantiation: hb_hashmap_t<hb_array_t<OT::NumType<true, unsigned int, 4u> const>, unsigned int, false>::fetch_item(hb_array_t<OT::NumType<true, unsigned int, 4u> const> const&, unsigned int) const
Unexecuted instantiation: hb_hashmap_t<OT::SVG::svg_id_span_t, hb_pair_t<unsigned int, unsigned int>, false>::fetch_item(OT::SVG::svg_id_span_t const&, unsigned int) const
hb_hashmap_t<unsigned int, hb::unique_ptr<hb_blob_t>, false>::fetch_item(unsigned int const&, unsigned int) const
Line
Count
Source
370
81.5k
  {
371
81.5k
    hash &= 0x3FFFFFFF; // We only store lower 30bit of hash
372
81.5k
    unsigned int i = hash % prime;
373
81.5k
    unsigned step = 0;
374
179k
    while (items[i].is_used ())
375
97.8k
    {
376
97.8k
      if ((std::is_integral<K>::value || items[i].hash == hash) &&
377
97.8k
    items[i] == key)
378
0
      {
379
0
  if (items[i].is_real ())
380
0
    return &items[i];
381
0
  else
382
0
    return nullptr;
383
0
      }
384
97.8k
      i = (i + ++step) & mask;
385
97.8k
    }
386
81.5k
    return nullptr;
387
81.5k
  }
Unexecuted instantiation: hb_hashmap_t<graph::overflow_record_t, bool, false>::fetch_item(graph::overflow_record_t const&, unsigned int) const
Unexecuted instantiation: hb_hashmap_t<unsigned int, graph::Lookup*, false>::fetch_item(unsigned int const&, unsigned int) const
Unexecuted instantiation: hb_hashmap_t<hb_array_t<char const>, unsigned int, true>::fetch_item(hb_array_t<char const> const&, unsigned int) const
Unexecuted instantiation: hb_hashmap_t<hb_vector_t<bool, false> const*, hb_vector_t<unsigned char, false>, false>::fetch_item(hb_vector_t<bool, false> const* const&, unsigned int) const
Unexecuted instantiation: hb_hashmap_t<hb_vector_t<bool, false> const*, unsigned int, false>::fetch_item(hb_vector_t<bool, false> const* const&, unsigned int) const
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_pair_t<double, double>, false>::fetch_item(unsigned int const&, unsigned int) const
Unexecuted instantiation: hb_hashmap_t<unsigned int, double, false>::fetch_item(unsigned int const&, unsigned int) const
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_array_t<char const>, false>::fetch_item(unsigned int const&, unsigned int) const
Unexecuted instantiation: hb_hashmap_t<unsigned int, contour_point_vector_t, false>::fetch_item(unsigned int const&, unsigned int) const
388
  /* Projection. */
389
  const V& operator () (K k) const { return get (k); }
390
391
475k
  unsigned size () const { return mask ? mask + 1 : 0; }
hb_hashmap_t<hb_serialize_context_t::object_t const*, unsigned int, false>::size() const
Line
Count
Source
391
32.6k
  unsigned size () const { return mask ? mask + 1 : 0; }
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_vector_t<unsigned int, false>, false>::size() const
hb_hashmap_t<unsigned int, unsigned int, true>::size() const
Line
Count
Source
391
312k
  unsigned size () const { return mask ? mask + 1 : 0; }
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb::unique_ptr<hb_set_t>, false>::size() const
Unexecuted instantiation: hb_hashmap_t<unsigned int, Triple, false>::size() const
Unexecuted instantiation: hb_hashmap_t<hb::shared_ptr<hb_map_t>, unsigned int, false>::size() const
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb::shared_ptr<hb_set_t>, false>::size() const
Unexecuted instantiation: hb_hashmap_t<unsigned int, OT::Feature const*, false>::size() const
Unexecuted instantiation: hb_hashmap_t<hb_hashmap_t<unsigned int, Triple, false> const*, unsigned int, false>::size() const
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_vector_t<int, false> const*, false>::size() const
Unexecuted instantiation: hb_hashmap_t<hb_vector_t<int, false> const*, unsigned int, false>::size() const
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_pair_t<unsigned int, int>, false>::size() const
Unexecuted instantiation: hb_hashmap_t<hb_set_t const*, unsigned int, false>::size() const
Unexecuted instantiation: hb_hashmap_t<unsigned long, unsigned int, false>::size() const
Unexecuted instantiation: hb_hashmap_t<OT::hb_depend_context_t::recurse_key_t, bool, false>::size() const
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_set_t, false>::size() const
Unexecuted instantiation: hb_hashmap_t<OT::hb_depend_context_t::glyph_set_cache_key_t, unsigned int, false>::size() const
Unexecuted instantiation: hb_hashmap_t<OT::hb_depend_context_t::context_set_cache_key_t, unsigned int, false>::size() const
hb_hashmap_t<unsigned int, face_table_info_t, false>::size() const
Line
Count
Source
391
97.8k
  unsigned size () const { return mask ? mask + 1 : 0; }
Unexecuted instantiation: hb_hashmap_t<unsigned int, unsigned int, false>::size() const
Unexecuted instantiation: hb_hashmap_t<hb_array_t<OT::NumType<true, unsigned int, 4u> const>, unsigned int, false>::size() const
Unexecuted instantiation: hb_hashmap_t<OT::SVG::svg_id_span_t, hb_pair_t<unsigned int, unsigned int>, false>::size() const
hb_hashmap_t<unsigned int, hb::unique_ptr<hb_blob_t>, false>::size() const
Line
Count
Source
391
32.6k
  unsigned size () const { return mask ? mask + 1 : 0; }
Unexecuted instantiation: hb_hashmap_t<graph::overflow_record_t, bool, false>::size() const
Unexecuted instantiation: hb_hashmap_t<unsigned int, graph::Lookup*, false>::size() const
Unexecuted instantiation: hb_hashmap_t<hb_array_t<char const>, unsigned int, true>::size() const
Unexecuted instantiation: hb_hashmap_t<hb_vector_t<bool, false> const*, unsigned int, false>::size() const
Unexecuted instantiation: hb_hashmap_t<hb_vector_t<bool, false> const*, hb_vector_t<unsigned char, false>, false>::size() const
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_pair_t<void const*, void const*>, false>::size() const
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_pair_t<double, double>, false>::size() const
Unexecuted instantiation: hb_hashmap_t<unsigned int, double, false>::size() const
Unexecuted instantiation: hb_hashmap_t<unsigned int, TripleDistances, false>::size() const
Unexecuted instantiation: hb_hashmap_t<unsigned int, contour_point_vector_t, false>::size() const
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_array_t<char const>, false>::size() const
Unexecuted instantiation: hb_hashmap_t<hb_vector_t<OT::HBFixed<OT::NumType<true, short, 2u>, 14u>, false> const*, unsigned int, false>::size() const
392
393
  void clear ()
394
16.3k
  {
395
    /* Early-out on already-empty.  Protects the Null singleton
396
     * (zero-initialized) from any writes.  Any non-empty hashmap
397
     * is a real heap instance with writable items, so clearing
398
     * under !successful is safe. */
399
16.3k
    if (!population && !occupancy) return;
400
401
0
    for (auto &_ : hb_iter (items, size ()))
402
0
    {
403
      /* Reconstruct items. */
404
0
      _.~item_t ();
405
0
      new (&_) item_t ();
406
0
    }
407
408
0
    population = occupancy = 0;
409
0
  }
Unexecuted instantiation: hb_hashmap_t<unsigned int, unsigned int, true>::clear()
hb_hashmap_t<unsigned int, Triple, false>::clear()
Line
Count
Source
394
16.3k
  {
395
    /* Early-out on already-empty.  Protects the Null singleton
396
     * (zero-initialized) from any writes.  Any non-empty hashmap
397
     * is a real heap instance with writable items, so clearing
398
     * under !successful is safe. */
399
16.3k
    if (!population && !occupancy) return;
400
401
0
    for (auto &_ : hb_iter (items, size ()))
402
0
    {
403
      /* Reconstruct items. */
404
0
      _.~item_t ();
405
0
      new (&_) item_t ();
406
0
    }
407
408
0
    population = occupancy = 0;
409
0
  }
Unexecuted instantiation: hb_hashmap_t<OT::hb_depend_context_t::recurse_key_t, bool, false>::clear()
Unexecuted instantiation: hb_hashmap_t<unsigned long, unsigned int, false>::clear()
Unexecuted instantiation: hb_hashmap_t<unsigned int, unsigned int, false>::clear()
410
411
102k
  bool is_empty () const { return population == 0; }
hb_hashmap_t<unsigned int, unsigned int, true>::is_empty() const
Line
Count
Source
411
16.3k
  bool is_empty () const { return population == 0; }
hb_hashmap_t<unsigned int, Triple, false>::is_empty() const
Line
Count
Source
411
48.9k
  bool is_empty () const { return population == 0; }
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb::shared_ptr<hb_set_t>, false>::is_empty() const
Unexecuted instantiation: hb_hashmap_t<hb_hashmap_t<unsigned int, Triple, false> const*, unsigned int, false>::is_empty() const
hb_hashmap_t<unsigned int, hb_pair_t<unsigned int, int>, false>::is_empty() const
Line
Count
Source
411
37.0k
  bool is_empty () const { return population == 0; }
Unexecuted instantiation: hb_hashmap_t<unsigned int, graph::Lookup*, false>::is_empty() const
Unexecuted instantiation: hb_hashmap_t<hb_vector_t<OT::HBFixed<OT::NumType<true, short, 2u>, 14u>, false> const*, unsigned int, false>::is_empty() const
412
16.3k
  explicit operator bool () const { return !is_empty (); }
Unexecuted instantiation: hb_hashmap_t<hb_hashmap_t<unsigned int, Triple, false> const*, unsigned int, false>::operator bool() const
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_pair_t<unsigned int, int>, false>::operator bool() const
hb_hashmap_t<unsigned int, unsigned int, true>::operator bool() const
Line
Count
Source
412
16.3k
  explicit operator bool () const { return !is_empty (); }
Unexecuted instantiation: hb_hashmap_t<unsigned int, graph::Lookup*, false>::operator bool() const
Unexecuted instantiation: hb_hashmap_t<hb_vector_t<OT::HBFixed<OT::NumType<true, short, 2u>, 14u>, false> const*, unsigned int, false>::operator bool() const
413
414
  uint32_t hash () const
415
0
  {
416
0
    return
417
0
    + iter_items ()
418
0
    | hb_reduce ([] (uint32_t h, const item_t &_) { return h ^ _.total_hash (); }, (uint32_t) 0u)
Unexecuted instantiation: hb_hashmap_t<unsigned int, unsigned int, true>::hash() const::{lambda(unsigned int, hb_hashmap_t<unsigned int, unsigned int, true>::item_t const&)#1}::operator()(unsigned int, hb_hashmap_t<unsigned int, unsigned int, true>::item_t const&) const
Unexecuted instantiation: hb_hashmap_t<unsigned int, Triple, false>::hash() const::{lambda(unsigned int, hb_hashmap_t<unsigned int, Triple, false>::item_t const&)#1}::operator()(unsigned int, hb_hashmap_t<unsigned int, Triple, false>::item_t const&) const
419
0
    ;
420
0
  }
Unexecuted instantiation: hb_hashmap_t<unsigned int, unsigned int, true>::hash() const
Unexecuted instantiation: hb_hashmap_t<unsigned int, Triple, false>::hash() const
421
422
  bool is_equal (const hb_hashmap_t &other) const
423
0
  {
424
0
    if (population != other.population) return false;
425
426
0
    for (auto pair : iter ())
427
0
      if (other.get (pair.first) != pair.second)
428
0
        return false;
429
430
0
    return true;
431
0
  }
Unexecuted instantiation: hb_hashmap_t<unsigned int, unsigned int, true>::is_equal(hb_hashmap_t<unsigned int, unsigned int, true> const&) const
Unexecuted instantiation: hb_hashmap_t<unsigned int, Triple, false>::is_equal(hb_hashmap_t<unsigned int, Triple, false> const&) const
432
0
  bool operator == (const hb_hashmap_t &other) const { return is_equal (other); }
Unexecuted instantiation: hb_hashmap_t<unsigned int, unsigned int, true>::operator==(hb_hashmap_t<unsigned int, unsigned int, true> const&) const
Unexecuted instantiation: hb_hashmap_t<unsigned int, Triple, false>::operator==(hb_hashmap_t<unsigned int, Triple, false> const&) const
433
  bool operator != (const hb_hashmap_t &other) const { return !is_equal (other); }
434
435
65.2k
  unsigned int get_population () const { return population; }
hb_hashmap_t<unsigned int, unsigned int, true>::get_population() const
Line
Count
Source
435
48.9k
  unsigned int get_population () const { return population; }
Unexecuted instantiation: hb_hashmap_t<unsigned int, Triple, false>::get_population() const
Unexecuted instantiation: hb_hashmap_t<hb_hashmap_t<unsigned int, Triple, false> const*, unsigned int, false>::get_population() const
Unexecuted instantiation: hb_hashmap_t<unsigned long, unsigned int, false>::get_population() const
hb_hashmap_t<unsigned int, face_table_info_t, false>::get_population() const
Line
Count
Source
435
16.3k
  unsigned int get_population () const { return population; }
Unexecuted instantiation: hb_hashmap_t<unsigned int, unsigned int, false>::get_population() const
Unexecuted instantiation: hb_hashmap_t<unsigned int, graph::Lookup*, false>::get_population() const
Unexecuted instantiation: hb_hashmap_t<unsigned int, double, false>::get_population() const
436
437
  void update (const hb_hashmap_t &other)
438
0
  {
439
0
    if (unlikely (!successful)) return;
440
441
0
    hb_copy (other, *this);
442
0
  }
443
444
  /*
445
   * Iterator
446
   */
447
448
  auto iter_items () const HB_AUTO_RETURN
449
  (
450
    + hb_iter (items, this->size ())
451
    | hb_filter (&item_t::is_real)
452
  )
453
  auto iter_ref () const HB_AUTO_RETURN
454
  (
455
    + this->iter_items ()
456
    | hb_map (&item_t::get_pair_ref)
457
  )
458
  auto iter () const HB_AUTO_RETURN
459
  (
460
    + this->iter_items ()
461
    | hb_map (&item_t::get_pair)
462
  )
463
  auto keys_ref () const HB_AUTO_RETURN
464
  (
465
    + this->iter_items ()
466
    | hb_map (&item_t::get_key)
467
  )
468
  auto keys () const HB_AUTO_RETURN
469
  (
470
    + this->keys_ref ()
471
    | hb_map (hb_ridentity)
472
  )
473
  auto values_ref () const HB_AUTO_RETURN
474
  (
475
    + this->iter_items ()
476
    | hb_map (&item_t::get_value)
477
  )
478
  auto values () const HB_AUTO_RETURN
479
  (
480
    + this->values_ref ()
481
    | hb_map (hb_ridentity)
482
  )
483
484
  /* C iterator. */
485
  bool next (int *idx,
486
       K *key,
487
       V *value) const
488
0
  {
489
0
    unsigned i = (unsigned) (*idx + 1);
490
491
0
    unsigned count = size ();
492
0
    while (i < count && !items[i].is_real ())
493
0
      i++;
494
495
0
    if (i >= count)
496
0
    {
497
0
      *idx = -1;
498
0
      return false;
499
0
    }
500
501
0
    *key = items[i].key;
502
0
    *value = items[i].value;
503
504
0
    *idx = (signed) i;
505
0
    return true;
506
0
  }
507
508
  /* Sink interface. */
509
  hb_hashmap_t& operator << (const hb_pair_t<K, V>& v)
510
1.07M
  { set (v.first, v.second); return *this; }
hb_hashmap_t<unsigned int, unsigned int, true>::operator<<(hb_pair_t<unsigned int, unsigned int> const&)
Line
Count
Source
510
1.07M
  { set (v.first, v.second); return *this; }
Unexecuted instantiation: hb_hashmap_t<unsigned int, Triple, false>::operator<<(hb_pair_t<unsigned int, Triple> const&)
511
  template <typename V2 = V,
512
      hb_enable_if (!hb_is_trivially_copyable (V2))>
513
  hb_hashmap_t& operator << (const hb_pair_t<K, V&&>& v)
514
  { set (v.first, std::move (v.second)); return *this; }
515
  template <typename K2 = K,
516
      hb_enable_if (!hb_is_trivially_copyable (K2))>
517
  hb_hashmap_t& operator << (const hb_pair_t<K&&, V>& v)
518
  { set (std::move (v.first), v.second); return *this; }
519
  template <typename K2 = K, typename V2 = V,
520
      hb_enable_if (!hb_is_trivially_copyable (K2) &&
521
        !hb_is_trivially_copyable (V2))>
522
  hb_hashmap_t& operator << (const hb_pair_t<K&&, V&&>& v)
523
  { set (std::move (v.first), std::move (v.second)); return *this; }
524
525
  static unsigned int prime_for (unsigned int shift)
526
410k
  {
527
    /* Following comment and table copied from glib. */
528
    /* Each table size has an associated prime modulo (the first prime
529
     * lower than the table size) used to find the initial bucket. Probing
530
     * then works modulo 2^n. The prime modulo is necessary to get a
531
     * good distribution with poor hash functions.
532
     */
533
    /* Not declaring static to make all kinds of compilers happy... */
534
410k
    /*static*/ const unsigned int prime_mod [32] =
535
410k
    {
536
410k
      1,          /* For 1 << 0 */
537
410k
      2,
538
410k
      3,
539
410k
      7,
540
410k
      13,
541
410k
      31,
542
410k
      61,
543
410k
      127,
544
410k
      251,
545
410k
      509,
546
410k
      1021,
547
410k
      2039,
548
410k
      4093,
549
410k
      8191,
550
410k
      16381,
551
410k
      32749,
552
410k
      65521,      /* For 1 << 16 */
553
410k
      131071,
554
410k
      262139,
555
410k
      524287,
556
410k
      1048573,
557
410k
      2097143,
558
410k
      4194301,
559
410k
      8388593,
560
410k
      16777213,
561
410k
      33554393,
562
410k
      67108859,
563
410k
      134217689,
564
410k
      268435399,
565
410k
      536870909,
566
410k
      1073741789,
567
410k
      2147483647  /* For 1 << 31 */
568
410k
    };
569
570
410k
    if (unlikely (shift >= ARRAY_LENGTH (prime_mod)))
571
0
      return prime_mod[ARRAY_LENGTH (prime_mod) - 1];
572
573
410k
    return prime_mod[shift];
574
410k
  }
hb_hashmap_t<hb_serialize_context_t::object_t const*, unsigned int, false>::prime_for(unsigned int)
Line
Count
Source
526
32.6k
  {
527
    /* Following comment and table copied from glib. */
528
    /* Each table size has an associated prime modulo (the first prime
529
     * lower than the table size) used to find the initial bucket. Probing
530
     * then works modulo 2^n. The prime modulo is necessary to get a
531
     * good distribution with poor hash functions.
532
     */
533
    /* Not declaring static to make all kinds of compilers happy... */
534
32.6k
    /*static*/ const unsigned int prime_mod [32] =
535
32.6k
    {
536
32.6k
      1,          /* For 1 << 0 */
537
32.6k
      2,
538
32.6k
      3,
539
32.6k
      7,
540
32.6k
      13,
541
32.6k
      31,
542
32.6k
      61,
543
32.6k
      127,
544
32.6k
      251,
545
32.6k
      509,
546
32.6k
      1021,
547
32.6k
      2039,
548
32.6k
      4093,
549
32.6k
      8191,
550
32.6k
      16381,
551
32.6k
      32749,
552
32.6k
      65521,      /* For 1 << 16 */
553
32.6k
      131071,
554
32.6k
      262139,
555
32.6k
      524287,
556
32.6k
      1048573,
557
32.6k
      2097143,
558
32.6k
      4194301,
559
32.6k
      8388593,
560
32.6k
      16777213,
561
32.6k
      33554393,
562
32.6k
      67108859,
563
32.6k
      134217689,
564
32.6k
      268435399,
565
32.6k
      536870909,
566
32.6k
      1073741789,
567
32.6k
      2147483647  /* For 1 << 31 */
568
32.6k
    };
569
570
32.6k
    if (unlikely (shift >= ARRAY_LENGTH (prime_mod)))
571
0
      return prime_mod[ARRAY_LENGTH (prime_mod) - 1];
572
573
32.6k
    return prime_mod[shift];
574
32.6k
  }
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_vector_t<unsigned int, false>, false>::prime_for(unsigned int)
hb_hashmap_t<unsigned int, unsigned int, true>::prime_for(unsigned int)
Line
Count
Source
526
295k
  {
527
    /* Following comment and table copied from glib. */
528
    /* Each table size has an associated prime modulo (the first prime
529
     * lower than the table size) used to find the initial bucket. Probing
530
     * then works modulo 2^n. The prime modulo is necessary to get a
531
     * good distribution with poor hash functions.
532
     */
533
    /* Not declaring static to make all kinds of compilers happy... */
534
295k
    /*static*/ const unsigned int prime_mod [32] =
535
295k
    {
536
295k
      1,          /* For 1 << 0 */
537
295k
      2,
538
295k
      3,
539
295k
      7,
540
295k
      13,
541
295k
      31,
542
295k
      61,
543
295k
      127,
544
295k
      251,
545
295k
      509,
546
295k
      1021,
547
295k
      2039,
548
295k
      4093,
549
295k
      8191,
550
295k
      16381,
551
295k
      32749,
552
295k
      65521,      /* For 1 << 16 */
553
295k
      131071,
554
295k
      262139,
555
295k
      524287,
556
295k
      1048573,
557
295k
      2097143,
558
295k
      4194301,
559
295k
      8388593,
560
295k
      16777213,
561
295k
      33554393,
562
295k
      67108859,
563
295k
      134217689,
564
295k
      268435399,
565
295k
      536870909,
566
295k
      1073741789,
567
295k
      2147483647  /* For 1 << 31 */
568
295k
    };
569
570
295k
    if (unlikely (shift >= ARRAY_LENGTH (prime_mod)))
571
0
      return prime_mod[ARRAY_LENGTH (prime_mod) - 1];
572
573
295k
    return prime_mod[shift];
574
295k
  }
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb::unique_ptr<hb_set_t>, false>::prime_for(unsigned int)
Unexecuted instantiation: hb_hashmap_t<unsigned int, Triple, false>::prime_for(unsigned int)
Unexecuted instantiation: hb_hashmap_t<hb::shared_ptr<hb_map_t>, unsigned int, false>::prime_for(unsigned int)
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb::shared_ptr<hb_set_t>, false>::prime_for(unsigned int)
Unexecuted instantiation: hb_hashmap_t<unsigned int, OT::Feature const*, false>::prime_for(unsigned int)
Unexecuted instantiation: hb_hashmap_t<hb_hashmap_t<unsigned int, Triple, false> const*, unsigned int, false>::prime_for(unsigned int)
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_vector_t<int, false> const*, false>::prime_for(unsigned int)
Unexecuted instantiation: hb_hashmap_t<hb_vector_t<int, false> const*, unsigned int, false>::prime_for(unsigned int)
Unexecuted instantiation: hb_hashmap_t<hb_set_t const*, unsigned int, false>::prime_for(unsigned int)
Unexecuted instantiation: hb_hashmap_t<unsigned long, unsigned int, false>::prime_for(unsigned int)
Unexecuted instantiation: hb_hashmap_t<OT::hb_depend_context_t::recurse_key_t, bool, false>::prime_for(unsigned int)
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_set_t, false>::prime_for(unsigned int)
Unexecuted instantiation: hb_hashmap_t<OT::hb_depend_context_t::glyph_set_cache_key_t, unsigned int, false>::prime_for(unsigned int)
Unexecuted instantiation: hb_hashmap_t<OT::hb_depend_context_t::context_set_cache_key_t, unsigned int, false>::prime_for(unsigned int)
hb_hashmap_t<unsigned int, face_table_info_t, false>::prime_for(unsigned int)
Line
Count
Source
526
48.9k
  {
527
    /* Following comment and table copied from glib. */
528
    /* Each table size has an associated prime modulo (the first prime
529
     * lower than the table size) used to find the initial bucket. Probing
530
     * then works modulo 2^n. The prime modulo is necessary to get a
531
     * good distribution with poor hash functions.
532
     */
533
    /* Not declaring static to make all kinds of compilers happy... */
534
48.9k
    /*static*/ const unsigned int prime_mod [32] =
535
48.9k
    {
536
48.9k
      1,          /* For 1 << 0 */
537
48.9k
      2,
538
48.9k
      3,
539
48.9k
      7,
540
48.9k
      13,
541
48.9k
      31,
542
48.9k
      61,
543
48.9k
      127,
544
48.9k
      251,
545
48.9k
      509,
546
48.9k
      1021,
547
48.9k
      2039,
548
48.9k
      4093,
549
48.9k
      8191,
550
48.9k
      16381,
551
48.9k
      32749,
552
48.9k
      65521,      /* For 1 << 16 */
553
48.9k
      131071,
554
48.9k
      262139,
555
48.9k
      524287,
556
48.9k
      1048573,
557
48.9k
      2097143,
558
48.9k
      4194301,
559
48.9k
      8388593,
560
48.9k
      16777213,
561
48.9k
      33554393,
562
48.9k
      67108859,
563
48.9k
      134217689,
564
48.9k
      268435399,
565
48.9k
      536870909,
566
48.9k
      1073741789,
567
48.9k
      2147483647  /* For 1 << 31 */
568
48.9k
    };
569
570
48.9k
    if (unlikely (shift >= ARRAY_LENGTH (prime_mod)))
571
0
      return prime_mod[ARRAY_LENGTH (prime_mod) - 1];
572
573
48.9k
    return prime_mod[shift];
574
48.9k
  }
Unexecuted instantiation: hb_hashmap_t<unsigned int, unsigned int, false>::prime_for(unsigned int)
Unexecuted instantiation: hb_hashmap_t<hb_array_t<OT::NumType<true, unsigned int, 4u> const>, unsigned int, false>::prime_for(unsigned int)
Unexecuted instantiation: hb_hashmap_t<OT::SVG::svg_id_span_t, hb_pair_t<unsigned int, unsigned int>, false>::prime_for(unsigned int)
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_pair_t<unsigned int, int>, false>::prime_for(unsigned int)
hb_hashmap_t<unsigned int, hb::unique_ptr<hb_blob_t>, false>::prime_for(unsigned int)
Line
Count
Source
526
32.6k
  {
527
    /* Following comment and table copied from glib. */
528
    /* Each table size has an associated prime modulo (the first prime
529
     * lower than the table size) used to find the initial bucket. Probing
530
     * then works modulo 2^n. The prime modulo is necessary to get a
531
     * good distribution with poor hash functions.
532
     */
533
    /* Not declaring static to make all kinds of compilers happy... */
534
32.6k
    /*static*/ const unsigned int prime_mod [32] =
535
32.6k
    {
536
32.6k
      1,          /* For 1 << 0 */
537
32.6k
      2,
538
32.6k
      3,
539
32.6k
      7,
540
32.6k
      13,
541
32.6k
      31,
542
32.6k
      61,
543
32.6k
      127,
544
32.6k
      251,
545
32.6k
      509,
546
32.6k
      1021,
547
32.6k
      2039,
548
32.6k
      4093,
549
32.6k
      8191,
550
32.6k
      16381,
551
32.6k
      32749,
552
32.6k
      65521,      /* For 1 << 16 */
553
32.6k
      131071,
554
32.6k
      262139,
555
32.6k
      524287,
556
32.6k
      1048573,
557
32.6k
      2097143,
558
32.6k
      4194301,
559
32.6k
      8388593,
560
32.6k
      16777213,
561
32.6k
      33554393,
562
32.6k
      67108859,
563
32.6k
      134217689,
564
32.6k
      268435399,
565
32.6k
      536870909,
566
32.6k
      1073741789,
567
32.6k
      2147483647  /* For 1 << 31 */
568
32.6k
    };
569
570
32.6k
    if (unlikely (shift >= ARRAY_LENGTH (prime_mod)))
571
0
      return prime_mod[ARRAY_LENGTH (prime_mod) - 1];
572
573
32.6k
    return prime_mod[shift];
574
32.6k
  }
Unexecuted instantiation: hb_hashmap_t<graph::overflow_record_t, bool, false>::prime_for(unsigned int)
Unexecuted instantiation: hb_hashmap_t<unsigned int, graph::Lookup*, false>::prime_for(unsigned int)
Unexecuted instantiation: hb_hashmap_t<hb_array_t<char const>, unsigned int, true>::prime_for(unsigned int)
Unexecuted instantiation: hb_hashmap_t<hb_vector_t<bool, false> const*, unsigned int, false>::prime_for(unsigned int)
Unexecuted instantiation: hb_hashmap_t<hb_vector_t<bool, false> const*, hb_vector_t<unsigned char, false>, false>::prime_for(unsigned int)
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_pair_t<void const*, void const*>, false>::prime_for(unsigned int)
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_pair_t<double, double>, false>::prime_for(unsigned int)
Unexecuted instantiation: hb_hashmap_t<unsigned int, double, false>::prime_for(unsigned int)
Unexecuted instantiation: hb_hashmap_t<unsigned int, TripleDistances, false>::prime_for(unsigned int)
Unexecuted instantiation: hb_hashmap_t<unsigned int, contour_point_vector_t, false>::prime_for(unsigned int)
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_array_t<char const>, false>::prime_for(unsigned int)
Unexecuted instantiation: hb_hashmap_t<hb_vector_t<OT::HBFixed<OT::NumType<true, short, 2u>, 14u>, false> const*, unsigned int, false>::prime_for(unsigned int)
575
};
576
577
/*
578
 * hb_map_t
579
 */
580
581
struct hb_map_t : hb_hashmap_t<hb_codepoint_t,
582
             hb_codepoint_t,
583
             true>
584
{
585
  using hashmap = hb_hashmap_t<hb_codepoint_t,
586
             hb_codepoint_t,
587
             true>;
588
589
  ~hb_map_t () = default;
590
305k
  hb_map_t () : hashmap () {}
591
0
  hb_map_t (const hb_map_t &o) : hashmap ((hashmap &) o) {}
592
0
  hb_map_t (hb_map_t &&o)  noexcept : hashmap (std::move ((hashmap &) o)) {}
593
0
  hb_map_t& operator= (const hb_map_t&) = default;
594
0
  hb_map_t& operator= (hb_map_t&&) = default;
595
0
  hb_map_t (std::initializer_list<hb_codepoint_pair_t> lst) : hashmap (lst) {}
596
  template <typename Iterable,
597
      hb_requires (hb_is_iterable (Iterable))>
598
0
  hb_map_t (const Iterable &o) : hashmap (o) {}
599
};
600
601
602
#endif /* HB_MAP_HH */