// Copyright 2019 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifdef UNSAFE_BUFFERS_BUILD // TODO(crbug.com/351564777): Remove this and convert code to safer constructs. #pragma allow_unsafe_buffers #endif #ifndef THIRD_PARTY_BLINK_RENDERER_PLATFORM_FONTS_UTF16_RAGEL_ITERATOR_H_ #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_FONTS_UTF16_RAGEL_ITERATOR_H_ #include <unicode/uchar.h> #include "base/check_op.h" #include "third_party/blink/renderer/platform/platform_export.h" #include "third_party/blink/renderer/platform/text/emoji_segmentation_category.h" #include "third_party/blink/renderer/platform/text/emoji_segmentation_category_inline_header.h" #include "third_party/blink/renderer/platform/wtf/allocator/allocator.h" #include "third_party/blink/renderer/platform/wtf/text/character_names.h" namespace blink { // UTF16RagelIterator is set up on top of a UTF-16 UChar* buffer iterating over // a Blink internal text string and as such is used as an adapter between Blink // strings and the Ragel-based emoji scanner. It supports forwarding and // reversing using arithmetic operators. Dereferencing the iterator means // retrieving a character class as defined in the Ragel grammar of // third-party/emoji-segmenter. The dereferenced character category is cached // since Ragel dereferences multiple times without moving the iterator's cursor. class PLATFORM_EXPORT UTF16RagelIterator { … }; } // namespace blink #endif // THIRD_PARTY_BLINK_RENDERER_PLATFORM_FONTS_UTF16_RAGEL_ITERATOR_H_