Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
adapters.h
Go to the documentation of this file.
1// Copyright 2024 The PDFium Authors
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef CORE_FXCRT_CONTAINERS_ADAPTERS_H_
6#define CORE_FXCRT_CONTAINERS_ADAPTERS_H_
7
8#include <stddef.h>
9
10#include <iterator>
11#include <utility>
12
13namespace pdfium {
14
15namespace internal {
16
17// Internal adapter class for implementing Reversed()
18template <typename T>
20 public:
21 using Iterator = decltype(std::rbegin(std::declval<T&>()));
22
23 explicit ReversedAdapter(T& t) : t_(t) {}
24 ReversedAdapter(const ReversedAdapter& ra) : t_(ra.t_) {}
26
27 Iterator begin() const { return std::rbegin(t_); }
28 Iterator end() const { return std::rend(t_); }
29
30 private:
31 T& t_;
32};
33
34} // namespace internal
35
36// Reversed returns a container adapter usable in a range-based "for" statement
37// for iterating a reversible container in reverse order.
38//
39// Example:
40//
41// std::vector<int> v = ...;
42// for (int i : pdfium::Reversed(v)) {
43// // iterates through v from back to front
44// }
45template <typename T>
47 return internal::ReversedAdapter<T>(t);
48}
49
50} // namespace pdfium
51
52#endif // CORE_FXCRT_CONTAINERS_ADAPTERS_H_
#define DCHECK
Definition check.h:33
std::vector< RetainPtr< CPDF_Object > >::const_iterator const_iterator
Definition cpdf_array.h:29
std::map< ByteString, RetainPtr< CPDF_Object >, std::less<> > DictMap
void UpdateStream(size_t stream_index, fxcrt::ostringstream *buf)
size_t AddStream(fxcrt::ostringstream *buf)
CPDF_PageContentManager(CPDF_PageObjectHolder *page_obj_holder, CPDF_Document *document)
decltype(std::rbegin(std::declval< T & >())) Iterator
Definition adapters.h:21
ReversedAdapter & operator=(const ReversedAdapter &)=delete
ReversedAdapter(const ReversedAdapter &ra)
Definition adapters.h:24
internal::ReversedAdapter< T > Reversed(T &t)
Definition adapters.h:46
#define CHECK(cvref)