michael@0: /* -*- Mode: C++; tab-width: 2; 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: michael@0: #include "mozilla/ModuleUtils.h" michael@0: michael@0: #include "nsCOMPtr.h" michael@0: michael@0: #include "nspr.h" michael@0: #include "nsString.h" michael@0: #include "nsUniversalCharDetDll.h" michael@0: #include "nsISupports.h" michael@0: #include "nsICategoryManager.h" michael@0: #include "nsIComponentManager.h" michael@0: #include "nsIServiceManager.h" michael@0: #include "nsICharsetDetector.h" michael@0: #include "nsIStringCharsetDetector.h" michael@0: michael@0: #include "nsUniversalDetector.h" michael@0: #include "nsUdetXPCOMWrapper.h" michael@0: michael@0: michael@0: NS_GENERIC_FACTORY_CONSTRUCTOR(nsUniversalXPCOMDetector) michael@0: NS_GENERIC_FACTORY_CONSTRUCTOR(nsUniversalXPCOMStringDetector) michael@0: NS_GENERIC_FACTORY_CONSTRUCTOR(nsJAPSMDetector) michael@0: NS_GENERIC_FACTORY_CONSTRUCTOR(nsJAStringPSMDetector) michael@0: NS_GENERIC_FACTORY_CONSTRUCTOR(nsKOPSMDetector) michael@0: NS_GENERIC_FACTORY_CONSTRUCTOR(nsKOStringPSMDetector) michael@0: NS_GENERIC_FACTORY_CONSTRUCTOR(nsZHTWPSMDetector) michael@0: NS_GENERIC_FACTORY_CONSTRUCTOR(nsZHTWStringPSMDetector) michael@0: NS_GENERIC_FACTORY_CONSTRUCTOR(nsZHCNPSMDetector) michael@0: NS_GENERIC_FACTORY_CONSTRUCTOR(nsZHCNStringPSMDetector) michael@0: NS_GENERIC_FACTORY_CONSTRUCTOR(nsZHPSMDetector) michael@0: NS_GENERIC_FACTORY_CONSTRUCTOR(nsZHStringPSMDetector) michael@0: NS_GENERIC_FACTORY_CONSTRUCTOR(nsCJKPSMDetector) michael@0: NS_GENERIC_FACTORY_CONSTRUCTOR(nsCJKStringPSMDetector) michael@0: NS_DEFINE_NAMED_CID(NS_UNIVERSAL_DETECTOR_CID); michael@0: NS_DEFINE_NAMED_CID(NS_UNIVERSAL_STRING_DETECTOR_CID); michael@0: NS_DEFINE_NAMED_CID(NS_JA_PSMDETECTOR_CID); michael@0: NS_DEFINE_NAMED_CID(NS_JA_STRING_PSMDETECTOR_CID); michael@0: NS_DEFINE_NAMED_CID(NS_KO_PSMDETECTOR_CID); michael@0: NS_DEFINE_NAMED_CID(NS_KO_STRING_PSMDETECTOR_CID); michael@0: NS_DEFINE_NAMED_CID(NS_ZHTW_PSMDETECTOR_CID); michael@0: NS_DEFINE_NAMED_CID(NS_ZHTW_STRING_PSMDETECTOR_CID); michael@0: NS_DEFINE_NAMED_CID(NS_ZHCN_PSMDETECTOR_CID); michael@0: NS_DEFINE_NAMED_CID(NS_ZHCN_STRING_PSMDETECTOR_CID); michael@0: NS_DEFINE_NAMED_CID(NS_ZH_PSMDETECTOR_CID); michael@0: NS_DEFINE_NAMED_CID(NS_ZH_STRING_PSMDETECTOR_CID); michael@0: NS_DEFINE_NAMED_CID(NS_CJK_PSMDETECTOR_CID); michael@0: NS_DEFINE_NAMED_CID(NS_CJK_STRING_PSMDETECTOR_CID); michael@0: michael@0: static const mozilla::Module::CIDEntry kChardetCIDs[] = { michael@0: { &kNS_UNIVERSAL_DETECTOR_CID, false, nullptr, nsUniversalXPCOMDetectorConstructor }, michael@0: { &kNS_UNIVERSAL_STRING_DETECTOR_CID, false, nullptr, nsUniversalXPCOMStringDetectorConstructor }, michael@0: { &kNS_JA_PSMDETECTOR_CID, false, nullptr, nsJAPSMDetectorConstructor }, michael@0: { &kNS_JA_STRING_PSMDETECTOR_CID, false, nullptr, nsJAStringPSMDetectorConstructor }, michael@0: { &kNS_KO_PSMDETECTOR_CID, false, nullptr, nsKOPSMDetectorConstructor }, michael@0: { &kNS_KO_STRING_PSMDETECTOR_CID, false, nullptr, nsKOStringPSMDetectorConstructor }, michael@0: { &kNS_ZHTW_PSMDETECTOR_CID, false, nullptr, nsZHTWPSMDetectorConstructor }, michael@0: { &kNS_ZHTW_STRING_PSMDETECTOR_CID, false, nullptr, nsZHTWStringPSMDetectorConstructor }, michael@0: { &kNS_ZHCN_PSMDETECTOR_CID, false, nullptr, nsZHCNPSMDetectorConstructor }, michael@0: { &kNS_ZHCN_STRING_PSMDETECTOR_CID, false, nullptr, nsZHCNStringPSMDetectorConstructor }, michael@0: { &kNS_ZH_PSMDETECTOR_CID, false, nullptr, nsZHPSMDetectorConstructor }, michael@0: { &kNS_ZH_STRING_PSMDETECTOR_CID, false, nullptr, nsZHStringPSMDetectorConstructor }, michael@0: { &kNS_CJK_PSMDETECTOR_CID, false, nullptr, nsCJKPSMDetectorConstructor }, michael@0: { &kNS_CJK_STRING_PSMDETECTOR_CID, false, nullptr, nsCJKStringPSMDetectorConstructor }, michael@0: { nullptr } michael@0: }; michael@0: michael@0: static const mozilla::Module::ContractIDEntry kChardetContracts[] = { michael@0: { NS_CHARSET_DETECTOR_CONTRACTID_BASE "universal_charset_detector", &kNS_UNIVERSAL_DETECTOR_CID }, michael@0: { NS_STRCDETECTOR_CONTRACTID_BASE "universal_charset_detector", &kNS_UNIVERSAL_STRING_DETECTOR_CID }, michael@0: { NS_CHARSET_DETECTOR_CONTRACTID_BASE "ja_parallel_state_machine", &kNS_JA_PSMDETECTOR_CID }, michael@0: { NS_STRCDETECTOR_CONTRACTID_BASE "ja_parallel_state_machine", &kNS_JA_STRING_PSMDETECTOR_CID }, michael@0: { NS_CHARSET_DETECTOR_CONTRACTID_BASE "ko_parallel_state_machine", &kNS_KO_PSMDETECTOR_CID }, michael@0: { NS_STRCDETECTOR_CONTRACTID_BASE "ko_parallel_state_machine", &kNS_KO_STRING_PSMDETECTOR_CID }, michael@0: { NS_CHARSET_DETECTOR_CONTRACTID_BASE "zhtw_parallel_state_machine", &kNS_ZHTW_PSMDETECTOR_CID }, michael@0: { NS_STRCDETECTOR_CONTRACTID_BASE "zhtw_parallel_state_machine", &kNS_ZHTW_STRING_PSMDETECTOR_CID }, michael@0: { NS_CHARSET_DETECTOR_CONTRACTID_BASE "zhcn_parallel_state_machine", &kNS_ZHCN_PSMDETECTOR_CID }, michael@0: { NS_STRCDETECTOR_CONTRACTID_BASE "zhcn_parallel_state_machine", &kNS_ZHCN_STRING_PSMDETECTOR_CID }, michael@0: { NS_CHARSET_DETECTOR_CONTRACTID_BASE "zh_parallel_state_machine", &kNS_ZH_PSMDETECTOR_CID }, michael@0: { NS_STRCDETECTOR_CONTRACTID_BASE "zh_parallel_state_machine", &kNS_ZH_STRING_PSMDETECTOR_CID }, michael@0: { NS_CHARSET_DETECTOR_CONTRACTID_BASE "cjk_parallel_state_machine", &kNS_CJK_PSMDETECTOR_CID }, michael@0: { NS_STRCDETECTOR_CONTRACTID_BASE "cjk_parallel_state_machine", &kNS_CJK_STRING_PSMDETECTOR_CID }, michael@0: { nullptr } michael@0: }; michael@0: michael@0: static const mozilla::Module::CategoryEntry kChardetCategories[] = { michael@0: { NS_CHARSET_DETECTOR_CATEGORY, "universal_charset_detector", NS_CHARSET_DETECTOR_CONTRACTID_BASE "universal_charset_detector" }, michael@0: { NS_CHARSET_DETECTOR_CATEGORY, "ja_parallel_state_machine", NS_CHARSET_DETECTOR_CONTRACTID_BASE "ja_parallel_state_machine" }, michael@0: { NS_CHARSET_DETECTOR_CATEGORY, "ko_parallel_state_machine", NS_CHARSET_DETECTOR_CONTRACTID_BASE "ko_parallel_state_machine" }, michael@0: { NS_CHARSET_DETECTOR_CATEGORY, "zhtw_parallel_state_machine", NS_CHARSET_DETECTOR_CONTRACTID_BASE "zhtw_parallel_state_machine" }, michael@0: { NS_CHARSET_DETECTOR_CATEGORY, "zhcn_parallel_state_machine", NS_CHARSET_DETECTOR_CONTRACTID_BASE "zhcn_parallel_state_machine" }, michael@0: { NS_CHARSET_DETECTOR_CATEGORY, "zh_parallel_state_machine", NS_CHARSET_DETECTOR_CONTRACTID_BASE "zh_parallel_state_machine" }, michael@0: { NS_CHARSET_DETECTOR_CATEGORY, "cjk_parallel_state_machine", NS_CHARSET_DETECTOR_CONTRACTID_BASE "cjk_parallel_state_machine" }, michael@0: { nullptr } michael@0: }; michael@0: michael@0: static const mozilla::Module kChardetModule = { michael@0: mozilla::Module::kVersion, michael@0: kChardetCIDs, michael@0: kChardetContracts, michael@0: kChardetCategories michael@0: }; michael@0: michael@0: NSMODULE_DEFN(nsUniversalCharDetModule) = &kChardetModule;