/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef nsHyphenator_h__ #define nsHyphenator_h__ #include "base/shared_memory.h" #include "mozilla/UniquePtr.h" #include "mozilla/Variant.h" #include "nsCOMPtr.h" #include "nsString.h" #include "nsTArray.h" class nsIURI; struct HyphDic; struct CompiledData; namespace mozilla { template <> class DefaultDelete { public: void operator()(const HyphDic* ptr) const; }; template <> class DefaultDelete { public: void operator()(const CompiledData* ptr) const; }; } // namespace mozilla class nsHyphenator { public: nsHyphenator(nsIURI* aURI, bool aHyphenateCapitalized); NS_INLINE_DECL_REFCOUNTING(nsHyphenator) bool IsValid(); nsresult Hyphenate(const nsAString& aText, nsTArray& aHyphens); void CloneHandle(base::SharedMemoryHandle* aOutHandle, uint32_t* aOutSize); private: ~nsHyphenator() = default; void HyphenateWord(const nsAString& aString, uint32_t aStart, uint32_t aLimit, nsTArray& aHyphens); mozilla::Variant, // shmem block mozilla::UniquePtr // loaded by mapped_hyph > mDict; uint32_t mDictSize; // size of mDict data (not used if type is HyphDic) bool mHyphenateCapitalized; }; #endif // nsHyphenator_h__