#include "core/fpdftext/cpdf_textpagefind.h"
#include <wchar.h>
#include <vector>
#include "core/fpdftext/cpdf_textpage.h"
#include "core/fxcrt/check.h"
#include "core/fxcrt/compiler_specific.h"
#include "core/fxcrt/fx_extension.h"
#include "core/fxcrt/fx_string.h"
#include "core/fxcrt/fx_system.h"
#include "core/fxcrt/fx_unicode.h"
#include "core/fxcrt/ptr_util.h"
#include "core/fxcrt/stl_util.h"
namespace {
constexpr wchar_t kNonBreakingSpace = …;
bool IsIgnoreSpaceCharacter(wchar_t curChar) { … }
bool IsMatchWholeWord(const WideString& csPageText,
size_t startPos,
size_t endPos) { … }
WideString GetStringCase(const WideString& wsOriginal, bool bMatchCase) { … }
std::optional<WideString> ExtractSubString(const wchar_t* lpszFullString,
int iSubString) { … }
std::vector<WideString> ExtractFindWhat(const WideString& findwhat) { … }
}
std::unique_ptr<CPDF_TextPageFind> CPDF_TextPageFind::Create(
const CPDF_TextPage* pTextPage,
const WideString& findwhat,
const Options& options,
std::optional<size_t> startPos) { … }
CPDF_TextPageFind::CPDF_TextPageFind(
const CPDF_TextPage* pTextPage,
const std::vector<WideString>& findwhat_array,
const Options& options,
std::optional<size_t> startPos)
: … { … }
CPDF_TextPageFind::~CPDF_TextPageFind() = default;
int CPDF_TextPageFind::GetCharIndex(int index) const { … }
bool CPDF_TextPageFind::FindFirst() { … }
bool CPDF_TextPageFind::FindNext() { … }
bool CPDF_TextPageFind::FindPrev() { … }
int CPDF_TextPageFind::GetCurOrder() const { … }
int CPDF_TextPageFind::GetMatchedCount() const { … }