chromium/third_party/blink/renderer/platform/wtf/text/text_offset_map.h

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

#ifndef THIRD_PARTY_BLINK_RENDERER_PLATFORM_WTF_TEXT_TEXT_OFFSET_MAP_H_
#define THIRD_PARTY_BLINK_RENDERER_PLATFORM_WTF_TEXT_TEXT_OFFSET_MAP_H_

#include <unicode/edits.h>

#include "third_party/blink/renderer/platform/wtf/forward.h"
#include "third_party/blink/renderer/platform/wtf/vector.h"
#include "third_party/blink/renderer/platform/wtf/wtf_export.h"

namespace WTF {

// Represents a mapping of text offset when |CaseMap| changes the length of the
// input string. Similar to [icu::Edits], but tracks only when the length
// changes.
//
// For example, when a character is inserted at offset 3, this map has an entry
// {3, 4}, meaning the offset 3 of the source becomes 4 in the result. When a
// character is removed at offset 3, an entry {4, 3} is created.
//
// [icu::Edits]: http://icu-project.org/apiref/icu4c/classicu_1_1Edits.html
class WTF_EXPORT TextOffsetMap {};

WTF_EXPORT std::ostream& operator<<(std::ostream&, const TextOffsetMap::Entry&);
WTF_EXPORT std::ostream& operator<<(
    std::ostream& stream,
    const Vector<TextOffsetMap::Entry>& entries);

}  // namespace WTF

TextOffsetMap;

#endif  // THIRD_PARTY_BLINK_RENDERER_PLATFORM_WTF_TEXT_TEXT_OFFSET_MAP_H_