Lines Matching refs:Ts
23 template<typename... Ts>
25 using ReturnTuple = std::tuple<Ts&...>;
54 constexpr SkZip() : fPointers{nullify<Ts>...}, fSize{0} {} in SkZip()
56 constexpr SkZip(size_t size, Ts*... ts) in SkZip()
69 typename = std::enable_if<skstd::conjunction<CanConvertToConst<Us, Ts>...>::value>>
84 constexpr std::tuple<Ts*...> data() const { return fPointers; } in data()
103 constexpr SkZip(size_t n, const std::tuple<Ts*...>& pointers) in SkZip()
110 return indexDetail(i, std::make_index_sequence<sizeof...(Ts)>{}); in index()
118 std::tuple<Ts*...> pointersAt(size_t i) const { in pointersAt()
121 return pointersAtDetail(i, std::make_index_sequence<sizeof...(Ts)>{}); in pointersAt()
125 constexpr std::tuple<Ts*...> pointersAtDetail(size_t i, std::index_sequence<Is...>) const { in pointersAtDetail()
126 return std::tuple<Ts*...>{&(std::get<Is>(fPointers))[i]...}; in pointersAtDetail()
129 std::tuple<Ts*...> fPointers;
167 template<typename C, typename... Ts> struct PickOneSize { };
168 template <typename T, typename... Ts> struct PickOneSize<T*, Ts...> {
169 static constexpr size_t Size(T* t, Ts... ts) {
170 return PickOneSize<Ts...>::Size(std::forward<Ts>(ts)...);
173 template <typename T, typename... Ts, size_t N> struct PickOneSize<T(&)[N], Ts...> {
174 static constexpr size_t Size(T(&)[N], Ts...) { return N; }
176 template<typename T, typename... Ts> struct PickOneSize<SkSpan<T>, Ts...> {
177 static constexpr size_t Size(SkSpan<T> s, Ts...) { return s.size(); }
179 template<typename C, typename... Ts> struct PickOneSize<C&, Ts...> {
180 static constexpr size_t Size(C& c, Ts...) { return c.size(); }
184 template<typename... Ts>
185 static constexpr auto MakeZip(Ts&& ... ts) {
188 size_t size = PickOneSize<DecayPointerT<Ts>...>::Size(std::forward<Ts>(ts)...);
194 for (size_t s : {Span<Ts>::Size(std::forward<Ts>(ts))...}) {
203 return SkZip<ValueType<Ts>...>{size, Span<Ts>::Data(std::forward<Ts>(ts))...};
207 template<typename... Ts>
208 inline constexpr auto SkMakeZip(Ts&& ... ts) {
209 return SkMakeZipDetail::MakeZip(std::forward<Ts>(ts)...);