Coverage Report

Created: 2025-10-10 06:20

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/harfbuzz/src/OT/glyf/composite-iter.hh
Line
Count
Source
1
#ifndef OT_GLYF_COMPOSITE_ITER_HH
2
#define OT_GLYF_COMPOSITE_ITER_HH
3
4
5
#include "../../hb.hh"
6
7
8
namespace OT {
9
namespace glyf_impl {
10
11
12
template <typename CompositeGlyphRecord>
13
struct composite_iter_tmpl : hb_iter_with_fallback_t<composite_iter_tmpl<CompositeGlyphRecord>,
14
                 const CompositeGlyphRecord &>
15
{
16
  typedef const CompositeGlyphRecord *__item_t__;
17
  composite_iter_tmpl (hb_bytes_t glyph_, __item_t__ current_) :
18
724k
      glyph (glyph_), current (nullptr), current_size (0)
19
724k
  {
20
724k
    set_current (current_);
21
724k
  }
22
23
724k
  composite_iter_tmpl () : glyph (hb_bytes_t ()), current (nullptr), current_size (0) {}
24
25
3.83M
  const CompositeGlyphRecord & __item__ () const { return *current; }
26
0
  bool __more__ () const { return current; }
27
  void __next__ ()
28
3.63M
  {
29
3.63M
    if (!current->has_more ()) { current = nullptr; return; }
30
31
3.17M
    set_current (&StructAtOffset<CompositeGlyphRecord> (current, current_size));
32
3.17M
  }
33
724k
  composite_iter_tmpl __end__ () const { return composite_iter_tmpl (); }
34
  bool operator != (const composite_iter_tmpl& o) const
35
4.36M
  { return current != o.current; }
36
37
38
  void set_current (__item_t__ current_)
39
3.89M
  {
40
3.89M
    if (!glyph.check_range (current_, CompositeGlyphRecord::min_size))
41
12.5k
    {
42
12.5k
      current = nullptr;
43
12.5k
      current_size = 0;
44
12.5k
      return;
45
12.5k
    }
46
3.88M
    unsigned size = current_->get_size ();
47
3.88M
    if (!glyph.check_range (current_, size))
48
51.4k
    {
49
51.4k
      current = nullptr;
50
51.4k
      current_size = 0;
51
51.4k
      return;
52
51.4k
    }
53
54
3.83M
    current = current_;
55
3.83M
    current_size = size;
56
3.83M
  }
57
58
  private:
59
  hb_bytes_t glyph;
60
  __item_t__ current;
61
  unsigned current_size;
62
};
63
64
65
} /* namespace glyf_impl */
66
} /* namespace OT */
67
68
#endif /* OT_GLYF_COMPOSITE_ITER_HH */