7#include "core/fpdfdoc/cpdf_numbertree.h"
12#include "core/fpdfapi/parser/cpdf_array.h"
13#include "core/fpdfapi/parser/cpdf_dictionary.h"
20 if (limits_array && (num < limits_array->GetIntegerAt(0) ||
21 num > limits_array->GetIntegerAt(1))) {
26 for (size_t i = 0; i < numbers_array->size() / 2; i++) {
27 int index = numbers_array->GetIntegerAt(i * 2);
29 return numbers_array->GetDirectObjectAt(i * 2 + 1);
43 for (size_t i = 0; i < kids_array->size(); i++) {
62 if (num < limits_array->GetIntegerAt(0)) {
65 const int max_value = limits_array->GetIntegerAt(1);
66 if (num >= max_value) {
67 return CPDF_NumberTree::KeyValue(max_value,
68 FindNumberNode(node_dict, max_value));
74 for (size_t i = numbers_array->size() / 2; i > 0; --i) {
75 const size_t key_index = (i - 1) * 2;
76 const int key = numbers_array->GetIntegerAt(key_index);
78 const size_t value_index = key_index + 1;
80 key, numbers_array->GetDirectObjectAt(value_index));
91 for (size_t i = kids_array->size(); i > 0; --i) {
98 FindLowerBound(kid_dict.Get(), num);
99 if (result.has_value()) {
114 return FindNumberNode(root_.Get(), num);
119 return FindLowerBound(root_.Get(), num);
std::vector< RetainPtr< CPDF_Object > >::const_iterator const_iterator
std::map< ByteString, RetainPtr< CPDF_Object >, std::less<> > DictMap
CPDF_NumberTree(RetainPtr< const CPDF_Dictionary > root)
std::optional< KeyValue > GetLowerBound(int num) const
RetainPtr< const CPDF_Object > LookupValue(int num) const
KeyValue(KeyValue &&) noexcept
KeyValue & operator=(KeyValue &&) noexcept
KeyValue(int key, RetainPtr< const CPDF_Object > value)