Coverage Report

Created: 2025-06-24 08:20

/src/skia/src/base/SkZip.h
Line
Count
Source (jump to first uncovered line)
1
/*
2
 * Copyright 2019 Google Inc.
3
 *
4
 * Use of this source code is governed by a BSD-style license that can be
5
 * found in the LICENSE file.
6
 */
7
8
#ifndef SkZip_DEFINED
9
#define SkZip_DEFINED
10
11
#include "include/private/base/SkAssert.h"
12
#include "include/private/base/SkDebug.h"
13
#include "include/private/base/SkSpan_impl.h"
14
15
#include <algorithm>
16
#include <cstddef>
17
#include <cstdint>
18
#include <iterator>
19
#include <tuple>
20
#include <utility>
21
22
// Take a list of things that can be pointers, and use them all in parallel. The iterators and
23
// accessor operator[] for the class produce a tuple of the items.
24
template<typename... Ts>
25
class SkZip {
26
    using ReturnTuple = std::tuple<Ts&...>;
27
28
    class Iterator {
29
    public:
30
        using value_type = ReturnTuple;
31
        using difference_type = ptrdiff_t;
32
        using pointer = value_type*;
33
        using reference = value_type;
34
        using iterator_category = std::input_iterator_tag;
35
6.15M
        constexpr Iterator(const SkZip* zip, size_t index) : fZip(zip), fIndex(index) {}
SkZip<unsigned short const, SkPoint const>::Iterator::Iterator(SkZip<unsigned short const, SkPoint const> const*, unsigned long)
Line
Count
Source
35
3.41M
        constexpr Iterator(const SkZip* zip, size_t index) : fZip(zip), fIndex(index) {}
SkZip<SkRect, SkGlyph const*>::Iterator::Iterator(SkZip<SkRect, SkGlyph const*> const*, unsigned long)
Line
Count
Source
35
69.6k
        constexpr Iterator(const SkZip* zip, size_t index) : fZip(zip), fIndex(index) {}
SkZip<float, SkGlyph const*>::Iterator::Iterator(SkZip<float, SkGlyph const*> const*, unsigned long)
Line
Count
Source
35
103k
        constexpr Iterator(const SkZip* zip, size_t index) : fZip(zip), fIndex(index) {}
Unexecuted instantiation: SkZip<SkPoint, SkGlyph const*>::Iterator::Iterator(SkZip<SkPoint, SkGlyph const*> const*, unsigned long)
Unexecuted instantiation: SkZip<SkRSXform, SkPoint const, SkPoint const>::Iterator::Iterator(SkZip<SkRSXform, SkPoint const, SkPoint const> const*, unsigned long)
SkZip<SkPoint const, SkGlyph const*>::Iterator::Iterator(SkZip<SkPoint const, SkGlyph const*> const*, unsigned long)
Line
Count
Source
35
190k
        constexpr Iterator(const SkZip* zip, size_t index) : fZip(zip), fIndex(index) {}
Unexecuted instantiation: SkZip<SkPoint const, SkPoint const, SkGlyph const*>::Iterator::Iterator(SkZip<SkPoint const, SkPoint const, SkGlyph const*> const*, unsigned long)
Unexecuted instantiation: SkZip<SkPoint const, SkPoint const>::Iterator::Iterator(SkZip<SkPoint const, SkPoint const> const*, unsigned long)
Unexecuted instantiation: SkZip<SkPoint, SkPoint, SkRSXform const>::Iterator::Iterator(SkZip<SkPoint, SkPoint, SkRSXform const> const*, unsigned long)
SkZip<sktext::gpu::Mask2DVertex [4], sktext::gpu::Glyph const*, SkPoint const>::Iterator::Iterator(SkZip<sktext::gpu::Mask2DVertex [4], sktext::gpu::Glyph const*, SkPoint const> const*, unsigned long)
Line
Count
Source
35
6.50k
        constexpr Iterator(const SkZip* zip, size_t index) : fZip(zip), fIndex(index) {}
SkZip<sktext::gpu::ARGB2DVertex [4], sktext::gpu::Glyph const*, SkPoint const>::Iterator::Iterator(SkZip<sktext::gpu::ARGB2DVertex [4], sktext::gpu::Glyph const*, SkPoint const> const*, unsigned long)
Line
Count
Source
35
74
        constexpr Iterator(const SkZip* zip, size_t index) : fZip(zip), fIndex(index) {}
SkZip<sktext::gpu::ARGB3DVertex [4], sktext::gpu::Glyph const*, SkPoint const>::Iterator::Iterator(SkZip<sktext::gpu::ARGB3DVertex [4], sktext::gpu::Glyph const*, SkPoint const> const*, unsigned long)
Line
Count
Source
35
12
        constexpr Iterator(const SkZip* zip, size_t index) : fZip(zip), fIndex(index) {}
SkZip<sktext::gpu::Mask3DVertex [4], sktext::gpu::Glyph const*, SkPoint const>::Iterator::Iterator(SkZip<sktext::gpu::Mask3DVertex [4], sktext::gpu::Glyph const*, SkPoint const> const*, unsigned long)
Line
Count
Source
35
3.86k
        constexpr Iterator(const SkZip* zip, size_t index) : fZip(zip), fIndex(index) {}
Unexecuted instantiation: SkZip<sktext::gpu::Glyph const*, SkPoint const>::Iterator::Iterator(SkZip<sktext::gpu::Glyph const*, SkPoint const> const*, unsigned long)
Unexecuted instantiation: SkZip<std::__1::unique_ptr<SkPDF::StructureElementNode, std::__1::default_delete<SkPDF::StructureElementNode> >, SkPDFStructElem>::Iterator::Iterator(SkZip<std::__1::unique_ptr<SkPDF::StructureElementNode, std::__1::default_delete<SkPDF::StructureElementNode> >, SkPDFStructElem> const*, unsigned long)
SkZip<sktext::IDOrPath, SkPoint const>::Iterator::Iterator(SkZip<sktext::IDOrPath, SkPoint const> const*, unsigned long)
Line
Count
Source
35
33.5k
        constexpr Iterator(const SkZip* zip, size_t index) : fZip(zip), fIndex(index) {}
SkZip<SkGlyph const*, SkPoint>::Iterator::Iterator(SkZip<SkGlyph const*, SkPoint> const*, unsigned long)
Line
Count
Source
35
2.28M
        constexpr Iterator(const SkZip* zip, size_t index) : fZip(zip), fIndex(index) {}
SkZip<SkGlyph const*, SkPoint const>::Iterator::Iterator(SkZip<SkGlyph const*, SkPoint const> const*, unsigned long)
Line
Count
Source
35
55.4k
        constexpr Iterator(const SkZip* zip, size_t index) : fZip(zip), fIndex(index) {}
36
1.04M
        constexpr Iterator(const Iterator& that) : Iterator(that.fZip, that.fIndex) {}
37
13.1M
        constexpr Iterator& operator++() { ++fIndex; return *this; }
SkZip<unsigned short const, SkPoint const>::Iterator::operator++()
Line
Count
Source
37
4.40M
        constexpr Iterator& operator++() { ++fIndex; return *this; }
SkZip<SkRect, SkGlyph const*>::Iterator::operator++()
Line
Count
Source
37
2.46M
        constexpr Iterator& operator++() { ++fIndex; return *this; }
SkZip<float, SkGlyph const*>::Iterator::operator++()
Line
Count
Source
37
4.42M
        constexpr Iterator& operator++() { ++fIndex; return *this; }
Unexecuted instantiation: SkZip<SkPoint, SkGlyph const*>::Iterator::operator++()
Unexecuted instantiation: SkZip<SkRSXform, SkPoint const, SkPoint const>::Iterator::operator++()
SkZip<SkPoint const, SkGlyph const*>::Iterator::operator++()
Line
Count
Source
37
170k
        constexpr Iterator& operator++() { ++fIndex; return *this; }
Unexecuted instantiation: SkZip<SkPoint const, SkPoint const, SkGlyph const*>::Iterator::operator++()
Unexecuted instantiation: SkZip<SkPoint const, SkPoint const>::Iterator::operator++()
Unexecuted instantiation: SkZip<SkPoint, SkPoint, SkRSXform const>::Iterator::operator++()
SkZip<sktext::gpu::Mask2DVertex [4], sktext::gpu::Glyph const*, SkPoint const>::Iterator::operator++()
Line
Count
Source
37
41.6k
        constexpr Iterator& operator++() { ++fIndex; return *this; }
SkZip<sktext::gpu::ARGB2DVertex [4], sktext::gpu::Glyph const*, SkPoint const>::Iterator::operator++()
Line
Count
Source
37
736
        constexpr Iterator& operator++() { ++fIndex; return *this; }
SkZip<sktext::gpu::ARGB3DVertex [4], sktext::gpu::Glyph const*, SkPoint const>::Iterator::operator++()
Line
Count
Source
37
81
        constexpr Iterator& operator++() { ++fIndex; return *this; }
SkZip<sktext::gpu::Mask3DVertex [4], sktext::gpu::Glyph const*, SkPoint const>::Iterator::operator++()
Line
Count
Source
37
27.4k
        constexpr Iterator& operator++() { ++fIndex; return *this; }
Unexecuted instantiation: SkZip<sktext::gpu::Glyph const*, SkPoint const>::Iterator::operator++()
Unexecuted instantiation: SkZip<std::__1::unique_ptr<SkPDF::StructureElementNode, std::__1::default_delete<SkPDF::StructureElementNode> >, SkPDFStructElem>::Iterator::operator++()
SkZip<sktext::IDOrPath, SkPoint const>::Iterator::operator++()
Line
Count
Source
37
268k
        constexpr Iterator& operator++() { ++fIndex; return *this; }
SkZip<SkGlyph const*, SkPoint>::Iterator::operator++()
Line
Count
Source
37
1.33M
        constexpr Iterator& operator++() { ++fIndex; return *this; }
SkZip<SkGlyph const*, SkPoint const>::Iterator::operator++()
Line
Count
Source
37
57.8k
        constexpr Iterator& operator++() { ++fIndex; return *this; }
38
        constexpr Iterator operator++(int) { Iterator tmp(*this); operator++(); return tmp; }
39
        constexpr bool operator==(const Iterator& rhs) const { return fIndex == rhs.fIndex; }
40
15.7M
        constexpr bool operator!=(const Iterator& rhs) const { return fIndex != rhs.fIndex; }
SkZip<unsigned short const, SkPoint const>::Iterator::operator!=(SkZip<unsigned short const, SkPoint const>::Iterator const&) const
Line
Count
Source
40
5.59M
        constexpr bool operator!=(const Iterator& rhs) const { return fIndex != rhs.fIndex; }
SkZip<SkRect, SkGlyph const*>::Iterator::operator!=(SkZip<SkRect, SkGlyph const*>::Iterator const&) const
Line
Count
Source
40
2.49M
        constexpr bool operator!=(const Iterator& rhs) const { return fIndex != rhs.fIndex; }
SkZip<float, SkGlyph const*>::Iterator::operator!=(SkZip<float, SkGlyph const*>::Iterator const&) const
Line
Count
Source
40
4.47M
        constexpr bool operator!=(const Iterator& rhs) const { return fIndex != rhs.fIndex; }
Unexecuted instantiation: SkZip<SkPoint, SkGlyph const*>::Iterator::operator!=(SkZip<SkPoint, SkGlyph const*>::Iterator const&) const
Unexecuted instantiation: SkZip<SkRSXform, SkPoint const, SkPoint const>::Iterator::operator!=(SkZip<SkRSXform, SkPoint const, SkPoint const>::Iterator const&) const
SkZip<SkPoint const, SkGlyph const*>::Iterator::operator!=(SkZip<SkPoint const, SkGlyph const*>::Iterator const&) const
Line
Count
Source
40
266k
        constexpr bool operator!=(const Iterator& rhs) const { return fIndex != rhs.fIndex; }
Unexecuted instantiation: SkZip<SkPoint const, SkPoint const, SkGlyph const*>::Iterator::operator!=(SkZip<SkPoint const, SkPoint const, SkGlyph const*>::Iterator const&) const
Unexecuted instantiation: SkZip<SkPoint const, SkPoint const>::Iterator::operator!=(SkZip<SkPoint const, SkPoint const>::Iterator const&) const
Unexecuted instantiation: SkZip<SkPoint, SkPoint, SkRSXform const>::Iterator::operator!=(SkZip<SkPoint, SkPoint, SkRSXform const>::Iterator const&) const
SkZip<sktext::gpu::Mask2DVertex [4], sktext::gpu::Glyph const*, SkPoint const>::Iterator::operator!=(SkZip<sktext::gpu::Mask2DVertex [4], sktext::gpu::Glyph const*, SkPoint const>::Iterator const&) const
Line
Count
Source
40
44.8k
        constexpr bool operator!=(const Iterator& rhs) const { return fIndex != rhs.fIndex; }
SkZip<sktext::gpu::ARGB2DVertex [4], sktext::gpu::Glyph const*, SkPoint const>::Iterator::operator!=(SkZip<sktext::gpu::ARGB2DVertex [4], sktext::gpu::Glyph const*, SkPoint const>::Iterator const&) const
Line
Count
Source
40
773
        constexpr bool operator!=(const Iterator& rhs) const { return fIndex != rhs.fIndex; }
SkZip<sktext::gpu::ARGB3DVertex [4], sktext::gpu::Glyph const*, SkPoint const>::Iterator::operator!=(SkZip<sktext::gpu::ARGB3DVertex [4], sktext::gpu::Glyph const*, SkPoint const>::Iterator const&) const
Line
Count
Source
40
87
        constexpr bool operator!=(const Iterator& rhs) const { return fIndex != rhs.fIndex; }
SkZip<sktext::gpu::Mask3DVertex [4], sktext::gpu::Glyph const*, SkPoint const>::Iterator::operator!=(SkZip<sktext::gpu::Mask3DVertex [4], sktext::gpu::Glyph const*, SkPoint const>::Iterator const&) const
Line
Count
Source
40
29.3k
        constexpr bool operator!=(const Iterator& rhs) const { return fIndex != rhs.fIndex; }
Unexecuted instantiation: SkZip<sktext::gpu::Glyph const*, SkPoint const>::Iterator::operator!=(SkZip<sktext::gpu::Glyph const*, SkPoint const>::Iterator const&) const
Unexecuted instantiation: SkZip<std::__1::unique_ptr<SkPDF::StructureElementNode, std::__1::default_delete<SkPDF::StructureElementNode> >, SkPDFStructElem>::Iterator::operator!=(SkZip<std::__1::unique_ptr<SkPDF::StructureElementNode, std::__1::default_delete<SkPDF::StructureElementNode> >, SkPDFStructElem>::Iterator const&) const
SkZip<sktext::IDOrPath, SkPoint const>::Iterator::operator!=(SkZip<sktext::IDOrPath, SkPoint const>::Iterator const&) const
Line
Count
Source
40
285k
        constexpr bool operator!=(const Iterator& rhs) const { return fIndex != rhs.fIndex; }
SkZip<SkGlyph const*, SkPoint>::Iterator::operator!=(SkZip<SkGlyph const*, SkPoint>::Iterator const&) const
Line
Count
Source
40
2.47M
        constexpr bool operator!=(const Iterator& rhs) const { return fIndex != rhs.fIndex; }
SkZip<SkGlyph const*, SkPoint const>::Iterator::operator!=(SkZip<SkGlyph const*, SkPoint const>::Iterator const&) const
Line
Count
Source
40
85.5k
        constexpr bool operator!=(const Iterator& rhs) const { return fIndex != rhs.fIndex; }
41
12.2M
        constexpr reference operator*() { return (*fZip)[fIndex]; }
SkZip<unsigned short const, SkPoint const>::Iterator::operator*()
Line
Count
Source
41
3.44M
        constexpr reference operator*() { return (*fZip)[fIndex]; }
SkZip<SkRect, SkGlyph const*>::Iterator::operator*()
Line
Count
Source
41
2.46M
        constexpr reference operator*() { return (*fZip)[fIndex]; }
SkZip<float, SkGlyph const*>::Iterator::operator*()
Line
Count
Source
41
4.42M
        constexpr reference operator*() { return (*fZip)[fIndex]; }
Unexecuted instantiation: SkZip<SkPoint, SkGlyph const*>::Iterator::operator*()
Unexecuted instantiation: SkZip<SkRSXform, SkPoint const, SkPoint const>::Iterator::operator*()
SkZip<SkPoint const, SkGlyph const*>::Iterator::operator*()
Line
Count
Source
41
170k
        constexpr reference operator*() { return (*fZip)[fIndex]; }
Unexecuted instantiation: SkZip<SkPoint const, SkPoint const, SkGlyph const*>::Iterator::operator*()
Unexecuted instantiation: SkZip<SkPoint const, SkPoint const>::Iterator::operator*()
Unexecuted instantiation: SkZip<SkPoint, SkPoint, SkRSXform const>::Iterator::operator*()
SkZip<sktext::gpu::Mask2DVertex [4], sktext::gpu::Glyph const*, SkPoint const>::Iterator::operator*()
Line
Count
Source
41
41.6k
        constexpr reference operator*() { return (*fZip)[fIndex]; }
SkZip<sktext::gpu::ARGB2DVertex [4], sktext::gpu::Glyph const*, SkPoint const>::Iterator::operator*()
Line
Count
Source
41
736
        constexpr reference operator*() { return (*fZip)[fIndex]; }
SkZip<sktext::gpu::ARGB3DVertex [4], sktext::gpu::Glyph const*, SkPoint const>::Iterator::operator*()
Line
Count
Source
41
81
        constexpr reference operator*() { return (*fZip)[fIndex]; }
SkZip<sktext::gpu::Mask3DVertex [4], sktext::gpu::Glyph const*, SkPoint const>::Iterator::operator*()
Line
Count
Source
41
27.4k
        constexpr reference operator*() { return (*fZip)[fIndex]; }
Unexecuted instantiation: SkZip<sktext::gpu::Glyph const*, SkPoint const>::Iterator::operator*()
Unexecuted instantiation: SkZip<std::__1::unique_ptr<SkPDF::StructureElementNode, std::__1::default_delete<SkPDF::StructureElementNode> >, SkPDFStructElem>::Iterator::operator*()
SkZip<sktext::IDOrPath, SkPoint const>::Iterator::operator*()
Line
Count
Source
41
268k
        constexpr reference operator*() { return (*fZip)[fIndex]; }
SkZip<SkGlyph const*, SkPoint>::Iterator::operator*()
Line
Count
Source
41
1.33M
        constexpr reference operator*() { return (*fZip)[fIndex]; }
SkZip<SkGlyph const*, SkPoint const>::Iterator::operator*()
Line
Count
Source
41
57.8k
        constexpr reference operator*() { return (*fZip)[fIndex]; }
42
        friend constexpr difference_type operator-(Iterator lhs, Iterator rhs) {
43
            return lhs.fIndex - rhs.fIndex;
44
        }
45
46
    private:
47
        const SkZip* const fZip = nullptr;
48
        size_t fIndex = 0;
49
    };
50
51
    template<typename T>
52
    inline static constexpr T* nullify = nullptr;
53
54
public:
55
1.31M
    constexpr SkZip() : fPointers(nullify<Ts>...), fSize(0) {}
SkZip<SkPackedGlyphID, SkPoint>::SkZip()
Line
Count
Source
55
1.43k
    constexpr SkZip() : fPointers(nullify<Ts>...), fSize(0) {}
SkZip<unsigned short, SkPoint>::SkZip()
Line
Count
Source
55
1.09M
    constexpr SkZip() : fPointers(nullify<Ts>...), fSize(0) {}
SkZip<SkPackedGlyphID, SkPoint, SkMask::Format>::SkZip()
Line
Count
Source
55
3.84k
    constexpr SkZip() : fPointers(nullify<Ts>...), fSize(0) {}
Unexecuted instantiation: SkZip<SkPackedGlyphID const, SkPoint const, SkMask::Format const>::SkZip()
SkZip<SkGlyph const*, SkPoint>::SkZip()
Line
Count
Source
55
207k
    constexpr SkZip() : fPointers(nullify<Ts>...), fSize(0) {}
56
    constexpr SkZip(size_t) = delete;
57
2.77M
    constexpr SkZip(size_t size, Ts*... ts) : fPointers(ts...), fSize(size) {}
SkZip<SkRect, SkGlyph const*>::SkZip(unsigned long, SkRect*, SkGlyph const**)
Line
Count
Source
57
34.8k
    constexpr SkZip(size_t size, Ts*... ts) : fPointers(ts...), fSize(size) {}
SkZip<float, SkGlyph const*>::SkZip(unsigned long, float*, SkGlyph const**)
Line
Count
Source
57
51.7k
    constexpr SkZip(size_t size, Ts*... ts) : fPointers(ts...), fSize(size) {}
Unexecuted instantiation: SkZip<SkPoint, SkGlyph const*>::SkZip(unsigned long, SkPoint*, SkGlyph const**)
SkZip<unsigned short const, SkPoint const>::SkZip(unsigned long, unsigned short const*, SkPoint const*)
Line
Count
Source
57
306k
    constexpr SkZip(size_t size, Ts*... ts) : fPointers(ts...), fSize(size) {}
Unexecuted instantiation: SkZip<SkRSXform, SkPoint const, SkPoint const>::SkZip(unsigned long, SkRSXform*, SkPoint const*, SkPoint const*)
SkZip<SkPoint const, SkGlyph const*>::SkZip(unsigned long, SkPoint const*, SkGlyph const**)
Line
Count
Source
57
95.2k
    constexpr SkZip(size_t size, Ts*... ts) : fPointers(ts...), fSize(size) {}
Unexecuted instantiation: SkZip<SkPoint const, SkPoint const, SkGlyph const*>::SkZip(unsigned long, SkPoint const*, SkPoint const*, SkGlyph const**)
Unexecuted instantiation: SkZip<SkPoint const, SkPoint const>::SkZip(unsigned long, SkPoint const*, SkPoint const*)
Unexecuted instantiation: SkZip<SkPoint, SkPoint, SkRSXform const>::SkZip(unsigned long, SkPoint*, SkPoint*, SkRSXform const*)
SkZip<sktext::gpu::Mask2DVertex [4], sktext::gpu::Glyph const*, SkPoint const>::SkZip(unsigned long, sktext::gpu::Mask2DVertex (*) [4], sktext::gpu::Glyph const**, SkPoint const*)
Line
Count
Source
57
3.25k
    constexpr SkZip(size_t size, Ts*... ts) : fPointers(ts...), fSize(size) {}
SkZip<sktext::gpu::ARGB2DVertex [4], sktext::gpu::Glyph const*, SkPoint const>::SkZip(unsigned long, sktext::gpu::ARGB2DVertex (*) [4], sktext::gpu::Glyph const**, SkPoint const*)
Line
Count
Source
57
37
    constexpr SkZip(size_t size, Ts*... ts) : fPointers(ts...), fSize(size) {}
SkZip<sktext::gpu::ARGB3DVertex [4], sktext::gpu::Glyph const*, SkPoint const>::SkZip(unsigned long, sktext::gpu::ARGB3DVertex (*) [4], sktext::gpu::Glyph const**, SkPoint const*)
Line
Count
Source
57
6
    constexpr SkZip(size_t size, Ts*... ts) : fPointers(ts...), fSize(size) {}
SkZip<sktext::gpu::Mask3DVertex [4], sktext::gpu::Glyph const*, SkPoint const>::SkZip(unsigned long, sktext::gpu::Mask3DVertex (*) [4], sktext::gpu::Glyph const**, SkPoint const*)
Line
Count
Source
57
1.93k
    constexpr SkZip(size_t size, Ts*... ts) : fPointers(ts...), fSize(size) {}
Unexecuted instantiation: SkZip<sktext::gpu::Glyph const*, SkPoint const>::SkZip(unsigned long, sktext::gpu::Glyph const**, SkPoint const*)
Unexecuted instantiation: SkZip<std::__1::unique_ptr<SkPDF::StructureElementNode, std::__1::default_delete<SkPDF::StructureElementNode> >, SkPDFStructElem>::SkZip(unsigned long, std::__1::unique_ptr<SkPDF::StructureElementNode, std::__1::default_delete<SkPDF::StructureElementNode> >*, SkPDFStructElem*)
SkZip<sktext::IDOrPath, SkPoint const>::SkZip(unsigned long, sktext::IDOrPath*, SkPoint const*)
Line
Count
Source
57
16.7k
    constexpr SkZip(size_t size, Ts*... ts) : fPointers(ts...), fSize(size) {}
SkZip<unsigned short, SkPoint>::SkZip(unsigned long, unsigned short*, SkPoint*)
Line
Count
Source
57
1.12M
    constexpr SkZip(size_t size, Ts*... ts) : fPointers(ts...), fSize(size) {}
SkZip<SkPackedGlyphID, SkPoint>::SkZip(unsigned long, SkPackedGlyphID*, SkPoint*)
Line
Count
Source
57
4.07k
    constexpr SkZip(size_t size, Ts*... ts) : fPointers(ts...), fSize(size) {}
SkZip<SkPackedGlyphID, SkPoint, SkMask::Format>::SkZip(unsigned long, SkPackedGlyphID*, SkPoint*, SkMask::Format*)
Line
Count
Source
57
6.41k
    constexpr SkZip(size_t size, Ts*... ts) : fPointers(ts...), fSize(size) {}
SkZip<SkPackedGlyphID const, SkPoint const>::SkZip(unsigned long, SkPackedGlyphID const*, SkPoint const*)
Line
Count
Source
57
2.57k
    constexpr SkZip(size_t size, Ts*... ts) : fPointers(ts...), fSize(size) {}
SkZip<SkGlyph const*, SkPoint>::SkZip(unsigned long, SkGlyph const**, SkPoint*)
Line
Count
Source
57
1.09M
    constexpr SkZip(size_t size, Ts*... ts) : fPointers(ts...), fSize(size) {}
SkZip<SkGlyph const*, SkPoint const>::SkZip(unsigned long, SkGlyph const**, SkPoint const*)
Line
Count
Source
57
27.7k
    constexpr SkZip(size_t size, Ts*... ts) : fPointers(ts...), fSize(size) {}
58
    constexpr SkZip(const SkZip& that) = default;
59
1.14M
    constexpr SkZip& operator=(const SkZip &that) = default;
60
61
    // Check to see if U can be used for const T or is the same as T
62
    template <typename U, typename T>
63
    using CanConvertToConst = typename std::integral_constant<bool,
64
                    std::is_convertible<U*, T*>::value && sizeof(U) == sizeof(T)>::type;
65
66
    // Allow SkZip<const T> to be constructed from SkZip<T>.
67
    template<typename... Us,
68
            typename = std::enable_if<std::conjunction<CanConvertToConst<Us, Ts>...>::value>>
69
1.17M
    constexpr SkZip(const SkZip<Us...>& that) : fPointers(that.data()), fSize(that.size()) {}
SkZip<SkPackedGlyphID const, SkPoint const>::SkZip<SkPackedGlyphID, SkPoint, std::__1::enable_if<true, void> >(SkZip<SkPackedGlyphID, SkPoint> const&)
Line
Count
Source
69
4.07k
    constexpr SkZip(const SkZip<Us...>& that) : fPointers(that.data()), fSize(that.size()) {}
SkZip<SkPackedGlyphID const, SkPoint const, SkMask::Format const>::SkZip<SkPackedGlyphID, SkPoint, SkMask::Format, std::__1::enable_if<true, void> >(SkZip<SkPackedGlyphID, SkPoint, SkMask::Format> const&)
Line
Count
Source
69
6.41k
    constexpr SkZip(const SkZip<Us...>& that) : fPointers(that.data()), fSize(that.size()) {}
SkZip<unsigned short const, SkPoint const>::SkZip<unsigned short, SkPoint, std::__1::enable_if<true, void> >(SkZip<unsigned short, SkPoint> const&)
Line
Count
Source
69
1.16M
    constexpr SkZip(const SkZip<Us...>& that) : fPointers(that.data()), fSize(that.size()) {}
70
71
14.0M
    constexpr ReturnTuple operator[](size_t i) const { return this->index(i);}
SkZip<unsigned short const, SkPoint const>::operator[](unsigned long) const
Line
Count
Source
71
3.44M
    constexpr ReturnTuple operator[](size_t i) const { return this->index(i);}
SkZip<SkRect, SkGlyph const*>::operator[](unsigned long) const
Line
Count
Source
71
2.46M
    constexpr ReturnTuple operator[](size_t i) const { return this->index(i);}
SkZip<float, SkGlyph const*>::operator[](unsigned long) const
Line
Count
Source
71
4.42M
    constexpr ReturnTuple operator[](size_t i) const { return this->index(i);}
Unexecuted instantiation: SkZip<SkPoint, SkGlyph const*>::operator[](unsigned long) const
Unexecuted instantiation: SkZip<SkRSXform, SkPoint const, SkPoint const>::operator[](unsigned long) const
SkZip<SkPoint const, SkGlyph const*>::operator[](unsigned long) const
Line
Count
Source
71
170k
    constexpr ReturnTuple operator[](size_t i) const { return this->index(i);}
Unexecuted instantiation: SkZip<SkPoint const, SkPoint const, SkGlyph const*>::operator[](unsigned long) const
Unexecuted instantiation: SkZip<SkPoint const, SkPoint const>::operator[](unsigned long) const
Unexecuted instantiation: SkZip<SkPoint, SkPoint, SkRSXform const>::operator[](unsigned long) const
SkZip<sktext::gpu::Mask2DVertex [4], sktext::gpu::Glyph const*, SkPoint const>::operator[](unsigned long) const
Line
Count
Source
71
41.6k
    constexpr ReturnTuple operator[](size_t i) const { return this->index(i);}
SkZip<sktext::gpu::ARGB2DVertex [4], sktext::gpu::Glyph const*, SkPoint const>::operator[](unsigned long) const
Line
Count
Source
71
736
    constexpr ReturnTuple operator[](size_t i) const { return this->index(i);}
SkZip<sktext::gpu::ARGB3DVertex [4], sktext::gpu::Glyph const*, SkPoint const>::operator[](unsigned long) const
Line
Count
Source
71
81
    constexpr ReturnTuple operator[](size_t i) const { return this->index(i);}
SkZip<sktext::gpu::Mask3DVertex [4], sktext::gpu::Glyph const*, SkPoint const>::operator[](unsigned long) const
Line
Count
Source
71
27.4k
    constexpr ReturnTuple operator[](size_t i) const { return this->index(i);}
Unexecuted instantiation: SkZip<sktext::gpu::Glyph const*, SkPoint const>::operator[](unsigned long) const
Unexecuted instantiation: SkZip<std::__1::unique_ptr<SkPDF::StructureElementNode, std::__1::default_delete<SkPDF::StructureElementNode> >, SkPDFStructElem>::operator[](unsigned long) const
SkZip<sktext::IDOrPath, SkPoint const>::operator[](unsigned long) const
Line
Count
Source
71
268k
    constexpr ReturnTuple operator[](size_t i) const { return this->index(i);}
SkZip<SkPackedGlyphID, SkPoint>::operator[](unsigned long) const
Line
Count
Source
71
39.2k
    constexpr ReturnTuple operator[](size_t i) const { return this->index(i);}
SkZip<unsigned short, SkPoint>::operator[](unsigned long) const
Line
Count
Source
71
452k
    constexpr ReturnTuple operator[](size_t i) const { return this->index(i);}
SkZip<SkPackedGlyphID, SkPoint, SkMask::Format>::operator[](unsigned long) const
Line
Count
Source
71
28.3k
    constexpr ReturnTuple operator[](size_t i) const { return this->index(i);}
SkZip<SkGlyph const*, SkPoint>::operator[](unsigned long) const
Line
Count
Source
71
2.67M
    constexpr ReturnTuple operator[](size_t i) const { return this->index(i);}
SkZip<SkGlyph const*, SkPoint const>::operator[](unsigned long) const
Line
Count
Source
71
57.8k
    constexpr ReturnTuple operator[](size_t i) const { return this->index(i);}
72
7.30M
    constexpr size_t size() const { return fSize; }
SkZip<unsigned short const, SkPoint const>::size() const
Line
Count
Source
72
4.71M
    constexpr size_t size() const { return fSize; }
SkZip<SkRect, SkGlyph const*>::size() const
Line
Count
Source
72
34.8k
    constexpr size_t size() const { return fSize; }
SkZip<float, SkGlyph const*>::size() const
Line
Count
Source
72
51.7k
    constexpr size_t size() const { return fSize; }
Unexecuted instantiation: SkZip<SkPoint, SkGlyph const*>::size() const
Unexecuted instantiation: SkZip<SkRSXform, SkPoint const, SkPoint const>::size() const
SkZip<SkPoint const, SkGlyph const*>::size() const
Line
Count
Source
72
95.2k
    constexpr size_t size() const { return fSize; }
Unexecuted instantiation: SkZip<SkPoint const, SkPoint const, SkGlyph const*>::size() const
Unexecuted instantiation: SkZip<SkPoint const, SkPoint const>::size() const
Unexecuted instantiation: SkZip<SkPoint, SkPoint, SkRSXform const>::size() const
SkZip<sktext::gpu::Mask2DVertex [4], sktext::gpu::Glyph const*, SkPoint const>::size() const
Line
Count
Source
72
3.25k
    constexpr size_t size() const { return fSize; }
SkZip<sktext::gpu::ARGB2DVertex [4], sktext::gpu::Glyph const*, SkPoint const>::size() const
Line
Count
Source
72
37
    constexpr size_t size() const { return fSize; }
SkZip<sktext::gpu::ARGB3DVertex [4], sktext::gpu::Glyph const*, SkPoint const>::size() const
Line
Count
Source
72
6
    constexpr size_t size() const { return fSize; }
SkZip<sktext::gpu::Mask3DVertex [4], sktext::gpu::Glyph const*, SkPoint const>::size() const
Line
Count
Source
72
1.93k
    constexpr size_t size() const { return fSize; }
Unexecuted instantiation: SkZip<sktext::gpu::Glyph const*, SkPoint const>::size() const
Unexecuted instantiation: SkZip<std::__1::unique_ptr<SkPDF::StructureElementNode, std::__1::default_delete<SkPDF::StructureElementNode> >, SkPDFStructElem>::size() const
SkZip<sktext::IDOrPath, SkPoint const>::size() const
Line
Count
Source
72
16.7k
    constexpr size_t size() const { return fSize; }
SkZip<SkPackedGlyphID, SkPoint>::size() const
Line
Count
Source
72
4.07k
    constexpr size_t size() const { return fSize; }
SkZip<SkPackedGlyphID, SkPoint, SkMask::Format>::size() const
Line
Count
Source
72
6.41k
    constexpr size_t size() const { return fSize; }
SkZip<unsigned short, SkPoint>::size() const
Line
Count
Source
72
1.16M
    constexpr size_t size() const { return fSize; }
SkZip<SkPackedGlyphID const, SkPoint const>::size() const
Line
Count
Source
72
4.07k
    constexpr size_t size() const { return fSize; }
SkZip<SkPackedGlyphID const, SkPoint const, SkMask::Format const>::size() const
Line
Count
Source
72
39.8k
    constexpr size_t size() const { return fSize; }
SkZip<SkGlyph const*, SkPoint>::size() const
Line
Count
Source
72
1.14M
    constexpr size_t size() const { return fSize; }
SkZip<SkGlyph const*, SkPoint const>::size() const
Line
Count
Source
72
27.7k
    constexpr size_t size() const { return fSize; }
73
2.39M
    constexpr bool empty() const { return this->size() == 0; }
SkZip<SkPackedGlyphID const, SkPoint const>::empty() const
Line
Count
Source
73
4.07k
    constexpr bool empty() const { return this->size() == 0; }
SkZip<unsigned short const, SkPoint const>::empty() const
Line
Count
Source
73
2.37M
    constexpr bool empty() const { return this->size() == 0; }
SkZip<SkPackedGlyphID const, SkPoint const, SkMask::Format const>::empty() const
Line
Count
Source
73
8.99k
    constexpr bool empty() const { return this->size() == 0; }
74
    constexpr ReturnTuple front() const { return this->index(0); }
75
    constexpr ReturnTuple back() const { return this->index(this->size() - 1); }
76
2.55M
    constexpr Iterator begin() const { return Iterator(this, 0); }
SkZip<unsigned short const, SkPoint const>::begin() const
Line
Count
Source
76
1.18M
    constexpr Iterator begin() const { return Iterator(this, 0); }
SkZip<SkRect, SkGlyph const*>::begin() const
Line
Count
Source
76
34.8k
    constexpr Iterator begin() const { return Iterator(this, 0); }
SkZip<float, SkGlyph const*>::begin() const
Line
Count
Source
76
51.7k
    constexpr Iterator begin() const { return Iterator(this, 0); }
Unexecuted instantiation: SkZip<SkPoint, SkGlyph const*>::begin() const
Unexecuted instantiation: SkZip<SkRSXform, SkPoint const, SkPoint const>::begin() const
SkZip<SkPoint const, SkGlyph const*>::begin() const
Line
Count
Source
76
95.2k
    constexpr Iterator begin() const { return Iterator(this, 0); }
Unexecuted instantiation: SkZip<SkPoint const, SkPoint const, SkGlyph const*>::begin() const
Unexecuted instantiation: SkZip<SkPoint const, SkPoint const>::begin() const
Unexecuted instantiation: SkZip<SkPoint, SkPoint, SkRSXform const>::begin() const
SkZip<sktext::gpu::Mask2DVertex [4], sktext::gpu::Glyph const*, SkPoint const>::begin() const
Line
Count
Source
76
3.25k
    constexpr Iterator begin() const { return Iterator(this, 0); }
SkZip<sktext::gpu::ARGB2DVertex [4], sktext::gpu::Glyph const*, SkPoint const>::begin() const
Line
Count
Source
76
37
    constexpr Iterator begin() const { return Iterator(this, 0); }
SkZip<sktext::gpu::ARGB3DVertex [4], sktext::gpu::Glyph const*, SkPoint const>::begin() const
Line
Count
Source
76
6
    constexpr Iterator begin() const { return Iterator(this, 0); }
SkZip<sktext::gpu::Mask3DVertex [4], sktext::gpu::Glyph const*, SkPoint const>::begin() const
Line
Count
Source
76
1.93k
    constexpr Iterator begin() const { return Iterator(this, 0); }
Unexecuted instantiation: SkZip<sktext::gpu::Glyph const*, SkPoint const>::begin() const
Unexecuted instantiation: SkZip<std::__1::unique_ptr<SkPDF::StructureElementNode, std::__1::default_delete<SkPDF::StructureElementNode> >, SkPDFStructElem>::begin() const
SkZip<sktext::IDOrPath, SkPoint const>::begin() const
Line
Count
Source
76
16.7k
    constexpr Iterator begin() const { return Iterator(this, 0); }
SkZip<SkGlyph const*, SkPoint>::begin() const
Line
Count
Source
76
1.14M
    constexpr Iterator begin() const { return Iterator(this, 0); }
SkZip<SkGlyph const*, SkPoint const>::begin() const
Line
Count
Source
76
27.7k
    constexpr Iterator begin() const { return Iterator(this, 0); }
77
2.55M
    constexpr Iterator end() const { return Iterator(this, this->size()); }
SkZip<unsigned short const, SkPoint const>::end() const
Line
Count
Source
77
1.18M
    constexpr Iterator end() const { return Iterator(this, this->size()); }
SkZip<SkRect, SkGlyph const*>::end() const
Line
Count
Source
77
34.8k
    constexpr Iterator end() const { return Iterator(this, this->size()); }
SkZip<float, SkGlyph const*>::end() const
Line
Count
Source
77
51.7k
    constexpr Iterator end() const { return Iterator(this, this->size()); }
Unexecuted instantiation: SkZip<SkPoint, SkGlyph const*>::end() const
Unexecuted instantiation: SkZip<SkRSXform, SkPoint const, SkPoint const>::end() const
SkZip<SkPoint const, SkGlyph const*>::end() const
Line
Count
Source
77
95.2k
    constexpr Iterator end() const { return Iterator(this, this->size()); }
Unexecuted instantiation: SkZip<SkPoint const, SkPoint const, SkGlyph const*>::end() const
Unexecuted instantiation: SkZip<SkPoint const, SkPoint const>::end() const
Unexecuted instantiation: SkZip<SkPoint, SkPoint, SkRSXform const>::end() const
SkZip<sktext::gpu::Mask2DVertex [4], sktext::gpu::Glyph const*, SkPoint const>::end() const
Line
Count
Source
77
3.25k
    constexpr Iterator end() const { return Iterator(this, this->size()); }
SkZip<sktext::gpu::ARGB2DVertex [4], sktext::gpu::Glyph const*, SkPoint const>::end() const
Line
Count
Source
77
37
    constexpr Iterator end() const { return Iterator(this, this->size()); }
SkZip<sktext::gpu::ARGB3DVertex [4], sktext::gpu::Glyph const*, SkPoint const>::end() const
Line
Count
Source
77
6
    constexpr Iterator end() const { return Iterator(this, this->size()); }
SkZip<sktext::gpu::Mask3DVertex [4], sktext::gpu::Glyph const*, SkPoint const>::end() const
Line
Count
Source
77
1.93k
    constexpr Iterator end() const { return Iterator(this, this->size()); }
Unexecuted instantiation: SkZip<sktext::gpu::Glyph const*, SkPoint const>::end() const
Unexecuted instantiation: SkZip<std::__1::unique_ptr<SkPDF::StructureElementNode, std::__1::default_delete<SkPDF::StructureElementNode> >, SkPDFStructElem>::end() const
SkZip<sktext::IDOrPath, SkPoint const>::end() const
Line
Count
Source
77
16.7k
    constexpr Iterator end() const { return Iterator(this, this->size()); }
SkZip<SkGlyph const*, SkPoint>::end() const
Line
Count
Source
77
1.14M
    constexpr Iterator end() const { return Iterator(this, this->size()); }
SkZip<SkGlyph const*, SkPoint const>::end() const
Line
Count
Source
77
27.7k
    constexpr Iterator end() const { return Iterator(this, this->size()); }
78
2.35M
    template<size_t I> constexpr auto get() const {
79
2.35M
        return SkSpan(std::get<I>(fPointers), fSize);
80
2.35M
    }
auto SkZip<unsigned short const, SkPoint const>::get<1ul>() const
Line
Count
Source
78
1.16M
    template<size_t I> constexpr auto get() const {
79
1.16M
        return SkSpan(std::get<I>(fPointers), fSize);
80
1.16M
    }
auto SkZip<unsigned short const, SkPoint const>::get<0ul>() const
Line
Count
Source
78
1.16M
    template<size_t I> constexpr auto get() const {
79
1.16M
        return SkSpan(std::get<I>(fPointers), fSize);
80
1.16M
    }
auto SkZip<SkPackedGlyphID const, SkPoint const>::get<1ul>() const
Line
Count
Source
78
5.21k
    template<size_t I> constexpr auto get() const {
79
5.21k
        return SkSpan(std::get<I>(fPointers), fSize);
80
5.21k
    }
auto SkZip<SkPackedGlyphID const, SkPoint const>::get<0ul>() const
Line
Count
Source
78
5.21k
    template<size_t I> constexpr auto get() const {
79
5.21k
        return SkSpan(std::get<I>(fPointers), fSize);
80
5.21k
    }
auto SkZip<SkPackedGlyphID const, SkPoint const, SkMask::Format const>::get<2ul>() const
Line
Count
Source
78
2.57k
    template<size_t I> constexpr auto get() const {
79
2.57k
        return SkSpan(std::get<I>(fPointers), fSize);
80
2.57k
    }
auto SkZip<SkPackedGlyphID const, SkPoint const, SkMask::Format const>::get<0ul>() const
Line
Count
Source
78
2.57k
    template<size_t I> constexpr auto get() const {
79
2.57k
        return SkSpan(std::get<I>(fPointers), fSize);
80
2.57k
    }
auto SkZip<SkPackedGlyphID const, SkPoint const, SkMask::Format const>::get<1ul>() const
Line
Count
Source
78
2.57k
    template<size_t I> constexpr auto get() const {
79
2.57k
        return SkSpan(std::get<I>(fPointers), fSize);
80
2.57k
    }
81
1.17M
    constexpr std::tuple<Ts*...> data() const { return fPointers; }
SkZip<SkPackedGlyphID, SkPoint>::data() const
Line
Count
Source
81
4.07k
    constexpr std::tuple<Ts*...> data() const { return fPointers; }
SkZip<SkPackedGlyphID, SkPoint, SkMask::Format>::data() const
Line
Count
Source
81
6.41k
    constexpr std::tuple<Ts*...> data() const { return fPointers; }
SkZip<unsigned short, SkPoint>::data() const
Line
Count
Source
81
1.16M
    constexpr std::tuple<Ts*...> data() const { return fPointers; }
82
2.34M
    constexpr SkZip first(size_t n) const {
83
2.34M
        SkASSERT(n <= this->size());
84
2.34M
        if (n == 0) { return SkZip(); }
85
1.03M
        return SkZip(n, fPointers);
86
2.34M
    }
SkZip<SkPackedGlyphID, SkPoint>::first(unsigned long) const
Line
Count
Source
82
4.07k
    constexpr SkZip first(size_t n) const {
83
4.07k
        SkASSERT(n <= this->size());
84
4.07k
        if (n == 0) { return SkZip(); }
85
2.63k
        return SkZip(n, fPointers);
86
4.07k
    }
SkZip<unsigned short, SkPoint>::first(unsigned long) const
Line
Count
Source
82
1.19M
    constexpr SkZip first(size_t n) const {
83
1.19M
        SkASSERT(n <= this->size());
84
1.19M
        if (n == 0) { return SkZip(); }
85
93.5k
        return SkZip(n, fPointers);
86
1.19M
    }
SkZip<SkPackedGlyphID, SkPoint, SkMask::Format>::first(unsigned long) const
Line
Count
Source
82
6.41k
    constexpr SkZip first(size_t n) const {
83
6.41k
        SkASSERT(n <= this->size());
84
6.41k
        if (n == 0) { return SkZip(); }
85
2.57k
        return SkZip(n, fPointers);
86
6.41k
    }
SkZip<SkGlyph const*, SkPoint>::first(unsigned long) const
Line
Count
Source
82
1.14M
    constexpr SkZip first(size_t n) const {
83
1.14M
        SkASSERT(n <= this->size());
84
1.14M
        if (n == 0) { return SkZip(); }
85
932k
        return SkZip(n, fPointers);
86
1.14M
    }
87
2.57k
    constexpr SkZip last(size_t n) const {
88
2.57k
        SkASSERT(n <= this->size());
89
2.57k
        if (n == 0) { return SkZip(); }
90
2.57k
        return SkZip(n, this->pointersAt(fSize - n));
91
2.57k
    }
92
0
    constexpr SkZip subspan(size_t offset, size_t count) const {
93
0
        SkASSERT(offset < this->size());
94
0
        SkASSERT(count <= this->size() - offset);
95
0
        if (count == 0) { return SkZip(); }
96
0
        return SkZip(count, pointersAt(offset));
97
0
    }
Unexecuted instantiation: SkZip<SkPackedGlyphID const, SkPoint const, SkMask::Format const>::subspan(unsigned long, unsigned long) const
Unexecuted instantiation: SkZip<SkPackedGlyphID const, SkPoint const, SkMask::Format const>::subspan(unsigned long, unsigned long) const
98
99
private:
100
1.03M
    constexpr SkZip(size_t n, const std::tuple<Ts*...>& pointers) : fPointers(pointers), fSize(n) {}
SkZip<SkPackedGlyphID, SkPoint>::SkZip(unsigned long, std::__1::tuple<SkPackedGlyphID*, SkPoint*> const&)
Line
Count
Source
100
2.63k
    constexpr SkZip(size_t n, const std::tuple<Ts*...>& pointers) : fPointers(pointers), fSize(n) {}
SkZip<unsigned short, SkPoint>::SkZip(unsigned long, std::__1::tuple<unsigned short*, SkPoint*> const&)
Line
Count
Source
100
93.5k
    constexpr SkZip(size_t n, const std::tuple<Ts*...>& pointers) : fPointers(pointers), fSize(n) {}
SkZip<SkPackedGlyphID, SkPoint, SkMask::Format>::SkZip(unsigned long, std::__1::tuple<SkPackedGlyphID*, SkPoint*, SkMask::Format*> const&)
Line
Count
Source
100
2.57k
    constexpr SkZip(size_t n, const std::tuple<Ts*...>& pointers) : fPointers(pointers), fSize(n) {}
SkZip<SkPackedGlyphID const, SkPoint const, SkMask::Format const>::SkZip(unsigned long, std::__1::tuple<SkPackedGlyphID const*, SkPoint const*, SkMask::Format const*> const&)
Line
Count
Source
100
2.57k
    constexpr SkZip(size_t n, const std::tuple<Ts*...>& pointers) : fPointers(pointers), fSize(n) {}
SkZip<SkGlyph const*, SkPoint>::SkZip(unsigned long, std::__1::tuple<SkGlyph const**, SkPoint*> const&)
Line
Count
Source
100
932k
    constexpr SkZip(size_t n, const std::tuple<Ts*...>& pointers) : fPointers(pointers), fSize(n) {}
101
102
14.0M
    constexpr ReturnTuple index(size_t i) const {
103
14.0M
        SkASSERT(this->size() > 0);
104
14.0M
        SkASSERT(i < this->size());
105
14.0M
        return indexDetail(i, std::make_index_sequence<sizeof...(Ts)>());
106
14.0M
    }
SkZip<unsigned short const, SkPoint const>::index(unsigned long) const
Line
Count
Source
102
3.44M
    constexpr ReturnTuple index(size_t i) const {
103
3.44M
        SkASSERT(this->size() > 0);
104
3.44M
        SkASSERT(i < this->size());
105
3.44M
        return indexDetail(i, std::make_index_sequence<sizeof...(Ts)>());
106
3.44M
    }
SkZip<SkRect, SkGlyph const*>::index(unsigned long) const
Line
Count
Source
102
2.46M
    constexpr ReturnTuple index(size_t i) const {
103
2.46M
        SkASSERT(this->size() > 0);
104
2.46M
        SkASSERT(i < this->size());
105
2.46M
        return indexDetail(i, std::make_index_sequence<sizeof...(Ts)>());
106
2.46M
    }
SkZip<float, SkGlyph const*>::index(unsigned long) const
Line
Count
Source
102
4.42M
    constexpr ReturnTuple index(size_t i) const {
103
4.42M
        SkASSERT(this->size() > 0);
104
4.42M
        SkASSERT(i < this->size());
105
4.42M
        return indexDetail(i, std::make_index_sequence<sizeof...(Ts)>());
106
4.42M
    }
Unexecuted instantiation: SkZip<SkPoint, SkGlyph const*>::index(unsigned long) const
Unexecuted instantiation: SkZip<SkRSXform, SkPoint const, SkPoint const>::index(unsigned long) const
SkZip<SkPoint const, SkGlyph const*>::index(unsigned long) const
Line
Count
Source
102
170k
    constexpr ReturnTuple index(size_t i) const {
103
170k
        SkASSERT(this->size() > 0);
104
170k
        SkASSERT(i < this->size());
105
170k
        return indexDetail(i, std::make_index_sequence<sizeof...(Ts)>());
106
170k
    }
Unexecuted instantiation: SkZip<SkPoint const, SkPoint const, SkGlyph const*>::index(unsigned long) const
Unexecuted instantiation: SkZip<SkPoint const, SkPoint const>::index(unsigned long) const
Unexecuted instantiation: SkZip<SkPoint, SkPoint, SkRSXform const>::index(unsigned long) const
SkZip<sktext::gpu::Mask2DVertex [4], sktext::gpu::Glyph const*, SkPoint const>::index(unsigned long) const
Line
Count
Source
102
41.6k
    constexpr ReturnTuple index(size_t i) const {
103
41.6k
        SkASSERT(this->size() > 0);
104
41.6k
        SkASSERT(i < this->size());
105
41.6k
        return indexDetail(i, std::make_index_sequence<sizeof...(Ts)>());
106
41.6k
    }
SkZip<sktext::gpu::ARGB2DVertex [4], sktext::gpu::Glyph const*, SkPoint const>::index(unsigned long) const
Line
Count
Source
102
736
    constexpr ReturnTuple index(size_t i) const {
103
736
        SkASSERT(this->size() > 0);
104
736
        SkASSERT(i < this->size());
105
736
        return indexDetail(i, std::make_index_sequence<sizeof...(Ts)>());
106
736
    }
SkZip<sktext::gpu::ARGB3DVertex [4], sktext::gpu::Glyph const*, SkPoint const>::index(unsigned long) const
Line
Count
Source
102
81
    constexpr ReturnTuple index(size_t i) const {
103
81
        SkASSERT(this->size() > 0);
104
81
        SkASSERT(i < this->size());
105
81
        return indexDetail(i, std::make_index_sequence<sizeof...(Ts)>());
106
81
    }
SkZip<sktext::gpu::Mask3DVertex [4], sktext::gpu::Glyph const*, SkPoint const>::index(unsigned long) const
Line
Count
Source
102
27.4k
    constexpr ReturnTuple index(size_t i) const {
103
27.4k
        SkASSERT(this->size() > 0);
104
27.4k
        SkASSERT(i < this->size());
105
27.4k
        return indexDetail(i, std::make_index_sequence<sizeof...(Ts)>());
106
27.4k
    }
Unexecuted instantiation: SkZip<sktext::gpu::Glyph const*, SkPoint const>::index(unsigned long) const
Unexecuted instantiation: SkZip<std::__1::unique_ptr<SkPDF::StructureElementNode, std::__1::default_delete<SkPDF::StructureElementNode> >, SkPDFStructElem>::index(unsigned long) const
SkZip<sktext::IDOrPath, SkPoint const>::index(unsigned long) const
Line
Count
Source
102
268k
    constexpr ReturnTuple index(size_t i) const {
103
268k
        SkASSERT(this->size() > 0);
104
268k
        SkASSERT(i < this->size());
105
268k
        return indexDetail(i, std::make_index_sequence<sizeof...(Ts)>());
106
268k
    }
SkZip<SkPackedGlyphID, SkPoint>::index(unsigned long) const
Line
Count
Source
102
39.2k
    constexpr ReturnTuple index(size_t i) const {
103
39.2k
        SkASSERT(this->size() > 0);
104
39.2k
        SkASSERT(i < this->size());
105
39.2k
        return indexDetail(i, std::make_index_sequence<sizeof...(Ts)>());
106
39.2k
    }
SkZip<unsigned short, SkPoint>::index(unsigned long) const
Line
Count
Source
102
452k
    constexpr ReturnTuple index(size_t i) const {
103
452k
        SkASSERT(this->size() > 0);
104
452k
        SkASSERT(i < this->size());
105
452k
        return indexDetail(i, std::make_index_sequence<sizeof...(Ts)>());
106
452k
    }
SkZip<SkPackedGlyphID, SkPoint, SkMask::Format>::index(unsigned long) const
Line
Count
Source
102
28.3k
    constexpr ReturnTuple index(size_t i) const {
103
28.3k
        SkASSERT(this->size() > 0);
104
28.3k
        SkASSERT(i < this->size());
105
28.3k
        return indexDetail(i, std::make_index_sequence<sizeof...(Ts)>());
106
28.3k
    }
SkZip<SkGlyph const*, SkPoint>::index(unsigned long) const
Line
Count
Source
102
2.67M
    constexpr ReturnTuple index(size_t i) const {
103
2.67M
        SkASSERT(this->size() > 0);
104
2.67M
        SkASSERT(i < this->size());
105
2.67M
        return indexDetail(i, std::make_index_sequence<sizeof...(Ts)>());
106
2.67M
    }
SkZip<SkGlyph const*, SkPoint const>::index(unsigned long) const
Line
Count
Source
102
57.8k
    constexpr ReturnTuple index(size_t i) const {
103
57.8k
        SkASSERT(this->size() > 0);
104
57.8k
        SkASSERT(i < this->size());
105
57.8k
        return indexDetail(i, std::make_index_sequence<sizeof...(Ts)>());
106
57.8k
    }
Unexecuted instantiation: SkZip<SkPoint, SkGlyph const*>::index(unsigned long) const
Unexecuted instantiation: SkZip<SkRSXform, SkPoint const, SkPoint const>::index(unsigned long) const
Unexecuted instantiation: SkZip<SkPoint const, SkPoint const, SkGlyph const*>::index(unsigned long) const
Unexecuted instantiation: SkZip<SkPoint const, SkPoint const>::index(unsigned long) const
Unexecuted instantiation: SkZip<SkPoint, SkPoint, SkRSXform const>::index(unsigned long) const
Unexecuted instantiation: SkZip<sktext::gpu::Glyph const*, SkPoint const>::index(unsigned long) const
107
108
    template<std::size_t... Is>
109
14.0M
    constexpr ReturnTuple indexDetail(size_t i, std::index_sequence<Is...>) const {
110
14.0M
        return ReturnTuple((std::get<Is>(fPointers))[i]...);
111
14.0M
    }
std::__1::tuple<unsigned short const&, SkPoint const&> SkZip<unsigned short const, SkPoint const>::indexDetail<0ul, 1ul>(unsigned long, std::__1::integer_sequence<unsigned long, 0ul, 1ul>) const
Line
Count
Source
109
3.44M
    constexpr ReturnTuple indexDetail(size_t i, std::index_sequence<Is...>) const {
110
3.44M
        return ReturnTuple((std::get<Is>(fPointers))[i]...);
111
3.44M
    }
std::__1::tuple<SkRect&, SkGlyph const*&> SkZip<SkRect, SkGlyph const*>::indexDetail<0ul, 1ul>(unsigned long, std::__1::integer_sequence<unsigned long, 0ul, 1ul>) const
Line
Count
Source
109
2.46M
    constexpr ReturnTuple indexDetail(size_t i, std::index_sequence<Is...>) const {
110
2.46M
        return ReturnTuple((std::get<Is>(fPointers))[i]...);
111
2.46M
    }
std::__1::tuple<float&, SkGlyph const*&> SkZip<float, SkGlyph const*>::indexDetail<0ul, 1ul>(unsigned long, std::__1::integer_sequence<unsigned long, 0ul, 1ul>) const
Line
Count
Source
109
4.42M
    constexpr ReturnTuple indexDetail(size_t i, std::index_sequence<Is...>) const {
110
4.42M
        return ReturnTuple((std::get<Is>(fPointers))[i]...);
111
4.42M
    }
Unexecuted instantiation: std::__1::tuple<SkPoint&, SkGlyph const*&> SkZip<SkPoint, SkGlyph const*>::indexDetail<0ul, 1ul>(unsigned long, std::__1::integer_sequence<unsigned long, 0ul, 1ul>) const
Unexecuted instantiation: std::__1::tuple<SkRSXform&, SkPoint const&, SkPoint const&> SkZip<SkRSXform, SkPoint const, SkPoint const>::indexDetail<0ul, 1ul, 2ul>(unsigned long, std::__1::integer_sequence<unsigned long, 0ul, 1ul, 2ul>) const
std::__1::tuple<SkPoint const&, SkGlyph const*&> SkZip<SkPoint const, SkGlyph const*>::indexDetail<0ul, 1ul>(unsigned long, std::__1::integer_sequence<unsigned long, 0ul, 1ul>) const
Line
Count
Source
109
170k
    constexpr ReturnTuple indexDetail(size_t i, std::index_sequence<Is...>) const {
110
170k
        return ReturnTuple((std::get<Is>(fPointers))[i]...);
111
170k
    }
Unexecuted instantiation: std::__1::tuple<SkPoint const&, SkPoint const&, SkGlyph const*&> SkZip<SkPoint const, SkPoint const, SkGlyph const*>::indexDetail<0ul, 1ul, 2ul>(unsigned long, std::__1::integer_sequence<unsigned long, 0ul, 1ul, 2ul>) const
Unexecuted instantiation: std::__1::tuple<SkPoint const&, SkPoint const&> SkZip<SkPoint const, SkPoint const>::indexDetail<0ul, 1ul>(unsigned long, std::__1::integer_sequence<unsigned long, 0ul, 1ul>) const
Unexecuted instantiation: std::__1::tuple<SkPoint&, SkPoint&, SkRSXform const&> SkZip<SkPoint, SkPoint, SkRSXform const>::indexDetail<0ul, 1ul, 2ul>(unsigned long, std::__1::integer_sequence<unsigned long, 0ul, 1ul, 2ul>) const
std::__1::tuple<sktext::gpu::Mask2DVertex (&) [4], sktext::gpu::Glyph const*&, SkPoint const&> SkZip<sktext::gpu::Mask2DVertex [4], sktext::gpu::Glyph const*, SkPoint const>::indexDetail<0ul, 1ul, 2ul>(unsigned long, std::__1::integer_sequence<unsigned long, 0ul, 1ul, 2ul>) const
Line
Count
Source
109
41.6k
    constexpr ReturnTuple indexDetail(size_t i, std::index_sequence<Is...>) const {
110
41.6k
        return ReturnTuple((std::get<Is>(fPointers))[i]...);
111
41.6k
    }
std::__1::tuple<sktext::gpu::ARGB2DVertex (&) [4], sktext::gpu::Glyph const*&, SkPoint const&> SkZip<sktext::gpu::ARGB2DVertex [4], sktext::gpu::Glyph const*, SkPoint const>::indexDetail<0ul, 1ul, 2ul>(unsigned long, std::__1::integer_sequence<unsigned long, 0ul, 1ul, 2ul>) const
Line
Count
Source
109
736
    constexpr ReturnTuple indexDetail(size_t i, std::index_sequence<Is...>) const {
110
736
        return ReturnTuple((std::get<Is>(fPointers))[i]...);
111
736
    }
std::__1::tuple<sktext::gpu::ARGB3DVertex (&) [4], sktext::gpu::Glyph const*&, SkPoint const&> SkZip<sktext::gpu::ARGB3DVertex [4], sktext::gpu::Glyph const*, SkPoint const>::indexDetail<0ul, 1ul, 2ul>(unsigned long, std::__1::integer_sequence<unsigned long, 0ul, 1ul, 2ul>) const
Line
Count
Source
109
81
    constexpr ReturnTuple indexDetail(size_t i, std::index_sequence<Is...>) const {
110
81
        return ReturnTuple((std::get<Is>(fPointers))[i]...);
111
81
    }
std::__1::tuple<sktext::gpu::Mask3DVertex (&) [4], sktext::gpu::Glyph const*&, SkPoint const&> SkZip<sktext::gpu::Mask3DVertex [4], sktext::gpu::Glyph const*, SkPoint const>::indexDetail<0ul, 1ul, 2ul>(unsigned long, std::__1::integer_sequence<unsigned long, 0ul, 1ul, 2ul>) const
Line
Count
Source
109
27.4k
    constexpr ReturnTuple indexDetail(size_t i, std::index_sequence<Is...>) const {
110
27.4k
        return ReturnTuple((std::get<Is>(fPointers))[i]...);
111
27.4k
    }
Unexecuted instantiation: std::__1::tuple<sktext::gpu::Glyph const*&, SkPoint const&> SkZip<sktext::gpu::Glyph const*, SkPoint const>::indexDetail<0ul, 1ul>(unsigned long, std::__1::integer_sequence<unsigned long, 0ul, 1ul>) const
Unexecuted instantiation: std::__1::tuple<std::__1::unique_ptr<SkPDF::StructureElementNode, std::__1::default_delete<SkPDF::StructureElementNode> >&, SkPDFStructElem&> SkZip<std::__1::unique_ptr<SkPDF::StructureElementNode, std::__1::default_delete<SkPDF::StructureElementNode> >, SkPDFStructElem>::indexDetail<0ul, 1ul>(unsigned long, std::__1::integer_sequence<unsigned long, 0ul, 1ul>) const
std::__1::tuple<sktext::IDOrPath&, SkPoint const&> SkZip<sktext::IDOrPath, SkPoint const>::indexDetail<0ul, 1ul>(unsigned long, std::__1::integer_sequence<unsigned long, 0ul, 1ul>) const
Line
Count
Source
109
268k
    constexpr ReturnTuple indexDetail(size_t i, std::index_sequence<Is...>) const {
110
268k
        return ReturnTuple((std::get<Is>(fPointers))[i]...);
111
268k
    }
std::__1::tuple<SkPackedGlyphID&, SkPoint&> SkZip<SkPackedGlyphID, SkPoint>::indexDetail<0ul, 1ul>(unsigned long, std::__1::integer_sequence<unsigned long, 0ul, 1ul>) const
Line
Count
Source
109
39.2k
    constexpr ReturnTuple indexDetail(size_t i, std::index_sequence<Is...>) const {
110
39.2k
        return ReturnTuple((std::get<Is>(fPointers))[i]...);
111
39.2k
    }
std::__1::tuple<unsigned short&, SkPoint&> SkZip<unsigned short, SkPoint>::indexDetail<0ul, 1ul>(unsigned long, std::__1::integer_sequence<unsigned long, 0ul, 1ul>) const
Line
Count
Source
109
452k
    constexpr ReturnTuple indexDetail(size_t i, std::index_sequence<Is...>) const {
110
452k
        return ReturnTuple((std::get<Is>(fPointers))[i]...);
111
452k
    }
std::__1::tuple<SkPackedGlyphID&, SkPoint&, SkMask::Format&> SkZip<SkPackedGlyphID, SkPoint, SkMask::Format>::indexDetail<0ul, 1ul, 2ul>(unsigned long, std::__1::integer_sequence<unsigned long, 0ul, 1ul, 2ul>) const
Line
Count
Source
109
28.3k
    constexpr ReturnTuple indexDetail(size_t i, std::index_sequence<Is...>) const {
110
28.3k
        return ReturnTuple((std::get<Is>(fPointers))[i]...);
111
28.3k
    }
std::__1::tuple<SkGlyph const*&, SkPoint&> SkZip<SkGlyph const*, SkPoint>::indexDetail<0ul, 1ul>(unsigned long, std::__1::integer_sequence<unsigned long, 0ul, 1ul>) const
Line
Count
Source
109
2.67M
    constexpr ReturnTuple indexDetail(size_t i, std::index_sequence<Is...>) const {
110
2.67M
        return ReturnTuple((std::get<Is>(fPointers))[i]...);
111
2.67M
    }
std::__1::tuple<SkGlyph const*&, SkPoint const&> SkZip<SkGlyph const*, SkPoint const>::indexDetail<0ul, 1ul>(unsigned long, std::__1::integer_sequence<unsigned long, 0ul, 1ul>) const
Line
Count
Source
109
57.8k
    constexpr ReturnTuple indexDetail(size_t i, std::index_sequence<Is...>) const {
110
57.8k
        return ReturnTuple((std::get<Is>(fPointers))[i]...);
111
57.8k
    }
112
113
2.57k
    std::tuple<Ts*...> pointersAt(size_t i) const {
114
2.57k
        SkASSERT(this->size() > 0);
115
2.57k
        SkASSERT(i < this->size());
116
2.57k
        return pointersAtDetail(i, std::make_index_sequence<sizeof...(Ts)>());
117
2.57k
    }
118
119
    template<std::size_t... Is>
120
2.57k
    constexpr std::tuple<Ts*...> pointersAtDetail(size_t i, std::index_sequence<Is...>) const {
121
2.57k
        return std::tuple<Ts*...>(&(std::get<Is>(fPointers))[i]...);
122
2.57k
    }
123
124
    std::tuple<Ts*...> fPointers;
125
    size_t fSize;
126
};
127
128
class SkMakeZipDetail {
129
    template<typename T> struct DecayPointer{
130
        using U = typename std::remove_cv<typename std::remove_reference<T>::type>::type;
131
        using type = typename std::conditional<std::is_pointer<U>::value, U, T>::type;
132
    };
133
    template<typename T> using DecayPointerT = typename DecayPointer<T>::type;
134
135
    template<typename C> struct ContiguousMemory {};
136
    template<typename T> struct ContiguousMemory<T*> {
137
        using value_type = T;
138
5.22k
        static constexpr value_type* Data(T* t) { return t; }
Unexecuted instantiation: SkMakeZipDetail::ContiguousMemory<SkRSXform*>::Data(SkRSXform*)
SkMakeZipDetail::ContiguousMemory<sktext::gpu::Mask2DVertex (*) [4]>::Data(sktext::gpu::Mask2DVertex (*) [4])
Line
Count
Source
138
3.25k
        static constexpr value_type* Data(T* t) { return t; }
SkMakeZipDetail::ContiguousMemory<sktext::gpu::ARGB2DVertex (*) [4]>::Data(sktext::gpu::ARGB2DVertex (*) [4])
Line
Count
Source
138
37
        static constexpr value_type* Data(T* t) { return t; }
SkMakeZipDetail::ContiguousMemory<sktext::gpu::ARGB3DVertex (*) [4]>::Data(sktext::gpu::ARGB3DVertex (*) [4])
Line
Count
Source
138
6
        static constexpr value_type* Data(T* t) { return t; }
SkMakeZipDetail::ContiguousMemory<sktext::gpu::Mask3DVertex (*) [4]>::Data(sktext::gpu::Mask3DVertex (*) [4])
Line
Count
Source
138
1.93k
        static constexpr value_type* Data(T* t) { return t; }
139
0
        static constexpr size_t Size(T* s) { return SIZE_MAX; }
Unexecuted instantiation: SkMakeZipDetail::ContiguousMemory<SkRSXform*>::Size(SkRSXform*)
Unexecuted instantiation: SkMakeZipDetail::ContiguousMemory<sktext::gpu::Mask2DVertex (*) [4]>::Size(sktext::gpu::Mask2DVertex (*) [4])
Unexecuted instantiation: SkMakeZipDetail::ContiguousMemory<sktext::gpu::ARGB2DVertex (*) [4]>::Size(sktext::gpu::ARGB2DVertex (*) [4])
Unexecuted instantiation: SkMakeZipDetail::ContiguousMemory<sktext::gpu::ARGB3DVertex (*) [4]>::Size(sktext::gpu::ARGB3DVertex (*) [4])
Unexecuted instantiation: SkMakeZipDetail::ContiguousMemory<sktext::gpu::Mask3DVertex (*) [4]>::Size(sktext::gpu::Mask3DVertex (*) [4])
140
    };
141
    template<typename T, size_t N> struct ContiguousMemory<T(&)[N]> {
142
        using value_type = T;
143
        static constexpr value_type* Data(T(&t)[N]) { return t; }
144
        static constexpr size_t Size(T(&)[N]) { return N; }
145
    };
146
    // In general, we don't want r-value collections, but SkSpans are ok, because they are a view
147
    // onto an actual container.
148
    template<typename T> struct ContiguousMemory<SkSpan<T>> {
149
        using value_type = T;
150
188k
        static constexpr value_type* Data(SkSpan<T> s) { return s.data(); }
SkMakeZipDetail::ContiguousMemory<SkSpan<SkRect> >::Data(SkSpan<SkRect>)
Line
Count
Source
150
34.8k
        static constexpr value_type* Data(SkSpan<T> s) { return s.data(); }
SkMakeZipDetail::ContiguousMemory<SkSpan<SkGlyph const*> >::Data(SkSpan<SkGlyph const*>)
Line
Count
Source
150
86.6k
        static constexpr value_type* Data(SkSpan<T> s) { return s.data(); }
SkMakeZipDetail::ContiguousMemory<SkSpan<float> >::Data(SkSpan<float>)
Line
Count
Source
150
51.7k
        static constexpr value_type* Data(SkSpan<T> s) { return s.data(); }
Unexecuted instantiation: SkMakeZipDetail::ContiguousMemory<SkSpan<SkPoint> >::Data(SkSpan<SkPoint>)
SkMakeZipDetail::ContiguousMemory<SkSpan<SkPoint const> >::Data(SkSpan<SkPoint const>)
Line
Count
Source
150
7.80k
        static constexpr value_type* Data(SkSpan<T> s) { return s.data(); }
SkMakeZipDetail::ContiguousMemory<SkSpan<sktext::gpu::Glyph const*> >::Data(SkSpan<sktext::gpu::Glyph const*>)
Line
Count
Source
150
5.22k
        static constexpr value_type* Data(SkSpan<T> s) { return s.data(); }
SkMakeZipDetail::ContiguousMemory<SkSpan<SkPackedGlyphID const> >::Data(SkSpan<SkPackedGlyphID const>)
Line
Count
Source
150
2.57k
        static constexpr value_type* Data(SkSpan<T> s) { return s.data(); }
151
0
        static constexpr size_t Size(SkSpan<T> s) { return s.size(); }
Unexecuted instantiation: SkMakeZipDetail::ContiguousMemory<SkSpan<SkRect> >::Size(SkSpan<SkRect>)
Unexecuted instantiation: SkMakeZipDetail::ContiguousMemory<SkSpan<SkGlyph const*> >::Size(SkSpan<SkGlyph const*>)
Unexecuted instantiation: SkMakeZipDetail::ContiguousMemory<SkSpan<float> >::Size(SkSpan<float>)
Unexecuted instantiation: SkMakeZipDetail::ContiguousMemory<SkSpan<SkPoint> >::Size(SkSpan<SkPoint>)
Unexecuted instantiation: SkMakeZipDetail::ContiguousMemory<SkSpan<SkPoint const> >::Size(SkSpan<SkPoint const>)
Unexecuted instantiation: SkMakeZipDetail::ContiguousMemory<SkSpan<sktext::gpu::Glyph const*> >::Size(SkSpan<sktext::gpu::Glyph const*>)
Unexecuted instantiation: SkMakeZipDetail::ContiguousMemory<SkSpan<SkPackedGlyphID const> >::Size(SkSpan<SkPackedGlyphID const>)
152
    };
153
    // Only accept l-value references to collections.
154
    template<typename C> struct ContiguousMemory<C&> {
155
        using value_type = typename std::remove_pointer<decltype(std::declval<C>().data())>::type;
156
5.35M
        static constexpr value_type* Data(C& c) { return c.data(); }
SkMakeZipDetail::ContiguousMemory<SkSpan<unsigned short const>&>::Data(SkSpan<unsigned short const>&)
Line
Count
Source
156
306k
        static constexpr value_type* Data(C& c) { return c.data(); }
SkMakeZipDetail::ContiguousMemory<SkSpan<SkPoint const>&>::Data(SkSpan<SkPoint const>&)
Line
Count
Source
156
429k
        static constexpr value_type* Data(C& c) { return c.data(); }
SkMakeZipDetail::ContiguousMemory<SkSpan<SkGlyph const*>&>::Data(SkSpan<SkGlyph const*>&)
Line
Count
Source
156
122k
        static constexpr value_type* Data(C& c) { return c.data(); }
Unexecuted instantiation: SkMakeZipDetail::ContiguousMemory<SkSpan<SkPoint>&>::Data(SkSpan<SkPoint>&)
Unexecuted instantiation: SkMakeZipDetail::ContiguousMemory<SkSpan<SkRSXform const>&>::Data(SkSpan<SkRSXform const>&)
Unexecuted instantiation: SkMakeZipDetail::ContiguousMemory<std::__1::vector<std::__1::unique_ptr<SkPDF::StructureElementNode, std::__1::default_delete<SkPDF::StructureElementNode> >, std::__1::allocator<std::__1::unique_ptr<SkPDF::StructureElementNode, std::__1::default_delete<SkPDF::StructureElementNode> > > >&>::Data(std::__1::vector<std::__1::unique_ptr<SkPDF::StructureElementNode, std::__1::default_delete<SkPDF::StructureElementNode> >, std::__1::allocator<std::__1::unique_ptr<SkPDF::StructureElementNode, std::__1::default_delete<SkPDF::StructureElementNode> > > >&)
Unexecuted instantiation: SkMakeZipDetail::ContiguousMemory<SkSpan<SkPDFStructElem>&>::Data(SkSpan<SkPDFStructElem>&)
SkMakeZipDetail::ContiguousMemory<SkSpan<sktext::IDOrPath> const&>::Data(SkSpan<sktext::IDOrPath> const&)
Line
Count
Source
156
16.7k
        static constexpr value_type* Data(C& c) { return c.data(); }
SkMakeZipDetail::ContiguousMemory<SkSpan<SkPoint const> const&>::Data(SkSpan<SkPoint const> const&)
Line
Count
Source
156
16.7k
        static constexpr value_type* Data(C& c) { return c.data(); }
SkMakeZipDetail::ContiguousMemory<skia_private::STArray<64, unsigned short, true>&>::Data(skia_private::STArray<64, unsigned short, true>&)
Line
Count
Source
156
1.12M
        static constexpr value_type* Data(C& c) { return c.data(); }
SkMakeZipDetail::ContiguousMemory<skia_private::STArray<64, SkPoint, true>&>::Data(skia_private::STArray<64, SkPoint, true>&)
Line
Count
Source
156
2.23M
        static constexpr value_type* Data(C& c) { return c.data(); }
SkMakeZipDetail::ContiguousMemory<skia_private::STArray<64, SkPackedGlyphID, true>&>::Data(skia_private::STArray<64, SkPackedGlyphID, true>&)
Line
Count
Source
156
10.4k
        static constexpr value_type* Data(C& c) { return c.data(); }
SkMakeZipDetail::ContiguousMemory<skia_private::STArray<64, SkMask::Format, true>&>::Data(skia_private::STArray<64, SkMask::Format, true>&)
Line
Count
Source
156
6.41k
        static constexpr value_type* Data(C& c) { return c.data(); }
SkMakeZipDetail::ContiguousMemory<skia_private::STArray<64, SkGlyph const*, true>&>::Data(skia_private::STArray<64, SkGlyph const*, true>&)
Line
Count
Source
156
1.09M
        static constexpr value_type* Data(C& c) { return c.data(); }
157
0
        static constexpr size_t Size(C& c) { return c.size(); }
Unexecuted instantiation: SkMakeZipDetail::ContiguousMemory<SkSpan<unsigned short const>&>::Size(SkSpan<unsigned short const>&)
Unexecuted instantiation: SkMakeZipDetail::ContiguousMemory<SkSpan<SkPoint const>&>::Size(SkSpan<SkPoint const>&)
Unexecuted instantiation: SkMakeZipDetail::ContiguousMemory<SkSpan<SkGlyph const*>&>::Size(SkSpan<SkGlyph const*>&)
Unexecuted instantiation: SkMakeZipDetail::ContiguousMemory<SkSpan<SkPoint>&>::Size(SkSpan<SkPoint>&)
Unexecuted instantiation: SkMakeZipDetail::ContiguousMemory<SkSpan<SkRSXform const>&>::Size(SkSpan<SkRSXform const>&)
Unexecuted instantiation: SkMakeZipDetail::ContiguousMemory<SkSpan<sktext::IDOrPath> const&>::Size(SkSpan<sktext::IDOrPath> const&)
Unexecuted instantiation: SkMakeZipDetail::ContiguousMemory<SkSpan<SkPoint const> const&>::Size(SkSpan<SkPoint const> const&)
Unexecuted instantiation: SkMakeZipDetail::ContiguousMemory<skia_private::STArray<64, unsigned short, true>&>::Size(skia_private::STArray<64, unsigned short, true>&)
Unexecuted instantiation: SkMakeZipDetail::ContiguousMemory<skia_private::STArray<64, SkPoint, true>&>::Size(skia_private::STArray<64, SkPoint, true>&)
Unexecuted instantiation: SkMakeZipDetail::ContiguousMemory<skia_private::STArray<64, SkPackedGlyphID, true>&>::Size(skia_private::STArray<64, SkPackedGlyphID, true>&)
Unexecuted instantiation: SkMakeZipDetail::ContiguousMemory<skia_private::STArray<64, SkMask::Format, true>&>::Size(skia_private::STArray<64, SkMask::Format, true>&)
Unexecuted instantiation: SkMakeZipDetail::ContiguousMemory<skia_private::STArray<64, SkGlyph const*, true>&>::Size(skia_private::STArray<64, SkGlyph const*, true>&)
158
    };
159
    template<typename C> using Span = ContiguousMemory<DecayPointerT<C>>;
160
    template<typename C> using ValueType = typename Span<C>::value_type;
161
162
    template<typename C, typename... Ts> struct PickOneSize {};
163
    template <typename T, typename... Ts> struct PickOneSize<T*, Ts...> {
164
5.22k
        static constexpr size_t Size(T* t, Ts... ts) {
165
5.22k
            return PickOneSize<Ts...>::Size(std::forward<Ts>(ts)...);
166
5.22k
        }
Unexecuted instantiation: SkMakeZipDetail::PickOneSize<SkRSXform*, SkSpan<SkPoint const>, SkSpan<SkPoint const> >::Size(SkRSXform*, SkSpan<SkPoint const>, SkSpan<SkPoint const>)
SkMakeZipDetail::PickOneSize<sktext::gpu::Mask2DVertex (*) [4], SkSpan<sktext::gpu::Glyph const*>, SkSpan<SkPoint const> >::Size(sktext::gpu::Mask2DVertex (*) [4], SkSpan<sktext::gpu::Glyph const*>, SkSpan<SkPoint const>)
Line
Count
Source
164
3.25k
        static constexpr size_t Size(T* t, Ts... ts) {
165
3.25k
            return PickOneSize<Ts...>::Size(std::forward<Ts>(ts)...);
166
3.25k
        }
SkMakeZipDetail::PickOneSize<sktext::gpu::ARGB2DVertex (*) [4], SkSpan<sktext::gpu::Glyph const*>, SkSpan<SkPoint const> >::Size(sktext::gpu::ARGB2DVertex (*) [4], SkSpan<sktext::gpu::Glyph const*>, SkSpan<SkPoint const>)
Line
Count
Source
164
37
        static constexpr size_t Size(T* t, Ts... ts) {
165
37
            return PickOneSize<Ts...>::Size(std::forward<Ts>(ts)...);
166
37
        }
SkMakeZipDetail::PickOneSize<sktext::gpu::ARGB3DVertex (*) [4], SkSpan<sktext::gpu::Glyph const*>, SkSpan<SkPoint const> >::Size(sktext::gpu::ARGB3DVertex (*) [4], SkSpan<sktext::gpu::Glyph const*>, SkSpan<SkPoint const>)
Line
Count
Source
164
6
        static constexpr size_t Size(T* t, Ts... ts) {
165
6
            return PickOneSize<Ts...>::Size(std::forward<Ts>(ts)...);
166
6
        }
SkMakeZipDetail::PickOneSize<sktext::gpu::Mask3DVertex (*) [4], SkSpan<sktext::gpu::Glyph const*>, SkSpan<SkPoint const> >::Size(sktext::gpu::Mask3DVertex (*) [4], SkSpan<sktext::gpu::Glyph const*>, SkSpan<SkPoint const>)
Line
Count
Source
164
1.93k
        static constexpr size_t Size(T* t, Ts... ts) {
165
1.93k
            return PickOneSize<Ts...>::Size(std::forward<Ts>(ts)...);
166
1.93k
        }
167
    };
168
    template <typename T, typename... Ts, size_t N> struct PickOneSize<T(&)[N], Ts...> {
169
        static constexpr size_t Size(T(&)[N], Ts...) { return N; }
170
    };
171
    template<typename T, typename... Ts> struct PickOneSize<SkSpan<T>, Ts...> {
172
94.4k
        static constexpr size_t Size(SkSpan<T> s, Ts...) { return s.size(); }
SkMakeZipDetail::PickOneSize<SkSpan<SkRect>, SkSpan<SkGlyph const*> >::Size(SkSpan<SkRect>, SkSpan<SkGlyph const*>)
Line
Count
Source
172
34.8k
        static constexpr size_t Size(SkSpan<T> s, Ts...) { return s.size(); }
SkMakeZipDetail::PickOneSize<SkSpan<float>, SkSpan<SkGlyph const*> >::Size(SkSpan<float>, SkSpan<SkGlyph const*>)
Line
Count
Source
172
51.7k
        static constexpr size_t Size(SkSpan<T> s, Ts...) { return s.size(); }
Unexecuted instantiation: SkMakeZipDetail::PickOneSize<SkSpan<SkPoint>, SkSpan<SkGlyph const*> >::Size(SkSpan<SkPoint>, SkSpan<SkGlyph const*>)
Unexecuted instantiation: SkMakeZipDetail::PickOneSize<SkSpan<SkPoint const>, SkSpan<SkPoint const> >::Size(SkSpan<SkPoint const>, SkSpan<SkPoint const>)
SkMakeZipDetail::PickOneSize<SkSpan<sktext::gpu::Glyph const*>, SkSpan<SkPoint const> >::Size(SkSpan<sktext::gpu::Glyph const*>, SkSpan<SkPoint const>)
Line
Count
Source
172
5.22k
        static constexpr size_t Size(SkSpan<T> s, Ts...) { return s.size(); }
SkMakeZipDetail::PickOneSize<SkSpan<SkPackedGlyphID const>, SkSpan<SkPoint const> >::Size(SkSpan<SkPackedGlyphID const>, SkSpan<SkPoint const>)
Line
Count
Source
172
2.57k
        static constexpr size_t Size(SkSpan<T> s, Ts...) { return s.size(); }
173
    };
174
    template<typename C, typename... Ts> struct PickOneSize<C&, Ts...> {
175
2.67M
        static constexpr size_t Size(C& c, Ts...) { return c.size(); }
SkMakeZipDetail::PickOneSize<SkSpan<unsigned short const>&, SkSpan<SkPoint const>&>::Size(SkSpan<unsigned short const>&, SkSpan<SkPoint const>&)
Line
Count
Source
175
306k
        static constexpr size_t Size(C& c, Ts...) { return c.size(); }
SkMakeZipDetail::PickOneSize<SkSpan<SkPoint const>&, SkSpan<SkGlyph const*>&>::Size(SkSpan<SkPoint const>&, SkSpan<SkGlyph const*>&)
Line
Count
Source
175
95.2k
        static constexpr size_t Size(C& c, Ts...) { return c.size(); }
Unexecuted instantiation: SkMakeZipDetail::PickOneSize<SkSpan<SkPoint const>&, SkSpan<SkPoint const>&, SkSpan<SkGlyph const*>&>::Size(SkSpan<SkPoint const>&, SkSpan<SkPoint const>&, SkSpan<SkGlyph const*>&)
Unexecuted instantiation: SkMakeZipDetail::PickOneSize<SkSpan<SkPoint const>&, SkSpan<SkPoint const>&>::Size(SkSpan<SkPoint const>&, SkSpan<SkPoint const>&)
Unexecuted instantiation: SkMakeZipDetail::PickOneSize<SkSpan<SkPoint>&, SkSpan<SkPoint>&, SkSpan<SkRSXform const>&>::Size(SkSpan<SkPoint>&, SkSpan<SkPoint>&, SkSpan<SkRSXform const>&)
Unexecuted instantiation: SkMakeZipDetail::PickOneSize<std::__1::vector<std::__1::unique_ptr<SkPDF::StructureElementNode, std::__1::default_delete<SkPDF::StructureElementNode> >, std::__1::allocator<std::__1::unique_ptr<SkPDF::StructureElementNode, std::__1::default_delete<SkPDF::StructureElementNode> > > >&, SkSpan<SkPDFStructElem>&>::Size(std::__1::vector<std::__1::unique_ptr<SkPDF::StructureElementNode, std::__1::default_delete<SkPDF::StructureElementNode> >, std::__1::allocator<std::__1::unique_ptr<SkPDF::StructureElementNode, std::__1::default_delete<SkPDF::StructureElementNode> > > >&, SkSpan<SkPDFStructElem>&)
SkMakeZipDetail::PickOneSize<SkSpan<sktext::IDOrPath> const&, SkSpan<SkPoint const> const&>::Size(SkSpan<sktext::IDOrPath> const&, SkSpan<SkPoint const> const&)
Line
Count
Source
175
16.7k
        static constexpr size_t Size(C& c, Ts...) { return c.size(); }
SkMakeZipDetail::PickOneSize<skia_private::STArray<64, unsigned short, true>&, skia_private::STArray<64, SkPoint, true>&>::Size(skia_private::STArray<64, unsigned short, true>&, skia_private::STArray<64, SkPoint, true>&)
Line
Count
Source
175
1.12M
        static constexpr size_t Size(C& c, Ts...) { return c.size(); }
SkMakeZipDetail::PickOneSize<skia_private::STArray<64, SkPackedGlyphID, true>&, skia_private::STArray<64, SkPoint, true>&>::Size(skia_private::STArray<64, SkPackedGlyphID, true>&, skia_private::STArray<64, SkPoint, true>&)
Line
Count
Source
175
4.07k
        static constexpr size_t Size(C& c, Ts...) { return c.size(); }
SkMakeZipDetail::PickOneSize<skia_private::STArray<64, SkPackedGlyphID, true>&, skia_private::STArray<64, SkPoint, true>&, skia_private::STArray<64, SkMask::Format, true>&>::Size(skia_private::STArray<64, SkPackedGlyphID, true>&, skia_private::STArray<64, SkPoint, true>&, skia_private::STArray<64, SkMask::Format, true>&)
Line
Count
Source
175
6.41k
        static constexpr size_t Size(C& c, Ts...) { return c.size(); }
SkMakeZipDetail::PickOneSize<skia_private::STArray<64, SkGlyph const*, true>&, skia_private::STArray<64, SkPoint, true>&>::Size(skia_private::STArray<64, SkGlyph const*, true>&, skia_private::STArray<64, SkPoint, true>&)
Line
Count
Source
175
1.09M
        static constexpr size_t Size(C& c, Ts...) { return c.size(); }
SkMakeZipDetail::PickOneSize<SkSpan<SkGlyph const*>&, SkSpan<SkPoint const>&>::Size(SkSpan<SkGlyph const*>&, SkSpan<SkPoint const>&)
Line
Count
Source
175
27.7k
        static constexpr size_t Size(C& c, Ts...) { return c.size(); }
176
    };
177
178
public:
179
    template<typename... Ts>
180
2.77M
    static constexpr auto MakeZip(Ts&& ... ts) {
181
        // NOLINTBEGIN
182
        // Pick the first collection that has a size, and use that for the size.
183
2.77M
        size_t size = PickOneSize<DecayPointerT<Ts>...>::Size(std::forward<Ts>(ts)...);
184
185
#ifdef SK_DEBUG
186
        // Check that all sizes are the same.
187
        size_t minSize = SIZE_MAX;
188
        size_t maxSize = 0;
189
        size_t sizes[sizeof...(Ts)] = {Span<Ts>::Size(std::forward<Ts>(ts))...};
190
0
        for (size_t s : sizes) {
191
0
            if (s != SIZE_MAX) {
192
0
                minSize = std::min(minSize, s);
193
0
                maxSize = std::max(maxSize, s);
194
0
            }
195
0
        }
196
0
        SkASSERT(minSize == maxSize);
197
#endif
198
199
2.77M
        return SkZip<ValueType<Ts>...>(size, Span<Ts>::Data(std::forward<Ts>(ts))...);
200
        // NOLINTEND
201
2.77M
    }
auto SkMakeZipDetail::MakeZip<SkSpan<SkRect>, SkSpan<SkGlyph const*> >(SkSpan<SkRect>&&, SkSpan<SkGlyph const*>&&)
Line
Count
Source
180
34.8k
    static constexpr auto MakeZip(Ts&& ... ts) {
181
        // NOLINTBEGIN
182
        // Pick the first collection that has a size, and use that for the size.
183
34.8k
        size_t size = PickOneSize<DecayPointerT<Ts>...>::Size(std::forward<Ts>(ts)...);
184
185
#ifdef SK_DEBUG
186
        // Check that all sizes are the same.
187
        size_t minSize = SIZE_MAX;
188
        size_t maxSize = 0;
189
        size_t sizes[sizeof...(Ts)] = {Span<Ts>::Size(std::forward<Ts>(ts))...};
190
        for (size_t s : sizes) {
191
            if (s != SIZE_MAX) {
192
                minSize = std::min(minSize, s);
193
                maxSize = std::max(maxSize, s);
194
            }
195
        }
196
        SkASSERT(minSize == maxSize);
197
#endif
198
199
34.8k
        return SkZip<ValueType<Ts>...>(size, Span<Ts>::Data(std::forward<Ts>(ts))...);
200
        // NOLINTEND
201
34.8k
    }
auto SkMakeZipDetail::MakeZip<SkSpan<float>, SkSpan<SkGlyph const*> >(SkSpan<float>&&, SkSpan<SkGlyph const*>&&)
Line
Count
Source
180
51.7k
    static constexpr auto MakeZip(Ts&& ... ts) {
181
        // NOLINTBEGIN
182
        // Pick the first collection that has a size, and use that for the size.
183
51.7k
        size_t size = PickOneSize<DecayPointerT<Ts>...>::Size(std::forward<Ts>(ts)...);
184
185
#ifdef SK_DEBUG
186
        // Check that all sizes are the same.
187
        size_t minSize = SIZE_MAX;
188
        size_t maxSize = 0;
189
        size_t sizes[sizeof...(Ts)] = {Span<Ts>::Size(std::forward<Ts>(ts))...};
190
        for (size_t s : sizes) {
191
            if (s != SIZE_MAX) {
192
                minSize = std::min(minSize, s);
193
                maxSize = std::max(maxSize, s);
194
            }
195
        }
196
        SkASSERT(minSize == maxSize);
197
#endif
198
199
51.7k
        return SkZip<ValueType<Ts>...>(size, Span<Ts>::Data(std::forward<Ts>(ts))...);
200
        // NOLINTEND
201
51.7k
    }
Unexecuted instantiation: auto SkMakeZipDetail::MakeZip<SkSpan<SkPoint>, SkSpan<SkGlyph const*> >(SkSpan<SkPoint>&&, SkSpan<SkGlyph const*>&&)
auto SkMakeZipDetail::MakeZip<SkSpan<unsigned short const>&, SkSpan<SkPoint const>&>(SkSpan<unsigned short const>&, SkSpan<SkPoint const>&)
Line
Count
Source
180
306k
    static constexpr auto MakeZip(Ts&& ... ts) {
181
        // NOLINTBEGIN
182
        // Pick the first collection that has a size, and use that for the size.
183
306k
        size_t size = PickOneSize<DecayPointerT<Ts>...>::Size(std::forward<Ts>(ts)...);
184
185
#ifdef SK_DEBUG
186
        // Check that all sizes are the same.
187
        size_t minSize = SIZE_MAX;
188
        size_t maxSize = 0;
189
        size_t sizes[sizeof...(Ts)] = {Span<Ts>::Size(std::forward<Ts>(ts))...};
190
        for (size_t s : sizes) {
191
            if (s != SIZE_MAX) {
192
                minSize = std::min(minSize, s);
193
                maxSize = std::max(maxSize, s);
194
            }
195
        }
196
        SkASSERT(minSize == maxSize);
197
#endif
198
199
306k
        return SkZip<ValueType<Ts>...>(size, Span<Ts>::Data(std::forward<Ts>(ts))...);
200
        // NOLINTEND
201
306k
    }
Unexecuted instantiation: auto SkMakeZipDetail::MakeZip<SkRSXform*, SkSpan<SkPoint const>, SkSpan<SkPoint const> >(SkRSXform*&&, SkSpan<SkPoint const>&&, SkSpan<SkPoint const>&&)
auto SkMakeZipDetail::MakeZip<SkSpan<SkPoint const>&, SkSpan<SkGlyph const*>&>(SkSpan<SkPoint const>&, SkSpan<SkGlyph const*>&)
Line
Count
Source
180
95.2k
    static constexpr auto MakeZip(Ts&& ... ts) {
181
        // NOLINTBEGIN
182
        // Pick the first collection that has a size, and use that for the size.
183
95.2k
        size_t size = PickOneSize<DecayPointerT<Ts>...>::Size(std::forward<Ts>(ts)...);
184
185
#ifdef SK_DEBUG
186
        // Check that all sizes are the same.
187
        size_t minSize = SIZE_MAX;
188
        size_t maxSize = 0;
189
        size_t sizes[sizeof...(Ts)] = {Span<Ts>::Size(std::forward<Ts>(ts))...};
190
        for (size_t s : sizes) {
191
            if (s != SIZE_MAX) {
192
                minSize = std::min(minSize, s);
193
                maxSize = std::max(maxSize, s);
194
            }
195
        }
196
        SkASSERT(minSize == maxSize);
197
#endif
198
199
95.2k
        return SkZip<ValueType<Ts>...>(size, Span<Ts>::Data(std::forward<Ts>(ts))...);
200
        // NOLINTEND
201
95.2k
    }
Unexecuted instantiation: auto SkMakeZipDetail::MakeZip<SkSpan<SkPoint const>&, SkSpan<SkPoint const>&, SkSpan<SkGlyph const*>&>(SkSpan<SkPoint const>&, SkSpan<SkPoint const>&, SkSpan<SkGlyph const*>&)
Unexecuted instantiation: auto SkMakeZipDetail::MakeZip<SkSpan<SkPoint const>&, SkSpan<SkPoint const>&>(SkSpan<SkPoint const>&, SkSpan<SkPoint const>&)
Unexecuted instantiation: auto SkMakeZipDetail::MakeZip<SkSpan<SkPoint>&, SkSpan<SkPoint>&, SkSpan<SkRSXform const>&>(SkSpan<SkPoint>&, SkSpan<SkPoint>&, SkSpan<SkRSXform const>&)
auto SkMakeZipDetail::MakeZip<sktext::gpu::Mask2DVertex (*&) [4], SkSpan<sktext::gpu::Glyph const*>, SkSpan<SkPoint const> >(sktext::gpu::Mask2DVertex (*&) [4], SkSpan<sktext::gpu::Glyph const*>&&, SkSpan<SkPoint const>&&)
Line
Count
Source
180
3.25k
    static constexpr auto MakeZip(Ts&& ... ts) {
181
        // NOLINTBEGIN
182
        // Pick the first collection that has a size, and use that for the size.
183
3.25k
        size_t size = PickOneSize<DecayPointerT<Ts>...>::Size(std::forward<Ts>(ts)...);
184
185
#ifdef SK_DEBUG
186
        // Check that all sizes are the same.
187
        size_t minSize = SIZE_MAX;
188
        size_t maxSize = 0;
189
        size_t sizes[sizeof...(Ts)] = {Span<Ts>::Size(std::forward<Ts>(ts))...};
190
        for (size_t s : sizes) {
191
            if (s != SIZE_MAX) {
192
                minSize = std::min(minSize, s);
193
                maxSize = std::max(maxSize, s);
194
            }
195
        }
196
        SkASSERT(minSize == maxSize);
197
#endif
198
199
3.25k
        return SkZip<ValueType<Ts>...>(size, Span<Ts>::Data(std::forward<Ts>(ts))...);
200
        // NOLINTEND
201
3.25k
    }
auto SkMakeZipDetail::MakeZip<sktext::gpu::ARGB2DVertex (*&) [4], SkSpan<sktext::gpu::Glyph const*>, SkSpan<SkPoint const> >(sktext::gpu::ARGB2DVertex (*&) [4], SkSpan<sktext::gpu::Glyph const*>&&, SkSpan<SkPoint const>&&)
Line
Count
Source
180
37
    static constexpr auto MakeZip(Ts&& ... ts) {
181
        // NOLINTBEGIN
182
        // Pick the first collection that has a size, and use that for the size.
183
37
        size_t size = PickOneSize<DecayPointerT<Ts>...>::Size(std::forward<Ts>(ts)...);
184
185
#ifdef SK_DEBUG
186
        // Check that all sizes are the same.
187
        size_t minSize = SIZE_MAX;
188
        size_t maxSize = 0;
189
        size_t sizes[sizeof...(Ts)] = {Span<Ts>::Size(std::forward<Ts>(ts))...};
190
        for (size_t s : sizes) {
191
            if (s != SIZE_MAX) {
192
                minSize = std::min(minSize, s);
193
                maxSize = std::max(maxSize, s);
194
            }
195
        }
196
        SkASSERT(minSize == maxSize);
197
#endif
198
199
37
        return SkZip<ValueType<Ts>...>(size, Span<Ts>::Data(std::forward<Ts>(ts))...);
200
        // NOLINTEND
201
37
    }
auto SkMakeZipDetail::MakeZip<sktext::gpu::ARGB3DVertex (*&) [4], SkSpan<sktext::gpu::Glyph const*>, SkSpan<SkPoint const> >(sktext::gpu::ARGB3DVertex (*&) [4], SkSpan<sktext::gpu::Glyph const*>&&, SkSpan<SkPoint const>&&)
Line
Count
Source
180
6
    static constexpr auto MakeZip(Ts&& ... ts) {
181
        // NOLINTBEGIN
182
        // Pick the first collection that has a size, and use that for the size.
183
6
        size_t size = PickOneSize<DecayPointerT<Ts>...>::Size(std::forward<Ts>(ts)...);
184
185
#ifdef SK_DEBUG
186
        // Check that all sizes are the same.
187
        size_t minSize = SIZE_MAX;
188
        size_t maxSize = 0;
189
        size_t sizes[sizeof...(Ts)] = {Span<Ts>::Size(std::forward<Ts>(ts))...};
190
        for (size_t s : sizes) {
191
            if (s != SIZE_MAX) {
192
                minSize = std::min(minSize, s);
193
                maxSize = std::max(maxSize, s);
194
            }
195
        }
196
        SkASSERT(minSize == maxSize);
197
#endif
198
199
6
        return SkZip<ValueType<Ts>...>(size, Span<Ts>::Data(std::forward<Ts>(ts))...);
200
        // NOLINTEND
201
6
    }
auto SkMakeZipDetail::MakeZip<sktext::gpu::Mask3DVertex (*&) [4], SkSpan<sktext::gpu::Glyph const*>, SkSpan<SkPoint const> >(sktext::gpu::Mask3DVertex (*&) [4], SkSpan<sktext::gpu::Glyph const*>&&, SkSpan<SkPoint const>&&)
Line
Count
Source
180
1.93k
    static constexpr auto MakeZip(Ts&& ... ts) {
181
        // NOLINTBEGIN
182
        // Pick the first collection that has a size, and use that for the size.
183
1.93k
        size_t size = PickOneSize<DecayPointerT<Ts>...>::Size(std::forward<Ts>(ts)...);
184
185
#ifdef SK_DEBUG
186
        // Check that all sizes are the same.
187
        size_t minSize = SIZE_MAX;
188
        size_t maxSize = 0;
189
        size_t sizes[sizeof...(Ts)] = {Span<Ts>::Size(std::forward<Ts>(ts))...};
190
        for (size_t s : sizes) {
191
            if (s != SIZE_MAX) {
192
                minSize = std::min(minSize, s);
193
                maxSize = std::max(maxSize, s);
194
            }
195
        }
196
        SkASSERT(minSize == maxSize);
197
#endif
198
199
1.93k
        return SkZip<ValueType<Ts>...>(size, Span<Ts>::Data(std::forward<Ts>(ts))...);
200
        // NOLINTEND
201
1.93k
    }
Unexecuted instantiation: auto SkMakeZipDetail::MakeZip<SkSpan<sktext::gpu::Glyph const*>, SkSpan<SkPoint const> >(SkSpan<sktext::gpu::Glyph const*>&&, SkSpan<SkPoint const>&&)
Unexecuted instantiation: auto SkMakeZipDetail::MakeZip<std::__1::vector<std::__1::unique_ptr<SkPDF::StructureElementNode, std::__1::default_delete<SkPDF::StructureElementNode> >, std::__1::allocator<std::__1::unique_ptr<SkPDF::StructureElementNode, std::__1::default_delete<SkPDF::StructureElementNode> > > >&, SkSpan<SkPDFStructElem>&>(std::__1::vector<std::__1::unique_ptr<SkPDF::StructureElementNode, std::__1::default_delete<SkPDF::StructureElementNode> >, std::__1::allocator<std::__1::unique_ptr<SkPDF::StructureElementNode, std::__1::default_delete<SkPDF::StructureElementNode> > > >&, SkSpan<SkPDFStructElem>&)
auto SkMakeZipDetail::MakeZip<SkSpan<sktext::IDOrPath> const&, SkSpan<SkPoint const> const&>(SkSpan<sktext::IDOrPath> const&, SkSpan<SkPoint const> const&)
Line
Count
Source
180
16.7k
    static constexpr auto MakeZip(Ts&& ... ts) {
181
        // NOLINTBEGIN
182
        // Pick the first collection that has a size, and use that for the size.
183
16.7k
        size_t size = PickOneSize<DecayPointerT<Ts>...>::Size(std::forward<Ts>(ts)...);
184
185
#ifdef SK_DEBUG
186
        // Check that all sizes are the same.
187
        size_t minSize = SIZE_MAX;
188
        size_t maxSize = 0;
189
        size_t sizes[sizeof...(Ts)] = {Span<Ts>::Size(std::forward<Ts>(ts))...};
190
        for (size_t s : sizes) {
191
            if (s != SIZE_MAX) {
192
                minSize = std::min(minSize, s);
193
                maxSize = std::max(maxSize, s);
194
            }
195
        }
196
        SkASSERT(minSize == maxSize);
197
#endif
198
199
16.7k
        return SkZip<ValueType<Ts>...>(size, Span<Ts>::Data(std::forward<Ts>(ts))...);
200
        // NOLINTEND
201
16.7k
    }
auto SkMakeZipDetail::MakeZip<skia_private::STArray<64, unsigned short, true>&, skia_private::STArray<64, SkPoint, true>&>(skia_private::STArray<64, unsigned short, true>&, skia_private::STArray<64, SkPoint, true>&)
Line
Count
Source
180
1.12M
    static constexpr auto MakeZip(Ts&& ... ts) {
181
        // NOLINTBEGIN
182
        // Pick the first collection that has a size, and use that for the size.
183
1.12M
        size_t size = PickOneSize<DecayPointerT<Ts>...>::Size(std::forward<Ts>(ts)...);
184
185
#ifdef SK_DEBUG
186
        // Check that all sizes are the same.
187
        size_t minSize = SIZE_MAX;
188
        size_t maxSize = 0;
189
        size_t sizes[sizeof...(Ts)] = {Span<Ts>::Size(std::forward<Ts>(ts))...};
190
        for (size_t s : sizes) {
191
            if (s != SIZE_MAX) {
192
                minSize = std::min(minSize, s);
193
                maxSize = std::max(maxSize, s);
194
            }
195
        }
196
        SkASSERT(minSize == maxSize);
197
#endif
198
199
1.12M
        return SkZip<ValueType<Ts>...>(size, Span<Ts>::Data(std::forward<Ts>(ts))...);
200
        // NOLINTEND
201
1.12M
    }
auto SkMakeZipDetail::MakeZip<skia_private::STArray<64, SkPackedGlyphID, true>&, skia_private::STArray<64, SkPoint, true>&>(skia_private::STArray<64, SkPackedGlyphID, true>&, skia_private::STArray<64, SkPoint, true>&)
Line
Count
Source
180
4.07k
    static constexpr auto MakeZip(Ts&& ... ts) {
181
        // NOLINTBEGIN
182
        // Pick the first collection that has a size, and use that for the size.
183
4.07k
        size_t size = PickOneSize<DecayPointerT<Ts>...>::Size(std::forward<Ts>(ts)...);
184
185
#ifdef SK_DEBUG
186
        // Check that all sizes are the same.
187
        size_t minSize = SIZE_MAX;
188
        size_t maxSize = 0;
189
        size_t sizes[sizeof...(Ts)] = {Span<Ts>::Size(std::forward<Ts>(ts))...};
190
        for (size_t s : sizes) {
191
            if (s != SIZE_MAX) {
192
                minSize = std::min(minSize, s);
193
                maxSize = std::max(maxSize, s);
194
            }
195
        }
196
        SkASSERT(minSize == maxSize);
197
#endif
198
199
4.07k
        return SkZip<ValueType<Ts>...>(size, Span<Ts>::Data(std::forward<Ts>(ts))...);
200
        // NOLINTEND
201
4.07k
    }
auto SkMakeZipDetail::MakeZip<skia_private::STArray<64, SkPackedGlyphID, true>&, skia_private::STArray<64, SkPoint, true>&, skia_private::STArray<64, SkMask::Format, true>&>(skia_private::STArray<64, SkPackedGlyphID, true>&, skia_private::STArray<64, SkPoint, true>&, skia_private::STArray<64, SkMask::Format, true>&)
Line
Count
Source
180
6.41k
    static constexpr auto MakeZip(Ts&& ... ts) {
181
        // NOLINTBEGIN
182
        // Pick the first collection that has a size, and use that for the size.
183
6.41k
        size_t size = PickOneSize<DecayPointerT<Ts>...>::Size(std::forward<Ts>(ts)...);
184
185
#ifdef SK_DEBUG
186
        // Check that all sizes are the same.
187
        size_t minSize = SIZE_MAX;
188
        size_t maxSize = 0;
189
        size_t sizes[sizeof...(Ts)] = {Span<Ts>::Size(std::forward<Ts>(ts))...};
190
        for (size_t s : sizes) {
191
            if (s != SIZE_MAX) {
192
                minSize = std::min(minSize, s);
193
                maxSize = std::max(maxSize, s);
194
            }
195
        }
196
        SkASSERT(minSize == maxSize);
197
#endif
198
199
6.41k
        return SkZip<ValueType<Ts>...>(size, Span<Ts>::Data(std::forward<Ts>(ts))...);
200
        // NOLINTEND
201
6.41k
    }
auto SkMakeZipDetail::MakeZip<SkSpan<SkPackedGlyphID const>, SkSpan<SkPoint const> >(SkSpan<SkPackedGlyphID const>&&, SkSpan<SkPoint const>&&)
Line
Count
Source
180
2.57k
    static constexpr auto MakeZip(Ts&& ... ts) {
181
        // NOLINTBEGIN
182
        // Pick the first collection that has a size, and use that for the size.
183
2.57k
        size_t size = PickOneSize<DecayPointerT<Ts>...>::Size(std::forward<Ts>(ts)...);
184
185
#ifdef SK_DEBUG
186
        // Check that all sizes are the same.
187
        size_t minSize = SIZE_MAX;
188
        size_t maxSize = 0;
189
        size_t sizes[sizeof...(Ts)] = {Span<Ts>::Size(std::forward<Ts>(ts))...};
190
        for (size_t s : sizes) {
191
            if (s != SIZE_MAX) {
192
                minSize = std::min(minSize, s);
193
                maxSize = std::max(maxSize, s);
194
            }
195
        }
196
        SkASSERT(minSize == maxSize);
197
#endif
198
199
2.57k
        return SkZip<ValueType<Ts>...>(size, Span<Ts>::Data(std::forward<Ts>(ts))...);
200
        // NOLINTEND
201
2.57k
    }
auto SkMakeZipDetail::MakeZip<skia_private::STArray<64, SkGlyph const*, true>&, skia_private::STArray<64, SkPoint, true>&>(skia_private::STArray<64, SkGlyph const*, true>&, skia_private::STArray<64, SkPoint, true>&)
Line
Count
Source
180
1.09M
    static constexpr auto MakeZip(Ts&& ... ts) {
181
        // NOLINTBEGIN
182
        // Pick the first collection that has a size, and use that for the size.
183
1.09M
        size_t size = PickOneSize<DecayPointerT<Ts>...>::Size(std::forward<Ts>(ts)...);
184
185
#ifdef SK_DEBUG
186
        // Check that all sizes are the same.
187
        size_t minSize = SIZE_MAX;
188
        size_t maxSize = 0;
189
        size_t sizes[sizeof...(Ts)] = {Span<Ts>::Size(std::forward<Ts>(ts))...};
190
        for (size_t s : sizes) {
191
            if (s != SIZE_MAX) {
192
                minSize = std::min(minSize, s);
193
                maxSize = std::max(maxSize, s);
194
            }
195
        }
196
        SkASSERT(minSize == maxSize);
197
#endif
198
199
1.09M
        return SkZip<ValueType<Ts>...>(size, Span<Ts>::Data(std::forward<Ts>(ts))...);
200
        // NOLINTEND
201
1.09M
    }
auto SkMakeZipDetail::MakeZip<SkSpan<SkGlyph const*>&, SkSpan<SkPoint const>&>(SkSpan<SkGlyph const*>&, SkSpan<SkPoint const>&)
Line
Count
Source
180
27.7k
    static constexpr auto MakeZip(Ts&& ... ts) {
181
        // NOLINTBEGIN
182
        // Pick the first collection that has a size, and use that for the size.
183
27.7k
        size_t size = PickOneSize<DecayPointerT<Ts>...>::Size(std::forward<Ts>(ts)...);
184
185
#ifdef SK_DEBUG
186
        // Check that all sizes are the same.
187
        size_t minSize = SIZE_MAX;
188
        size_t maxSize = 0;
189
        size_t sizes[sizeof...(Ts)] = {Span<Ts>::Size(std::forward<Ts>(ts))...};
190
        for (size_t s : sizes) {
191
            if (s != SIZE_MAX) {
192
                minSize = std::min(minSize, s);
193
                maxSize = std::max(maxSize, s);
194
            }
195
        }
196
        SkASSERT(minSize == maxSize);
197
#endif
198
199
27.7k
        return SkZip<ValueType<Ts>...>(size, Span<Ts>::Data(std::forward<Ts>(ts))...);
200
        // NOLINTEND
201
27.7k
    }
Unexecuted instantiation: auto SkMakeZipDetail::MakeZip<SkSpan<SkPoint>, SkSpan<SkGlyph const*> >(SkSpan<SkPoint>&&, SkSpan<SkGlyph const*>&&)
Unexecuted instantiation: auto SkMakeZipDetail::MakeZip<SkRSXform*, SkSpan<SkPoint const>, SkSpan<SkPoint const> >(SkRSXform*&&, SkSpan<SkPoint const>&&, SkSpan<SkPoint const>&&)
Unexecuted instantiation: auto SkMakeZipDetail::MakeZip<SkSpan<SkPoint const>&, SkSpan<SkPoint const>&, SkSpan<SkGlyph const*>&>(SkSpan<SkPoint const>&, SkSpan<SkPoint const>&, SkSpan<SkGlyph const*>&)
Unexecuted instantiation: auto SkMakeZipDetail::MakeZip<SkSpan<SkPoint const>&, SkSpan<SkPoint const>&>(SkSpan<SkPoint const>&, SkSpan<SkPoint const>&)
Unexecuted instantiation: auto SkMakeZipDetail::MakeZip<SkSpan<SkPoint>&, SkSpan<SkPoint>&, SkSpan<SkRSXform const>&>(SkSpan<SkPoint>&, SkSpan<SkPoint>&, SkSpan<SkRSXform const>&)
Unexecuted instantiation: auto SkMakeZipDetail::MakeZip<SkSpan<sktext::gpu::Glyph const*>, SkSpan<SkPoint const> >(SkSpan<sktext::gpu::Glyph const*>&&, SkSpan<SkPoint const>&&)
202
};
203
204
template<typename... Ts>
205
SkZip(size_t size, Ts*... ts) -> SkZip<Ts...>;
206
207
template<typename... Ts>
208
2.77M
inline constexpr auto SkMakeZip(Ts&& ... ts) {
209
2.77M
    return SkMakeZipDetail::MakeZip(std::forward<Ts>(ts)...);
210
2.77M
}
auto SkMakeZip<SkSpan<SkRect>, SkSpan<SkGlyph const*> >(SkSpan<SkRect>&&, SkSpan<SkGlyph const*>&&)
Line
Count
Source
208
34.8k
inline constexpr auto SkMakeZip(Ts&& ... ts) {
209
34.8k
    return SkMakeZipDetail::MakeZip(std::forward<Ts>(ts)...);
210
34.8k
}
auto SkMakeZip<SkSpan<float>, SkSpan<SkGlyph const*> >(SkSpan<float>&&, SkSpan<SkGlyph const*>&&)
Line
Count
Source
208
51.7k
inline constexpr auto SkMakeZip(Ts&& ... ts) {
209
51.7k
    return SkMakeZipDetail::MakeZip(std::forward<Ts>(ts)...);
210
51.7k
}
Unexecuted instantiation: auto SkMakeZip<SkSpan<SkPoint>, SkSpan<SkGlyph const*> >(SkSpan<SkPoint>&&, SkSpan<SkGlyph const*>&&)
auto SkMakeZip<SkSpan<unsigned short const>&, SkSpan<SkPoint const>&>(SkSpan<unsigned short const>&, SkSpan<SkPoint const>&)
Line
Count
Source
208
306k
inline constexpr auto SkMakeZip(Ts&& ... ts) {
209
306k
    return SkMakeZipDetail::MakeZip(std::forward<Ts>(ts)...);
210
306k
}
Unexecuted instantiation: auto SkMakeZip<SkRSXform*, SkSpan<SkPoint const>, SkSpan<SkPoint const> >(SkRSXform*&&, SkSpan<SkPoint const>&&, SkSpan<SkPoint const>&&)
auto SkMakeZip<SkSpan<SkPoint const>&, SkSpan<SkGlyph const*>&>(SkSpan<SkPoint const>&, SkSpan<SkGlyph const*>&)
Line
Count
Source
208
95.2k
inline constexpr auto SkMakeZip(Ts&& ... ts) {
209
95.2k
    return SkMakeZipDetail::MakeZip(std::forward<Ts>(ts)...);
210
95.2k
}
Unexecuted instantiation: auto SkMakeZip<SkSpan<SkPoint const>&, SkSpan<SkPoint const>&, SkSpan<SkGlyph const*>&>(SkSpan<SkPoint const>&, SkSpan<SkPoint const>&, SkSpan<SkGlyph const*>&)
Unexecuted instantiation: auto SkMakeZip<SkSpan<SkPoint const>&, SkSpan<SkPoint const>&>(SkSpan<SkPoint const>&, SkSpan<SkPoint const>&)
Unexecuted instantiation: auto SkMakeZip<SkSpan<SkPoint>&, SkSpan<SkPoint>&, SkSpan<SkRSXform const>&>(SkSpan<SkPoint>&, SkSpan<SkPoint>&, SkSpan<SkRSXform const>&)
auto SkMakeZip<sktext::gpu::Mask2DVertex (*&) [4], SkSpan<sktext::gpu::Glyph const*>, SkSpan<SkPoint const> >(sktext::gpu::Mask2DVertex (*&) [4], SkSpan<sktext::gpu::Glyph const*>&&, SkSpan<SkPoint const>&&)
Line
Count
Source
208
3.25k
inline constexpr auto SkMakeZip(Ts&& ... ts) {
209
3.25k
    return SkMakeZipDetail::MakeZip(std::forward<Ts>(ts)...);
210
3.25k
}
auto SkMakeZip<sktext::gpu::ARGB2DVertex (*&) [4], SkSpan<sktext::gpu::Glyph const*>, SkSpan<SkPoint const> >(sktext::gpu::ARGB2DVertex (*&) [4], SkSpan<sktext::gpu::Glyph const*>&&, SkSpan<SkPoint const>&&)
Line
Count
Source
208
37
inline constexpr auto SkMakeZip(Ts&& ... ts) {
209
37
    return SkMakeZipDetail::MakeZip(std::forward<Ts>(ts)...);
210
37
}
auto SkMakeZip<sktext::gpu::ARGB3DVertex (*&) [4], SkSpan<sktext::gpu::Glyph const*>, SkSpan<SkPoint const> >(sktext::gpu::ARGB3DVertex (*&) [4], SkSpan<sktext::gpu::Glyph const*>&&, SkSpan<SkPoint const>&&)
Line
Count
Source
208
6
inline constexpr auto SkMakeZip(Ts&& ... ts) {
209
6
    return SkMakeZipDetail::MakeZip(std::forward<Ts>(ts)...);
210
6
}
auto SkMakeZip<sktext::gpu::Mask3DVertex (*&) [4], SkSpan<sktext::gpu::Glyph const*>, SkSpan<SkPoint const> >(sktext::gpu::Mask3DVertex (*&) [4], SkSpan<sktext::gpu::Glyph const*>&&, SkSpan<SkPoint const>&&)
Line
Count
Source
208
1.93k
inline constexpr auto SkMakeZip(Ts&& ... ts) {
209
1.93k
    return SkMakeZipDetail::MakeZip(std::forward<Ts>(ts)...);
210
1.93k
}
Unexecuted instantiation: auto SkMakeZip<SkSpan<sktext::gpu::Glyph const*>, SkSpan<SkPoint const> >(SkSpan<sktext::gpu::Glyph const*>&&, SkSpan<SkPoint const>&&)
Unexecuted instantiation: auto SkMakeZip<std::__1::vector<std::__1::unique_ptr<SkPDF::StructureElementNode, std::__1::default_delete<SkPDF::StructureElementNode> >, std::__1::allocator<std::__1::unique_ptr<SkPDF::StructureElementNode, std::__1::default_delete<SkPDF::StructureElementNode> > > >&, SkSpan<SkPDFStructElem>&>(std::__1::vector<std::__1::unique_ptr<SkPDF::StructureElementNode, std::__1::default_delete<SkPDF::StructureElementNode> >, std::__1::allocator<std::__1::unique_ptr<SkPDF::StructureElementNode, std::__1::default_delete<SkPDF::StructureElementNode> > > >&, SkSpan<SkPDFStructElem>&)
auto SkMakeZip<SkSpan<sktext::IDOrPath> const&, SkSpan<SkPoint const> const&>(SkSpan<sktext::IDOrPath> const&, SkSpan<SkPoint const> const&)
Line
Count
Source
208
16.7k
inline constexpr auto SkMakeZip(Ts&& ... ts) {
209
16.7k
    return SkMakeZipDetail::MakeZip(std::forward<Ts>(ts)...);
210
16.7k
}
auto SkMakeZip<skia_private::STArray<64, unsigned short, true>&, skia_private::STArray<64, SkPoint, true>&>(skia_private::STArray<64, unsigned short, true>&, skia_private::STArray<64, SkPoint, true>&)
Line
Count
Source
208
1.12M
inline constexpr auto SkMakeZip(Ts&& ... ts) {
209
1.12M
    return SkMakeZipDetail::MakeZip(std::forward<Ts>(ts)...);
210
1.12M
}
auto SkMakeZip<skia_private::STArray<64, SkPackedGlyphID, true>&, skia_private::STArray<64, SkPoint, true>&>(skia_private::STArray<64, SkPackedGlyphID, true>&, skia_private::STArray<64, SkPoint, true>&)
Line
Count
Source
208
4.07k
inline constexpr auto SkMakeZip(Ts&& ... ts) {
209
4.07k
    return SkMakeZipDetail::MakeZip(std::forward<Ts>(ts)...);
210
4.07k
}
auto SkMakeZip<skia_private::STArray<64, SkPackedGlyphID, true>&, skia_private::STArray<64, SkPoint, true>&, skia_private::STArray<64, SkMask::Format, true>&>(skia_private::STArray<64, SkPackedGlyphID, true>&, skia_private::STArray<64, SkPoint, true>&, skia_private::STArray<64, SkMask::Format, true>&)
Line
Count
Source
208
6.41k
inline constexpr auto SkMakeZip(Ts&& ... ts) {
209
6.41k
    return SkMakeZipDetail::MakeZip(std::forward<Ts>(ts)...);
210
6.41k
}
auto SkMakeZip<SkSpan<SkPackedGlyphID const>, SkSpan<SkPoint const> >(SkSpan<SkPackedGlyphID const>&&, SkSpan<SkPoint const>&&)
Line
Count
Source
208
2.57k
inline constexpr auto SkMakeZip(Ts&& ... ts) {
209
2.57k
    return SkMakeZipDetail::MakeZip(std::forward<Ts>(ts)...);
210
2.57k
}
auto SkMakeZip<skia_private::STArray<64, SkGlyph const*, true>&, skia_private::STArray<64, SkPoint, true>&>(skia_private::STArray<64, SkGlyph const*, true>&, skia_private::STArray<64, SkPoint, true>&)
Line
Count
Source
208
1.09M
inline constexpr auto SkMakeZip(Ts&& ... ts) {
209
1.09M
    return SkMakeZipDetail::MakeZip(std::forward<Ts>(ts)...);
210
1.09M
}
auto SkMakeZip<SkSpan<SkGlyph const*>&, SkSpan<SkPoint const>&>(SkSpan<SkGlyph const*>&, SkSpan<SkPoint const>&)
Line
Count
Source
208
27.7k
inline constexpr auto SkMakeZip(Ts&& ... ts) {
209
27.7k
    return SkMakeZipDetail::MakeZip(std::forward<Ts>(ts)...);
210
27.7k
}
211
#endif //SkZip_DEFINED