/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 |