michael@0: /* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ michael@0: /* This Source Code Form is subject to the terms of the Mozilla Public michael@0: * License, v. 2.0. If a copy of the MPL was not distributed with this michael@0: * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ michael@0: #ifndef nsCyrillicDetector_h__ michael@0: #define nsCyrillicDetector_h__ michael@0: michael@0: #include "nsCyrillicClass.h" michael@0: michael@0: michael@0: michael@0: michael@0: // {2002F781-3960-11d3-B3C3-00805F8A6670} michael@0: #define NS_RU_PROBDETECTOR_CID \ michael@0: { 0x2002f781, 0x3960, 0x11d3, { 0xb3, 0xc3, 0x0, 0x80, 0x5f, 0x8a, 0x66, 0x70 } } michael@0: michael@0: michael@0: // {2002F782-3960-11d3-B3C3-00805F8A6670} michael@0: #define NS_UK_PROBDETECTOR_CID \ michael@0: { 0x2002f782, 0x3960, 0x11d3, { 0xb3, 0xc3, 0x0, 0x80, 0x5f, 0x8a, 0x66, 0x70 } } michael@0: michael@0: // {2002F783-3960-11d3-B3C3-00805F8A6670} michael@0: #define NS_RU_STRING_PROBDETECTOR_CID \ michael@0: { 0x2002f783, 0x3960, 0x11d3, { 0xb3, 0xc3, 0x0, 0x80, 0x5f, 0x8a, 0x66, 0x70 } } michael@0: michael@0: // {2002F784-3960-11d3-B3C3-00805F8A6670} michael@0: #define NS_UK_STRING_PROBDETECTOR_CID \ michael@0: { 0x2002f784, 0x3960, 0x11d3, { 0xb3, 0xc3, 0x0, 0x80, 0x5f, 0x8a, 0x66, 0x70 } } michael@0: michael@0: static const uint8_t *gCyrillicCls[5] = michael@0: { michael@0: CP1251Map, michael@0: KOI8Map, michael@0: ISO88595Map, michael@0: MacCyrillicMap, michael@0: IBM866Map michael@0: }; michael@0: michael@0: static const char * gRussian[5] = { michael@0: "windows-1251", michael@0: "KOI8-R", michael@0: "ISO-8859-5", michael@0: "x-mac-cyrillic", michael@0: "IBM866" michael@0: }; michael@0: michael@0: static const char * gUkrainian[5] = { michael@0: "windows-1251", michael@0: "KOI8-U", michael@0: "ISO-8859-5", michael@0: "x-mac-cyrillic", michael@0: "IBM866" michael@0: }; michael@0: michael@0: #define NUM_CYR_CHARSET 5 michael@0: michael@0: class nsCyrillicDetector michael@0: { michael@0: public: michael@0: nsCyrillicDetector(uint8_t aItems, michael@0: const uint8_t ** aCyrillicClass, michael@0: const char **aCharsets) { michael@0: mItems = aItems; michael@0: mCyrillicClass = aCyrillicClass; michael@0: mCharsets = aCharsets; michael@0: for(unsigned i=0;i mObserver; michael@0: }; michael@0: michael@0: class nsCyrXPCOMStringDetector : michael@0: public nsCyrillicDetector, michael@0: public nsIStringCharsetDetector michael@0: { michael@0: public: michael@0: // nsISupports interface michael@0: NS_DECL_ISUPPORTS michael@0: nsCyrXPCOMStringDetector(uint8_t aItems, michael@0: const uint8_t ** aCyrillicClass, michael@0: const char **aCharsets); michael@0: virtual ~nsCyrXPCOMStringDetector(); michael@0: NS_IMETHOD DoIt(const char* aBuf, uint32_t aLen, michael@0: const char** oCharset, nsDetectionConfident &oConf); michael@0: protected: michael@0: virtual void Report(const char* aCharset); michael@0: private: michael@0: nsCOMPtr mObserver; michael@0: const char* mResult; michael@0: }; michael@0: michael@0: class nsRUProbDetector : public nsCyrXPCOMDetector michael@0: { michael@0: public: michael@0: nsRUProbDetector() michael@0: : nsCyrXPCOMDetector(5, gCyrillicCls, gRussian) {} michael@0: }; michael@0: michael@0: class nsRUStringProbDetector : public nsCyrXPCOMStringDetector michael@0: { michael@0: public: michael@0: nsRUStringProbDetector() michael@0: : nsCyrXPCOMStringDetector(5, gCyrillicCls, gRussian) {} michael@0: }; michael@0: michael@0: class nsUKProbDetector : public nsCyrXPCOMDetector michael@0: { michael@0: public: michael@0: nsUKProbDetector() michael@0: : nsCyrXPCOMDetector(5, gCyrillicCls, gUkrainian) {} michael@0: }; michael@0: michael@0: class nsUKStringProbDetector : public nsCyrXPCOMStringDetector michael@0: { michael@0: public: michael@0: nsUKStringProbDetector() michael@0: : nsCyrXPCOMStringDetector(5, gCyrillicCls, gUkrainian) {} michael@0: }; michael@0: michael@0: #endif