1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ 2 /* This Source Code Form is subject to the terms of the Mozilla Public 3 * License, v. 2.0. If a copy of the MPL was not distributed with this 4 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 5 6 #ifndef nsUnicodeNormalizer_h__ 7 #define nsUnicodeNormalizer_h__ 8 9 #include "nscore.h" 10 #include "nsISupports.h" 11 12 #include "nsIUnicodeNormalizer.h" 13 14 nsresult NS_NewUnicodeNormalizer(nsISupports** oResult); 15 16 17 class nsUnicodeNormalizer : public nsIUnicodeNormalizer { 18 public: 19 nsUnicodeNormalizer(); 20 21 NS_DECL_ISUPPORTS 22 23 NS_IMETHOD NormalizeUnicodeNFD( const nsAString& aSrc, nsAString& aDest) override; 24 NS_IMETHOD NormalizeUnicodeNFC( const nsAString& aSrc, nsAString& aDest) override; 25 NS_IMETHOD NormalizeUnicodeNFKD( const nsAString& aSrc, nsAString& aDest) override; 26 NS_IMETHOD NormalizeUnicodeNFKC( const nsAString& aSrc, nsAString& aDest) override; 27 28 #if !ENABLE_INTL_API 29 // Low-level access to the composition data needed for HarfBuzz callbacks; 30 // only required when ICU is not available in the build. 31 static bool Compose(uint32_t a, uint32_t b, uint32_t *ab); 32 static bool DecomposeNonRecursively(uint32_t comp, uint32_t *c1, uint32_t *c2); 33 #endif 34 35 private: 36 virtual ~nsUnicodeNormalizer(); 37 }; 38 39 #endif //nsUnicodeNormalizer_h__ 40 41