1*cdf0e10cSrcweir /*************************************************************************
2*cdf0e10cSrcweir  *
3*cdf0e10cSrcweir  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4*cdf0e10cSrcweir  *
5*cdf0e10cSrcweir  * Copyright 2000, 2010 Oracle and/or its affiliates.
6*cdf0e10cSrcweir  *
7*cdf0e10cSrcweir  * OpenOffice.org - a multi-platform office productivity suite
8*cdf0e10cSrcweir  *
9*cdf0e10cSrcweir  * This file is part of OpenOffice.org.
10*cdf0e10cSrcweir  *
11*cdf0e10cSrcweir  * OpenOffice.org is free software: you can redistribute it and/or modify
12*cdf0e10cSrcweir  * it under the terms of the GNU Lesser General Public License version 3
13*cdf0e10cSrcweir  * only, as published by the Free Software Foundation.
14*cdf0e10cSrcweir  *
15*cdf0e10cSrcweir  * OpenOffice.org is distributed in the hope that it will be useful,
16*cdf0e10cSrcweir  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17*cdf0e10cSrcweir  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18*cdf0e10cSrcweir  * GNU Lesser General Public License version 3 for more details
19*cdf0e10cSrcweir  * (a copy is included in the LICENSE file that accompanied this code).
20*cdf0e10cSrcweir  *
21*cdf0e10cSrcweir  * You should have received a copy of the GNU Lesser General Public License
22*cdf0e10cSrcweir  * version 3 along with OpenOffice.org.  If not, see
23*cdf0e10cSrcweir  * <http://www.openoffice.org/license.html>
24*cdf0e10cSrcweir  * for a copy of the LGPLv3 License.
25*cdf0e10cSrcweir  *
26*cdf0e10cSrcweir  ************************************************************************/
27*cdf0e10cSrcweir 
28*cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove
29*cdf0e10cSrcweir #include "precompiled_i18npool.hxx"
30*cdf0e10cSrcweir #include <com/sun/star/lang/XSingleServiceFactory.hpp>
31*cdf0e10cSrcweir #include <com/sun/star/lang/XMultiServiceFactory.hpp>
32*cdf0e10cSrcweir #include <com/sun/star/registry/XRegistryKey.hpp>
33*cdf0e10cSrcweir 
34*cdf0e10cSrcweir #include <cppuhelper/factory.hxx>
35*cdf0e10cSrcweir #include <cppuhelper/weak.hxx>
36*cdf0e10cSrcweir #include <osl/mutex.hxx>
37*cdf0e10cSrcweir 
38*cdf0e10cSrcweir #include <localedata.hxx>
39*cdf0e10cSrcweir #include <numberformatcode.hxx>
40*cdf0e10cSrcweir #include <nativenumbersupplier.hxx>
41*cdf0e10cSrcweir #include <defaultnumberingprovider.hxx>
42*cdf0e10cSrcweir #include <servicename.hxx>
43*cdf0e10cSrcweir 
44*cdf0e10cSrcweir #define TRANSLITERATION_ALL
45*cdf0e10cSrcweir #include <transliterationImpl.hxx>
46*cdf0e10cSrcweir #include <transliteration_body.hxx>
47*cdf0e10cSrcweir #include <transliteration_caseignore.hxx>
48*cdf0e10cSrcweir #include <transliteration_Ignore.hxx>
49*cdf0e10cSrcweir #include <transliteration_OneToOne.hxx>
50*cdf0e10cSrcweir #include <textToPronounce_zh.hxx>
51*cdf0e10cSrcweir #include <numtotext_cjk.hxx>
52*cdf0e10cSrcweir #include <numtochar.hxx>
53*cdf0e10cSrcweir #include <texttonum.hxx>
54*cdf0e10cSrcweir #include <chartonum.hxx>
55*cdf0e10cSrcweir 
56*cdf0e10cSrcweir #include <calendarImpl.hxx>
57*cdf0e10cSrcweir #include <calendar_gregorian.hxx>
58*cdf0e10cSrcweir #include <calendar_hijri.hxx>
59*cdf0e10cSrcweir #include <calendar_jewish.hxx>
60*cdf0e10cSrcweir 
61*cdf0e10cSrcweir #define BREAKITERATOR_ALL
62*cdf0e10cSrcweir #include <breakiteratorImpl.hxx>
63*cdf0e10cSrcweir #include <breakiterator_cjk.hxx>
64*cdf0e10cSrcweir #include <breakiterator_th.hxx>
65*cdf0e10cSrcweir #include <breakiterator_unicode.hxx>
66*cdf0e10cSrcweir 
67*cdf0e10cSrcweir #include <indexentrysupplier.hxx>
68*cdf0e10cSrcweir #include <indexentrysupplier_asian.hxx>
69*cdf0e10cSrcweir #include <indexentrysupplier_ja_phonetic.hxx>
70*cdf0e10cSrcweir #include <indexentrysupplier_common.hxx>
71*cdf0e10cSrcweir #include <indexentrysupplier_default.hxx>
72*cdf0e10cSrcweir 
73*cdf0e10cSrcweir #define CCLASS_ALL
74*cdf0e10cSrcweir #include <characterclassificationImpl.hxx>
75*cdf0e10cSrcweir #include <scripttypedetector.hxx>
76*cdf0e10cSrcweir #include <cclass_unicode.hxx>
77*cdf0e10cSrcweir 
78*cdf0e10cSrcweir #define COLLATOR_ALL
79*cdf0e10cSrcweir #include <collatorImpl.hxx>
80*cdf0e10cSrcweir #include <chaptercollator.hxx>
81*cdf0e10cSrcweir #include <collator_unicode.hxx>
82*cdf0e10cSrcweir 
83*cdf0e10cSrcweir #include <inputsequencechecker.hxx>
84*cdf0e10cSrcweir #include <inputsequencechecker_th.hxx>
85*cdf0e10cSrcweir #include <inputsequencechecker_hi.hxx>
86*cdf0e10cSrcweir 
87*cdf0e10cSrcweir #include <textconversionImpl.hxx>
88*cdf0e10cSrcweir #include <textconversion.hxx>
89*cdf0e10cSrcweir 
90*cdf0e10cSrcweir #include <ordinalsuffix.hxx>
91*cdf0e10cSrcweir 
92*cdf0e10cSrcweir #define IMPL_CREATEINSTANCE( ImplName ) \
93*cdf0e10cSrcweir     ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >   \
94*cdf0e10cSrcweir         SAL_CALL ImplName##_CreateInstance(                                 \
95*cdf0e10cSrcweir             const ::com::sun::star::uno::Reference<                         \
96*cdf0e10cSrcweir                     ::com::sun::star::lang::XMultiServiceFactory >& )       \
97*cdf0e10cSrcweir {                                                                           \
98*cdf0e10cSrcweir     return ::com::sun::star::uno::Reference <                               \
99*cdf0e10cSrcweir             ::com::sun::star::uno::XInterface >( ( ::cppu::OWeakObject* )   \
100*cdf0e10cSrcweir                                     new ImplName );                         \
101*cdf0e10cSrcweir }
102*cdf0e10cSrcweir 
103*cdf0e10cSrcweir #define IMPL_CREATEINSTANCE_MSF( ImplName ) \
104*cdf0e10cSrcweir     ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >   \
105*cdf0e10cSrcweir         SAL_CALL ImplName##_CreateInstance(                                 \
106*cdf0e10cSrcweir             const ::com::sun::star::uno::Reference<                         \
107*cdf0e10cSrcweir                     ::com::sun::star::lang::XMultiServiceFactory >& rxMSF ) \
108*cdf0e10cSrcweir {                                                                           \
109*cdf0e10cSrcweir     return ::com::sun::star::uno::Reference <                               \
110*cdf0e10cSrcweir             ::com::sun::star::uno::XInterface >( ( ::cppu::OWeakObject* )   \
111*cdf0e10cSrcweir                                     new ImplName( rxMSF ) );                \
112*cdf0e10cSrcweir }
113*cdf0e10cSrcweir 
114*cdf0e10cSrcweir typedef ::com::sun::star::uno::Reference<
115*cdf0e10cSrcweir         ::com::sun::star::uno::XInterface > (SAL_CALL *FN_CreateInstance)(
116*cdf0e10cSrcweir             const ::com::sun::star::uno::Reference<
117*cdf0e10cSrcweir                 ::com::sun::star::lang::XMultiServiceFactory >& );
118*cdf0e10cSrcweir 
119*cdf0e10cSrcweir #define IMPL_TRANSLITERATION_ITEM( implName ) \
120*cdf0e10cSrcweir     {       TRLT_SERVICELNAME_L10N, \
121*cdf0e10cSrcweir         TRLT_IMPLNAME_PREFIX  #implName, \
122*cdf0e10cSrcweir         &implName##_CreateInstance }
123*cdf0e10cSrcweir 
124*cdf0e10cSrcweir // -------------------------------------------------------------------------------------
125*cdf0e10cSrcweir 
126*cdf0e10cSrcweir using namespace ::com::sun::star::i18n;
127*cdf0e10cSrcweir 
128*cdf0e10cSrcweir IMPL_CREATEINSTANCE_MSF( NumberFormatCodeMapper )
129*cdf0e10cSrcweir IMPL_CREATEINSTANCE( NativeNumberSupplier )
130*cdf0e10cSrcweir IMPL_CREATEINSTANCE( LocaleData )
131*cdf0e10cSrcweir IMPL_CREATEINSTANCE_MSF( DefaultNumberingProvider )
132*cdf0e10cSrcweir IMPL_CREATEINSTANCE_MSF( IndexEntrySupplier )
133*cdf0e10cSrcweir IMPL_CREATEINSTANCE_MSF( IndexEntrySupplier_asian )
134*cdf0e10cSrcweir IMPL_CREATEINSTANCE_MSF( IndexEntrySupplier_ja_phonetic_alphanumeric_first_by_syllable )
135*cdf0e10cSrcweir IMPL_CREATEINSTANCE_MSF( IndexEntrySupplier_ja_phonetic_alphanumeric_first_by_consonant )
136*cdf0e10cSrcweir IMPL_CREATEINSTANCE_MSF( IndexEntrySupplier_ja_phonetic_alphanumeric_last_by_syllable )
137*cdf0e10cSrcweir IMPL_CREATEINSTANCE_MSF( IndexEntrySupplier_ja_phonetic_alphanumeric_last_by_consonant )
138*cdf0e10cSrcweir IMPL_CREATEINSTANCE_MSF( IndexEntrySupplier_Unicode )
139*cdf0e10cSrcweir IMPL_CREATEINSTANCE_MSF( CalendarImpl )
140*cdf0e10cSrcweir IMPL_CREATEINSTANCE( Calendar_gregorian )
141*cdf0e10cSrcweir IMPL_CREATEINSTANCE( Calendar_hanja )
142*cdf0e10cSrcweir IMPL_CREATEINSTANCE( Calendar_gengou )
143*cdf0e10cSrcweir IMPL_CREATEINSTANCE( Calendar_ROC )
144*cdf0e10cSrcweir IMPL_CREATEINSTANCE( Calendar_hijri )
145*cdf0e10cSrcweir IMPL_CREATEINSTANCE( Calendar_jewish )
146*cdf0e10cSrcweir IMPL_CREATEINSTANCE( Calendar_buddhist )
147*cdf0e10cSrcweir IMPL_CREATEINSTANCE_MSF( BreakIteratorImpl )
148*cdf0e10cSrcweir IMPL_CREATEINSTANCE( BreakIterator_Unicode )
149*cdf0e10cSrcweir IMPL_CREATEINSTANCE( BreakIterator_ja )
150*cdf0e10cSrcweir IMPL_CREATEINSTANCE( BreakIterator_zh )
151*cdf0e10cSrcweir IMPL_CREATEINSTANCE( BreakIterator_zh_TW )
152*cdf0e10cSrcweir IMPL_CREATEINSTANCE( BreakIterator_ko )
153*cdf0e10cSrcweir IMPL_CREATEINSTANCE( BreakIterator_th )
154*cdf0e10cSrcweir IMPL_CREATEINSTANCE_MSF( ChapterCollator )
155*cdf0e10cSrcweir IMPL_CREATEINSTANCE_MSF( CollatorImpl )
156*cdf0e10cSrcweir IMPL_CREATEINSTANCE( Collator_Unicode )
157*cdf0e10cSrcweir 
158*cdf0e10cSrcweir IMPL_CREATEINSTANCE_MSF( CharacterClassificationImpl )
159*cdf0e10cSrcweir IMPL_CREATEINSTANCE_MSF( cclass_Unicode )
160*cdf0e10cSrcweir IMPL_CREATEINSTANCE_MSF( TransliterationImpl )
161*cdf0e10cSrcweir IMPL_CREATEINSTANCE( ScriptTypeDetector )
162*cdf0e10cSrcweir 
163*cdf0e10cSrcweir IMPL_CREATEINSTANCE_MSF( InputSequenceCheckerImpl )
164*cdf0e10cSrcweir IMPL_CREATEINSTANCE( InputSequenceChecker_th )
165*cdf0e10cSrcweir IMPL_CREATEINSTANCE( InputSequenceChecker_hi )
166*cdf0e10cSrcweir 
167*cdf0e10cSrcweir IMPL_CREATEINSTANCE_MSF( TextConversionImpl )
168*cdf0e10cSrcweir IMPL_CREATEINSTANCE_MSF( TextConversion_ko )
169*cdf0e10cSrcweir IMPL_CREATEINSTANCE_MSF( TextConversion_zh )
170*cdf0e10cSrcweir 
171*cdf0e10cSrcweir IMPL_CREATEINSTANCE( Transliteration_u2l )
172*cdf0e10cSrcweir IMPL_CREATEINSTANCE( Transliteration_l2u )
173*cdf0e10cSrcweir IMPL_CREATEINSTANCE( Transliteration_sentencecase )
174*cdf0e10cSrcweir IMPL_CREATEINSTANCE( Transliteration_titlecase )
175*cdf0e10cSrcweir IMPL_CREATEINSTANCE( Transliteration_togglecase )
176*cdf0e10cSrcweir IMPL_CREATEINSTANCE( Transliteration_caseignore )
177*cdf0e10cSrcweir IMPL_CREATEINSTANCE( hiraganaToKatakana )
178*cdf0e10cSrcweir IMPL_CREATEINSTANCE( katakanaToHiragana )
179*cdf0e10cSrcweir IMPL_CREATEINSTANCE( ignoreKana )
180*cdf0e10cSrcweir IMPL_CREATEINSTANCE( fullwidthToHalfwidth )
181*cdf0e10cSrcweir IMPL_CREATEINSTANCE( halfwidthToFullwidth )
182*cdf0e10cSrcweir IMPL_CREATEINSTANCE( ignoreWidth )
183*cdf0e10cSrcweir 
184*cdf0e10cSrcweir IMPL_CREATEINSTANCE( smallToLarge_ja_JP)
185*cdf0e10cSrcweir IMPL_CREATEINSTANCE( largeToSmall_ja_JP)
186*cdf0e10cSrcweir IMPL_CREATEINSTANCE( ignoreTraditionalKanji_ja_JP)
187*cdf0e10cSrcweir IMPL_CREATEINSTANCE( ignoreTraditionalKana_ja_JP)
188*cdf0e10cSrcweir IMPL_CREATEINSTANCE( ignoreMinusSign_ja_JP)
189*cdf0e10cSrcweir IMPL_CREATEINSTANCE( ignoreIterationMark_ja_JP)
190*cdf0e10cSrcweir IMPL_CREATEINSTANCE( ignoreSeparator_ja_JP)
191*cdf0e10cSrcweir IMPL_CREATEINSTANCE( ignoreZiZu_ja_JP)
192*cdf0e10cSrcweir IMPL_CREATEINSTANCE( ignoreBaFa_ja_JP)
193*cdf0e10cSrcweir IMPL_CREATEINSTANCE( ignoreTiJi_ja_JP)
194*cdf0e10cSrcweir IMPL_CREATEINSTANCE( ignoreHyuByu_ja_JP)
195*cdf0e10cSrcweir IMPL_CREATEINSTANCE( ignoreSeZe_ja_JP)
196*cdf0e10cSrcweir IMPL_CREATEINSTANCE( ignoreIandEfollowedByYa_ja_JP)
197*cdf0e10cSrcweir IMPL_CREATEINSTANCE( ignoreKiKuFollowedBySa_ja_JP)
198*cdf0e10cSrcweir IMPL_CREATEINSTANCE( ignoreSize_ja_JP)
199*cdf0e10cSrcweir IMPL_CREATEINSTANCE( ignoreProlongedSoundMark_ja_JP)
200*cdf0e10cSrcweir IMPL_CREATEINSTANCE( ignoreMiddleDot_ja_JP)
201*cdf0e10cSrcweir IMPL_CREATEINSTANCE( ignoreSpace_ja_JP)
202*cdf0e10cSrcweir 
203*cdf0e10cSrcweir IMPL_CREATEINSTANCE( TextToChuyin_zh_TW )
204*cdf0e10cSrcweir IMPL_CREATEINSTANCE( TextToPinyin_zh_CN )
205*cdf0e10cSrcweir 
206*cdf0e10cSrcweir IMPL_CREATEINSTANCE( NumToCharLower_zh_CN )
207*cdf0e10cSrcweir IMPL_CREATEINSTANCE( NumToCharUpper_zh_CN )
208*cdf0e10cSrcweir IMPL_CREATEINSTANCE( NumToCharLower_zh_TW )
209*cdf0e10cSrcweir IMPL_CREATEINSTANCE( NumToCharUpper_zh_TW )
210*cdf0e10cSrcweir IMPL_CREATEINSTANCE( NumToCharHalfwidth )
211*cdf0e10cSrcweir IMPL_CREATEINSTANCE( NumToCharFullwidth )
212*cdf0e10cSrcweir IMPL_CREATEINSTANCE( NumToCharKanjiShort_ja_JP )
213*cdf0e10cSrcweir IMPL_CREATEINSTANCE( NumToCharKanjiTraditional_ja_JP )
214*cdf0e10cSrcweir IMPL_CREATEINSTANCE( NumToCharHangul_ko )
215*cdf0e10cSrcweir IMPL_CREATEINSTANCE( NumToCharLower_ko )
216*cdf0e10cSrcweir IMPL_CREATEINSTANCE( NumToCharUpper_ko )
217*cdf0e10cSrcweir IMPL_CREATEINSTANCE( NumToCharIndic_ar )
218*cdf0e10cSrcweir IMPL_CREATEINSTANCE( NumToCharEastIndic_ar )
219*cdf0e10cSrcweir IMPL_CREATEINSTANCE( NumToCharIndic_hi )
220*cdf0e10cSrcweir IMPL_CREATEINSTANCE( NumToChar_th )
221*cdf0e10cSrcweir 
222*cdf0e10cSrcweir IMPL_CREATEINSTANCE( CharToNumLower_zh_CN )
223*cdf0e10cSrcweir IMPL_CREATEINSTANCE( CharToNumUpper_zh_CN )
224*cdf0e10cSrcweir IMPL_CREATEINSTANCE( CharToNumLower_zh_TW )
225*cdf0e10cSrcweir IMPL_CREATEINSTANCE( CharToNumUpper_zh_TW )
226*cdf0e10cSrcweir IMPL_CREATEINSTANCE( CharToNumFullwidth )
227*cdf0e10cSrcweir IMPL_CREATEINSTANCE( CharToNumKanjiShort_ja_JP )
228*cdf0e10cSrcweir IMPL_CREATEINSTANCE( CharToNumKanjiTraditional_ja_JP )
229*cdf0e10cSrcweir IMPL_CREATEINSTANCE( CharToNumHangul_ko )
230*cdf0e10cSrcweir IMPL_CREATEINSTANCE( CharToNumLower_ko )
231*cdf0e10cSrcweir IMPL_CREATEINSTANCE( CharToNumUpper_ko )
232*cdf0e10cSrcweir IMPL_CREATEINSTANCE( CharToNumIndic_ar )
233*cdf0e10cSrcweir IMPL_CREATEINSTANCE( CharToNumEastIndic_ar )
234*cdf0e10cSrcweir IMPL_CREATEINSTANCE( CharToNumIndic_hi )
235*cdf0e10cSrcweir IMPL_CREATEINSTANCE( CharToNum_th )
236*cdf0e10cSrcweir 
237*cdf0e10cSrcweir IMPL_CREATEINSTANCE( NumToTextLower_zh_CN )
238*cdf0e10cSrcweir IMPL_CREATEINSTANCE( NumToTextUpper_zh_CN )
239*cdf0e10cSrcweir IMPL_CREATEINSTANCE( NumToTextLower_zh_TW )
240*cdf0e10cSrcweir IMPL_CREATEINSTANCE( NumToTextUpper_zh_TW )
241*cdf0e10cSrcweir IMPL_CREATEINSTANCE( NumToTextFullwidth_zh_CN )
242*cdf0e10cSrcweir IMPL_CREATEINSTANCE( NumToTextFullwidth_zh_TW )
243*cdf0e10cSrcweir IMPL_CREATEINSTANCE( NumToTextFullwidth_ja_JP )
244*cdf0e10cSrcweir IMPL_CREATEINSTANCE( NumToTextFullwidth_ko )
245*cdf0e10cSrcweir IMPL_CREATEINSTANCE( NumToTextKanjiLongModern_ja_JP )
246*cdf0e10cSrcweir IMPL_CREATEINSTANCE( NumToTextKanjiLongTraditional_ja_JP )
247*cdf0e10cSrcweir IMPL_CREATEINSTANCE( NumToTextKanjiShortModern_ja_JP )
248*cdf0e10cSrcweir IMPL_CREATEINSTANCE( NumToTextKanjiShortTraditional_ja_JP )
249*cdf0e10cSrcweir IMPL_CREATEINSTANCE( NumToTextFormalHangul_ko )
250*cdf0e10cSrcweir IMPL_CREATEINSTANCE( NumToTextFormalLower_ko )
251*cdf0e10cSrcweir IMPL_CREATEINSTANCE( NumToTextFormalUpper_ko )
252*cdf0e10cSrcweir IMPL_CREATEINSTANCE( NumToTextInformalHangul_ko )
253*cdf0e10cSrcweir IMPL_CREATEINSTANCE( NumToTextInformalUpper_ko )
254*cdf0e10cSrcweir IMPL_CREATEINSTANCE( NumToTextInformalLower_ko )
255*cdf0e10cSrcweir 
256*cdf0e10cSrcweir IMPL_CREATEINSTANCE( TextToNumLower_zh_CN )
257*cdf0e10cSrcweir IMPL_CREATEINSTANCE( TextToNumUpper_zh_CN )
258*cdf0e10cSrcweir IMPL_CREATEINSTANCE( TextToNumLower_zh_TW )
259*cdf0e10cSrcweir IMPL_CREATEINSTANCE( TextToNumUpper_zh_TW )
260*cdf0e10cSrcweir IMPL_CREATEINSTANCE( TextToNumKanjiLongModern_ja_JP )
261*cdf0e10cSrcweir IMPL_CREATEINSTANCE( TextToNumKanjiLongTraditional_ja_JP )
262*cdf0e10cSrcweir IMPL_CREATEINSTANCE( TextToNumFormalHangul_ko )
263*cdf0e10cSrcweir IMPL_CREATEINSTANCE( TextToNumFormalLower_ko )
264*cdf0e10cSrcweir IMPL_CREATEINSTANCE( TextToNumFormalUpper_ko )
265*cdf0e10cSrcweir IMPL_CREATEINSTANCE( TextToNumInformalHangul_ko )
266*cdf0e10cSrcweir IMPL_CREATEINSTANCE( TextToNumInformalUpper_ko )
267*cdf0e10cSrcweir IMPL_CREATEINSTANCE( TextToNumInformalLower_ko )
268*cdf0e10cSrcweir 
269*cdf0e10cSrcweir IMPL_CREATEINSTANCE( NumToTextDate_zh )
270*cdf0e10cSrcweir IMPL_CREATEINSTANCE( NumToTextAIUFullWidth_ja_JP )
271*cdf0e10cSrcweir IMPL_CREATEINSTANCE( NumToTextAIUHalfWidth_ja_JP )
272*cdf0e10cSrcweir IMPL_CREATEINSTANCE( NumToTextIROHAFullWidth_ja_JP )
273*cdf0e10cSrcweir IMPL_CREATEINSTANCE( NumToTextIROHAHalfWidth_ja_JP )
274*cdf0e10cSrcweir IMPL_CREATEINSTANCE( NumToTextCircledNumber )
275*cdf0e10cSrcweir IMPL_CREATEINSTANCE( NumToTextHangulJamo_ko )
276*cdf0e10cSrcweir IMPL_CREATEINSTANCE( NumToTextHangulSyllable_ko )
277*cdf0e10cSrcweir IMPL_CREATEINSTANCE( NumToTextHangulCircledJamo_ko )
278*cdf0e10cSrcweir IMPL_CREATEINSTANCE( NumToTextHangulCircledSyllable_ko )
279*cdf0e10cSrcweir IMPL_CREATEINSTANCE( NumToTextTianGan_zh )
280*cdf0e10cSrcweir IMPL_CREATEINSTANCE( NumToTextDiZi_zh )
281*cdf0e10cSrcweir 
282*cdf0e10cSrcweir IMPL_CREATEINSTANCE( fullwidthKatakanaToHalfwidthKatakana )
283*cdf0e10cSrcweir IMPL_CREATEINSTANCE( halfwidthKatakanaToFullwidthKatakana )
284*cdf0e10cSrcweir IMPL_CREATEINSTANCE( fullwidthToHalfwidthLikeASC )
285*cdf0e10cSrcweir IMPL_CREATEINSTANCE( halfwidthToFullwidthLikeJIS )
286*cdf0e10cSrcweir 
287*cdf0e10cSrcweir IMPL_CREATEINSTANCE_MSF( OrdinalSuffix )
288*cdf0e10cSrcweir 
289*cdf0e10cSrcweir static const struct InstancesArray {
290*cdf0e10cSrcweir         const sal_Char* pServiceNm;
291*cdf0e10cSrcweir         const sal_Char* pImplementationNm;
292*cdf0e10cSrcweir         FN_CreateInstance pFn;
293*cdf0e10cSrcweir } aInstances[] = {
294*cdf0e10cSrcweir     {   "com.sun.star.i18n.LocaleData",
295*cdf0e10cSrcweir         "com.sun.star.i18n.LocaleData",
296*cdf0e10cSrcweir         & LocaleData_CreateInstance },
297*cdf0e10cSrcweir     {   "com.sun.star.i18n.NumberFormatMapper",
298*cdf0e10cSrcweir         "com.sun.star.i18n.NumberFormatCodeMapper",
299*cdf0e10cSrcweir         & NumberFormatCodeMapper_CreateInstance },
300*cdf0e10cSrcweir     {   "com.sun.star.i18n.NativeNumberSupplier",
301*cdf0e10cSrcweir         "com.sun.star.i18n.NativeNumberSupplier",
302*cdf0e10cSrcweir         & NativeNumberSupplier_CreateInstance },
303*cdf0e10cSrcweir     {   "com.sun.star.text.DefaultNumberingProvider",
304*cdf0e10cSrcweir         "com.sun.star.text.DefaultNumberingProvider",
305*cdf0e10cSrcweir         &DefaultNumberingProvider_CreateInstance },
306*cdf0e10cSrcweir     {   "com.sun.star.i18n.IndexEntrySupplier",
307*cdf0e10cSrcweir         "com.sun.star.i18n.IndexEntrySupplier",
308*cdf0e10cSrcweir         &IndexEntrySupplier_CreateInstance },
309*cdf0e10cSrcweir     {   "com.sun.star.i18n.IndexEntrySupplier_asian",
310*cdf0e10cSrcweir         "com.sun.star.i18n.IndexEntrySupplier_asian",
311*cdf0e10cSrcweir         &IndexEntrySupplier_asian_CreateInstance },
312*cdf0e10cSrcweir     {   "com.sun.star.i18n.IndexEntrySupplier_ja_phonetic (alphanumeric first)",
313*cdf0e10cSrcweir         "com.sun.star.i18n.IndexEntrySupplier_ja_phonetic (alphanumeric first)",
314*cdf0e10cSrcweir         &IndexEntrySupplier_ja_phonetic_alphanumeric_first_by_syllable_CreateInstance },
315*cdf0e10cSrcweir     {   "com.sun.star.i18n.IndexEntrySupplier_ja_phonetic (alphanumeric last)",
316*cdf0e10cSrcweir         "com.sun.star.i18n.IndexEntrySupplier_ja_phonetic (alphanumeric last)",
317*cdf0e10cSrcweir         &IndexEntrySupplier_ja_phonetic_alphanumeric_last_by_syllable_CreateInstance },
318*cdf0e10cSrcweir     {   "com.sun.star.i18n.IndexEntrySupplier_ja_phonetic (alphanumeric first) (grouped by syllable)",
319*cdf0e10cSrcweir         "com.sun.star.i18n.IndexEntrySupplier_ja_phonetic (alphanumeric first) (grouped by syllable)",
320*cdf0e10cSrcweir         &IndexEntrySupplier_ja_phonetic_alphanumeric_first_by_syllable_CreateInstance },
321*cdf0e10cSrcweir     {   "com.sun.star.i18n.IndexEntrySupplier_ja_phonetic (alphanumeric first) (grouped by consonant)",
322*cdf0e10cSrcweir         "com.sun.star.i18n.IndexEntrySupplier_ja_phonetic (alphanumeric first) (grouped by consonant)",
323*cdf0e10cSrcweir         &IndexEntrySupplier_ja_phonetic_alphanumeric_first_by_consonant_CreateInstance },
324*cdf0e10cSrcweir     {   "com.sun.star.i18n.IndexEntrySupplier_ja_phonetic (alphanumeric last) (grouped by syllable)",
325*cdf0e10cSrcweir         "com.sun.star.i18n.IndexEntrySupplier_ja_phonetic (alphanumeric last) (grouped by syllable)",
326*cdf0e10cSrcweir         &IndexEntrySupplier_ja_phonetic_alphanumeric_last_by_syllable_CreateInstance },
327*cdf0e10cSrcweir     {   "com.sun.star.i18n.IndexEntrySupplier_ja_phonetic (alphanumeric last) (grouped by consonant)",
328*cdf0e10cSrcweir         "com.sun.star.i18n.IndexEntrySupplier_ja_phonetic (alphanumeric last) (grouped by consonant)",
329*cdf0e10cSrcweir         &IndexEntrySupplier_ja_phonetic_alphanumeric_last_by_consonant_CreateInstance },
330*cdf0e10cSrcweir     {       "com.sun.star.i18n.IndexEntrySupplier_Unicode",
331*cdf0e10cSrcweir         "com.sun.star.i18n.IndexEntrySupplier_Unicode",
332*cdf0e10cSrcweir         &IndexEntrySupplier_Unicode_CreateInstance },
333*cdf0e10cSrcweir     {   "com.sun.star.i18n.LocaleCalendar",
334*cdf0e10cSrcweir         "com.sun.star.i18n.CalendarImpl",
335*cdf0e10cSrcweir         &CalendarImpl_CreateInstance },
336*cdf0e10cSrcweir     {   "com.sun.star.i18n.Calendar_gregorian",
337*cdf0e10cSrcweir         "com.sun.star.i18n.Calendar_gregorian",
338*cdf0e10cSrcweir         &Calendar_gregorian_CreateInstance },
339*cdf0e10cSrcweir     {   "com.sun.star.i18n.Calendar_gengou",
340*cdf0e10cSrcweir         "com.sun.star.i18n.Calendar_gengou",
341*cdf0e10cSrcweir         &Calendar_gengou_CreateInstance },
342*cdf0e10cSrcweir     {   "com.sun.star.i18n.Calendar_ROC",
343*cdf0e10cSrcweir         "com.sun.star.i18n.Calendar_ROC",
344*cdf0e10cSrcweir         &Calendar_ROC_CreateInstance },
345*cdf0e10cSrcweir     {   "com.sun.star.i18n.Calendar_hanja_yoil",
346*cdf0e10cSrcweir         "com.sun.star.i18n.Calendar_hanja_yoil",
347*cdf0e10cSrcweir         &Calendar_hanja_CreateInstance },
348*cdf0e10cSrcweir     {   "com.sun.star.i18n.Calendar_hanja",
349*cdf0e10cSrcweir         "com.sun.star.i18n.Calendar_hanja",
350*cdf0e10cSrcweir         &Calendar_hanja_CreateInstance },
351*cdf0e10cSrcweir     {   "com.sun.star.i18n.Calendar_hijri",
352*cdf0e10cSrcweir         "com.sun.star.i18n.Calendar_hijri",
353*cdf0e10cSrcweir         &Calendar_hijri_CreateInstance },
354*cdf0e10cSrcweir     {   "com.sun.star.i18n.Calendar_jewish",
355*cdf0e10cSrcweir         "com.sun.star.i18n.Calendar_jewish",
356*cdf0e10cSrcweir         &Calendar_jewish_CreateInstance },
357*cdf0e10cSrcweir     {   "com.sun.star.i18n.Calendar_buddhist",
358*cdf0e10cSrcweir         "com.sun.star.i18n.Calendar_buddhist",
359*cdf0e10cSrcweir         &Calendar_buddhist_CreateInstance },
360*cdf0e10cSrcweir     {   "com.sun.star.i18n.BreakIterator",
361*cdf0e10cSrcweir         "com.sun.star.i18n.BreakIterator",
362*cdf0e10cSrcweir         &BreakIteratorImpl_CreateInstance },
363*cdf0e10cSrcweir     {   "com.sun.star.i18n.BreakIterator_Unicode",
364*cdf0e10cSrcweir         "com.sun.star.i18n.BreakIterator_Unicode",
365*cdf0e10cSrcweir         &BreakIterator_Unicode_CreateInstance },
366*cdf0e10cSrcweir     {   "com.sun.star.i18n.BreakIterator_ja",
367*cdf0e10cSrcweir         "com.sun.star.i18n.BreakIterator_ja",
368*cdf0e10cSrcweir         &BreakIterator_ja_CreateInstance },
369*cdf0e10cSrcweir     {   "com.sun.star.i18n.BreakIterator_zh",
370*cdf0e10cSrcweir         "com.sun.star.i18n.BreakIterator_zh",
371*cdf0e10cSrcweir         &BreakIterator_zh_CreateInstance },
372*cdf0e10cSrcweir     {   "com.sun.star.i18n.BreakIterator_zh_TW",
373*cdf0e10cSrcweir         "com.sun.star.i18n.BreakIterator_zh_TW",
374*cdf0e10cSrcweir         &BreakIterator_zh_TW_CreateInstance },
375*cdf0e10cSrcweir     {   "com.sun.star.i18n.BreakIterator_ko",
376*cdf0e10cSrcweir         "com.sun.star.i18n.BreakIterator_ko",
377*cdf0e10cSrcweir         &BreakIterator_ko_CreateInstance },
378*cdf0e10cSrcweir     {   "com.sun.star.i18n.BreakIterator_th",
379*cdf0e10cSrcweir         "com.sun.star.i18n.BreakIterator_th",
380*cdf0e10cSrcweir         &BreakIterator_th_CreateInstance },
381*cdf0e10cSrcweir     {   "com.sun.star.i18n.Collator",
382*cdf0e10cSrcweir         "com.sun.star.i18n.Collator",
383*cdf0e10cSrcweir         &CollatorImpl_CreateInstance },
384*cdf0e10cSrcweir     {   "com.sun.star.i18n.ChapterCollator",
385*cdf0e10cSrcweir         "com.sun.star.i18n.ChapterCollator",
386*cdf0e10cSrcweir         &ChapterCollator_CreateInstance },
387*cdf0e10cSrcweir     {   "com.sun.star.i18n.Collator_Unicode",
388*cdf0e10cSrcweir         "com.sun.star.i18n.Collator_Unicode",
389*cdf0e10cSrcweir         &Collator_Unicode_CreateInstance },
390*cdf0e10cSrcweir     {   "com.sun.star.i18n.ScriptTypeDetector",
391*cdf0e10cSrcweir         "com.sun.star.i18n.ScriptTypeDetector",
392*cdf0e10cSrcweir         &ScriptTypeDetector_CreateInstance },
393*cdf0e10cSrcweir     {   "com.sun.star.i18n.CharacterClassification",
394*cdf0e10cSrcweir         "com.sun.star.i18n.CharacterClassification",
395*cdf0e10cSrcweir         &CharacterClassificationImpl_CreateInstance },
396*cdf0e10cSrcweir     {   "com.sun.star.i18n.CharacterClassification_Unicode",
397*cdf0e10cSrcweir         "com.sun.star.i18n.CharacterClassification_Unicode",
398*cdf0e10cSrcweir         &cclass_Unicode_CreateInstance },
399*cdf0e10cSrcweir     {   "com.sun.star.i18n.InputSequenceChecker",
400*cdf0e10cSrcweir         "com.sun.star.i18n.InputSequenceChecker",
401*cdf0e10cSrcweir         &InputSequenceCheckerImpl_CreateInstance },
402*cdf0e10cSrcweir     {   "com.sun.star.i18n.InputSequenceChecker_th",
403*cdf0e10cSrcweir         "com.sun.star.i18n.InputSequenceChecker_th",
404*cdf0e10cSrcweir         &InputSequenceChecker_th_CreateInstance },
405*cdf0e10cSrcweir     {   "com.sun.star.i18n.InputSequenceChecker_hi",
406*cdf0e10cSrcweir         "com.sun.star.i18n.InputSequenceChecker_hi",
407*cdf0e10cSrcweir         &InputSequenceChecker_hi_CreateInstance },
408*cdf0e10cSrcweir     {   "com.sun.star.i18n.TextConversion",
409*cdf0e10cSrcweir         "com.sun.star.i18n.TextConversion",
410*cdf0e10cSrcweir         &TextConversionImpl_CreateInstance },
411*cdf0e10cSrcweir     {   "com.sun.star.i18n.TextConversion_ko",
412*cdf0e10cSrcweir         "com.sun.star.i18n.TextConversion_ko",
413*cdf0e10cSrcweir         &TextConversion_ko_CreateInstance },
414*cdf0e10cSrcweir     {   "com.sun.star.i18n.TextConversion_zh",
415*cdf0e10cSrcweir         "com.sun.star.i18n.TextConversion_zh",
416*cdf0e10cSrcweir         &TextConversion_zh_CreateInstance },
417*cdf0e10cSrcweir     {   TRLT_SERVICELNAME,
418*cdf0e10cSrcweir         TRLT_IMPLNAME ,
419*cdf0e10cSrcweir         &TransliterationImpl_CreateInstance },
420*cdf0e10cSrcweir     {   TRLT_SERVICELNAME_L10N,
421*cdf0e10cSrcweir         TRLT_IMPLNAME_PREFIX  "UPPERCASE_LOWERCASE",
422*cdf0e10cSrcweir         &Transliteration_u2l_CreateInstance },
423*cdf0e10cSrcweir     {   TRLT_SERVICELNAME_L10N,
424*cdf0e10cSrcweir         TRLT_IMPLNAME_PREFIX  "LOWERCASE_UPPERCASE",
425*cdf0e10cSrcweir         &Transliteration_l2u_CreateInstance },
426*cdf0e10cSrcweir     {   TRLT_SERVICELNAME_L10N,
427*cdf0e10cSrcweir         TRLT_IMPLNAME_PREFIX  "SENTENCE_CASE",
428*cdf0e10cSrcweir         &Transliteration_sentencecase_CreateInstance },
429*cdf0e10cSrcweir     {   TRLT_SERVICELNAME_L10N,
430*cdf0e10cSrcweir         TRLT_IMPLNAME_PREFIX  "TITLE_CASE",
431*cdf0e10cSrcweir         &Transliteration_titlecase_CreateInstance },
432*cdf0e10cSrcweir     {   TRLT_SERVICELNAME_L10N,
433*cdf0e10cSrcweir         TRLT_IMPLNAME_PREFIX  "TOGGLE_CASE",
434*cdf0e10cSrcweir         &Transliteration_togglecase_CreateInstance },
435*cdf0e10cSrcweir     {   TRLT_SERVICELNAME_L10N,
436*cdf0e10cSrcweir         TRLT_IMPLNAME_PREFIX  "IGNORE_CASE",
437*cdf0e10cSrcweir         &Transliteration_caseignore_CreateInstance },
438*cdf0e10cSrcweir     {   TRLT_SERVICELNAME_L10N,
439*cdf0e10cSrcweir         TRLT_IMPLNAME_PREFIX  "HIRAGANA_KATAKANA",
440*cdf0e10cSrcweir         &hiraganaToKatakana_CreateInstance },
441*cdf0e10cSrcweir     {   TRLT_SERVICELNAME_L10N,
442*cdf0e10cSrcweir         TRLT_IMPLNAME_PREFIX  "KATAKANA_HIRAGANA",
443*cdf0e10cSrcweir         &katakanaToHiragana_CreateInstance },
444*cdf0e10cSrcweir     {   TRLT_SERVICELNAME_L10N,
445*cdf0e10cSrcweir         TRLT_IMPLNAME_PREFIX  "IGNORE_KANA",
446*cdf0e10cSrcweir         &ignoreKana_CreateInstance },
447*cdf0e10cSrcweir     {   TRLT_SERVICELNAME_L10N,
448*cdf0e10cSrcweir         TRLT_IMPLNAME_PREFIX  "FULLWIDTH_HALFWIDTH",
449*cdf0e10cSrcweir         &fullwidthToHalfwidth_CreateInstance },
450*cdf0e10cSrcweir     {   TRLT_SERVICELNAME_L10N,
451*cdf0e10cSrcweir         TRLT_IMPLNAME_PREFIX  "HALFWIDTH_FULLWIDTH",
452*cdf0e10cSrcweir         &halfwidthToFullwidth_CreateInstance },
453*cdf0e10cSrcweir     {   TRLT_SERVICELNAME_L10N,
454*cdf0e10cSrcweir         TRLT_IMPLNAME_PREFIX  "IGNORE_WIDTH",
455*cdf0e10cSrcweir         &ignoreWidth_CreateInstance },
456*cdf0e10cSrcweir     IMPL_TRANSLITERATION_ITEM (smallToLarge_ja_JP),
457*cdf0e10cSrcweir     IMPL_TRANSLITERATION_ITEM (largeToSmall_ja_JP),
458*cdf0e10cSrcweir     IMPL_TRANSLITERATION_ITEM (ignoreTraditionalKanji_ja_JP),
459*cdf0e10cSrcweir     IMPL_TRANSLITERATION_ITEM (ignoreTraditionalKana_ja_JP),
460*cdf0e10cSrcweir     IMPL_TRANSLITERATION_ITEM (ignoreKana),
461*cdf0e10cSrcweir     IMPL_TRANSLITERATION_ITEM (ignoreMinusSign_ja_JP),
462*cdf0e10cSrcweir     IMPL_TRANSLITERATION_ITEM (ignoreIterationMark_ja_JP),
463*cdf0e10cSrcweir     IMPL_TRANSLITERATION_ITEM (ignoreSeparator_ja_JP),
464*cdf0e10cSrcweir     IMPL_TRANSLITERATION_ITEM (ignoreZiZu_ja_JP),
465*cdf0e10cSrcweir     IMPL_TRANSLITERATION_ITEM (ignoreBaFa_ja_JP),
466*cdf0e10cSrcweir     IMPL_TRANSLITERATION_ITEM (ignoreTiJi_ja_JP),
467*cdf0e10cSrcweir     IMPL_TRANSLITERATION_ITEM (ignoreHyuByu_ja_JP),
468*cdf0e10cSrcweir     IMPL_TRANSLITERATION_ITEM (ignoreSeZe_ja_JP),
469*cdf0e10cSrcweir     IMPL_TRANSLITERATION_ITEM (ignoreIandEfollowedByYa_ja_JP),
470*cdf0e10cSrcweir     IMPL_TRANSLITERATION_ITEM (ignoreKiKuFollowedBySa_ja_JP),
471*cdf0e10cSrcweir     IMPL_TRANSLITERATION_ITEM (ignoreSize_ja_JP),
472*cdf0e10cSrcweir     IMPL_TRANSLITERATION_ITEM (ignoreProlongedSoundMark_ja_JP),
473*cdf0e10cSrcweir     IMPL_TRANSLITERATION_ITEM (ignoreMiddleDot_ja_JP),
474*cdf0e10cSrcweir     IMPL_TRANSLITERATION_ITEM (ignoreSpace_ja_JP),
475*cdf0e10cSrcweir     IMPL_TRANSLITERATION_ITEM (TextToPinyin_zh_CN),
476*cdf0e10cSrcweir     IMPL_TRANSLITERATION_ITEM (TextToChuyin_zh_TW),
477*cdf0e10cSrcweir 
478*cdf0e10cSrcweir     IMPL_TRANSLITERATION_ITEM (NumToCharUpper_zh_CN),
479*cdf0e10cSrcweir     IMPL_TRANSLITERATION_ITEM (NumToCharLower_zh_CN),
480*cdf0e10cSrcweir     IMPL_TRANSLITERATION_ITEM (NumToCharUpper_zh_TW),
481*cdf0e10cSrcweir     IMPL_TRANSLITERATION_ITEM (NumToCharLower_zh_TW),
482*cdf0e10cSrcweir     IMPL_TRANSLITERATION_ITEM (NumToCharHalfwidth),
483*cdf0e10cSrcweir     IMPL_TRANSLITERATION_ITEM (NumToCharFullwidth),
484*cdf0e10cSrcweir     IMPL_TRANSLITERATION_ITEM (NumToCharKanjiShort_ja_JP),
485*cdf0e10cSrcweir     IMPL_TRANSLITERATION_ITEM (NumToCharKanjiTraditional_ja_JP),
486*cdf0e10cSrcweir     IMPL_TRANSLITERATION_ITEM (NumToCharLower_ko),
487*cdf0e10cSrcweir     IMPL_TRANSLITERATION_ITEM (NumToCharUpper_ko),
488*cdf0e10cSrcweir     IMPL_TRANSLITERATION_ITEM (NumToCharHangul_ko),
489*cdf0e10cSrcweir     IMPL_TRANSLITERATION_ITEM (NumToCharIndic_ar),
490*cdf0e10cSrcweir     IMPL_TRANSLITERATION_ITEM (NumToCharEastIndic_ar),
491*cdf0e10cSrcweir     IMPL_TRANSLITERATION_ITEM (NumToCharIndic_hi),
492*cdf0e10cSrcweir     IMPL_TRANSLITERATION_ITEM (NumToChar_th),
493*cdf0e10cSrcweir 
494*cdf0e10cSrcweir     IMPL_TRANSLITERATION_ITEM (CharToNumUpper_zh_CN),
495*cdf0e10cSrcweir     IMPL_TRANSLITERATION_ITEM (CharToNumLower_zh_CN),
496*cdf0e10cSrcweir     IMPL_TRANSLITERATION_ITEM (CharToNumUpper_zh_TW),
497*cdf0e10cSrcweir     IMPL_TRANSLITERATION_ITEM (CharToNumLower_zh_TW),
498*cdf0e10cSrcweir     IMPL_TRANSLITERATION_ITEM (CharToNumFullwidth),
499*cdf0e10cSrcweir     IMPL_TRANSLITERATION_ITEM (CharToNumKanjiShort_ja_JP),
500*cdf0e10cSrcweir     IMPL_TRANSLITERATION_ITEM (CharToNumKanjiTraditional_ja_JP),
501*cdf0e10cSrcweir     IMPL_TRANSLITERATION_ITEM (CharToNumLower_ko),
502*cdf0e10cSrcweir     IMPL_TRANSLITERATION_ITEM (CharToNumUpper_ko),
503*cdf0e10cSrcweir     IMPL_TRANSLITERATION_ITEM (CharToNumHangul_ko),
504*cdf0e10cSrcweir     IMPL_TRANSLITERATION_ITEM (CharToNumIndic_ar),
505*cdf0e10cSrcweir     IMPL_TRANSLITERATION_ITEM (CharToNumEastIndic_ar),
506*cdf0e10cSrcweir     IMPL_TRANSLITERATION_ITEM (CharToNumIndic_hi),
507*cdf0e10cSrcweir     IMPL_TRANSLITERATION_ITEM (CharToNum_th),
508*cdf0e10cSrcweir 
509*cdf0e10cSrcweir     IMPL_TRANSLITERATION_ITEM (NumToTextUpper_zh_CN),
510*cdf0e10cSrcweir     IMPL_TRANSLITERATION_ITEM (NumToTextLower_zh_CN),
511*cdf0e10cSrcweir     IMPL_TRANSLITERATION_ITEM (NumToTextUpper_zh_TW),
512*cdf0e10cSrcweir     IMPL_TRANSLITERATION_ITEM (NumToTextLower_zh_TW),
513*cdf0e10cSrcweir     IMPL_TRANSLITERATION_ITEM (NumToTextFullwidth_zh_CN),
514*cdf0e10cSrcweir     IMPL_TRANSLITERATION_ITEM (NumToTextFullwidth_zh_TW),
515*cdf0e10cSrcweir     IMPL_TRANSLITERATION_ITEM (NumToTextFullwidth_ja_JP),
516*cdf0e10cSrcweir     IMPL_TRANSLITERATION_ITEM (NumToTextFullwidth_ko),
517*cdf0e10cSrcweir     IMPL_TRANSLITERATION_ITEM (NumToTextKanjiLongModern_ja_JP),
518*cdf0e10cSrcweir     IMPL_TRANSLITERATION_ITEM (NumToTextKanjiLongTraditional_ja_JP),
519*cdf0e10cSrcweir     IMPL_TRANSLITERATION_ITEM (NumToTextKanjiShortModern_ja_JP),
520*cdf0e10cSrcweir     IMPL_TRANSLITERATION_ITEM (NumToTextKanjiShortTraditional_ja_JP),
521*cdf0e10cSrcweir     IMPL_TRANSLITERATION_ITEM (NumToTextInformalHangul_ko),
522*cdf0e10cSrcweir     IMPL_TRANSLITERATION_ITEM (NumToTextInformalLower_ko),
523*cdf0e10cSrcweir     IMPL_TRANSLITERATION_ITEM (NumToTextInformalUpper_ko),
524*cdf0e10cSrcweir     IMPL_TRANSLITERATION_ITEM (NumToTextFormalHangul_ko),
525*cdf0e10cSrcweir     IMPL_TRANSLITERATION_ITEM (NumToTextFormalLower_ko),
526*cdf0e10cSrcweir     IMPL_TRANSLITERATION_ITEM (NumToTextFormalUpper_ko),
527*cdf0e10cSrcweir 
528*cdf0e10cSrcweir     IMPL_TRANSLITERATION_ITEM (TextToNumUpper_zh_CN),
529*cdf0e10cSrcweir     IMPL_TRANSLITERATION_ITEM (TextToNumLower_zh_CN),
530*cdf0e10cSrcweir     IMPL_TRANSLITERATION_ITEM (TextToNumUpper_zh_TW),
531*cdf0e10cSrcweir     IMPL_TRANSLITERATION_ITEM (TextToNumLower_zh_TW),
532*cdf0e10cSrcweir     IMPL_TRANSLITERATION_ITEM (TextToNumKanjiLongModern_ja_JP),
533*cdf0e10cSrcweir     IMPL_TRANSLITERATION_ITEM (TextToNumKanjiLongTraditional_ja_JP),
534*cdf0e10cSrcweir     IMPL_TRANSLITERATION_ITEM (TextToNumInformalHangul_ko),
535*cdf0e10cSrcweir     IMPL_TRANSLITERATION_ITEM (TextToNumInformalLower_ko),
536*cdf0e10cSrcweir     IMPL_TRANSLITERATION_ITEM (TextToNumInformalUpper_ko),
537*cdf0e10cSrcweir     IMPL_TRANSLITERATION_ITEM (TextToNumFormalHangul_ko),
538*cdf0e10cSrcweir     IMPL_TRANSLITERATION_ITEM (TextToNumFormalLower_ko),
539*cdf0e10cSrcweir     IMPL_TRANSLITERATION_ITEM (TextToNumFormalUpper_ko),
540*cdf0e10cSrcweir 
541*cdf0e10cSrcweir     IMPL_TRANSLITERATION_ITEM (NumToTextDate_zh),
542*cdf0e10cSrcweir     IMPL_TRANSLITERATION_ITEM (NumToTextAIUFullWidth_ja_JP),
543*cdf0e10cSrcweir     IMPL_TRANSLITERATION_ITEM (NumToTextAIUHalfWidth_ja_JP),
544*cdf0e10cSrcweir     IMPL_TRANSLITERATION_ITEM (NumToTextIROHAFullWidth_ja_JP),
545*cdf0e10cSrcweir     IMPL_TRANSLITERATION_ITEM (NumToTextIROHAHalfWidth_ja_JP),
546*cdf0e10cSrcweir     IMPL_TRANSLITERATION_ITEM (NumToTextCircledNumber),
547*cdf0e10cSrcweir     IMPL_TRANSLITERATION_ITEM (NumToTextHangulJamo_ko),
548*cdf0e10cSrcweir     IMPL_TRANSLITERATION_ITEM (NumToTextHangulSyllable_ko),
549*cdf0e10cSrcweir     IMPL_TRANSLITERATION_ITEM (NumToTextHangulCircledJamo_ko),
550*cdf0e10cSrcweir     IMPL_TRANSLITERATION_ITEM (NumToTextHangulCircledSyllable_ko),
551*cdf0e10cSrcweir     IMPL_TRANSLITERATION_ITEM (NumToTextTianGan_zh),
552*cdf0e10cSrcweir     IMPL_TRANSLITERATION_ITEM (NumToTextDiZi_zh),
553*cdf0e10cSrcweir 
554*cdf0e10cSrcweir     {   "com.sun.star.i18n.OrdinalSuffix",
555*cdf0e10cSrcweir         "com.sun.star.i18n.OrdinalSuffix",
556*cdf0e10cSrcweir         & OrdinalSuffix_CreateInstance },
557*cdf0e10cSrcweir 
558*cdf0e10cSrcweir     {   TRLT_SERVICELNAME_L10N,
559*cdf0e10cSrcweir         TRLT_IMPLNAME_PREFIX  "FULLWIDTHKATAKANA_HALFWIDTHKATAKANA",
560*cdf0e10cSrcweir         &fullwidthKatakanaToHalfwidthKatakana_CreateInstance },
561*cdf0e10cSrcweir     {   TRLT_SERVICELNAME_L10N,
562*cdf0e10cSrcweir         TRLT_IMPLNAME_PREFIX  "HALFWIDTHKATAKANA_FULLWIDTHKATAKANA",
563*cdf0e10cSrcweir         &halfwidthKatakanaToFullwidthKatakana_CreateInstance },
564*cdf0e10cSrcweir     {   TRLT_SERVICELNAME_L10N,
565*cdf0e10cSrcweir         TRLT_IMPLNAME_PREFIX  "FULLWIDTH_HALFWIDTH_LIKE_ASC",
566*cdf0e10cSrcweir         &fullwidthToHalfwidthLikeASC_CreateInstance },
567*cdf0e10cSrcweir     {   TRLT_SERVICELNAME_L10N,
568*cdf0e10cSrcweir         TRLT_IMPLNAME_PREFIX  "HALFWIDTH_FULLWIDTH_LIKE_JIS",
569*cdf0e10cSrcweir         &halfwidthToFullwidthLikeJIS_CreateInstance },
570*cdf0e10cSrcweir // add here new services !!
571*cdf0e10cSrcweir     { 0, 0, 0 }
572*cdf0e10cSrcweir };
573*cdf0e10cSrcweir 
574*cdf0e10cSrcweir 
575*cdf0e10cSrcweir extern "C"
576*cdf0e10cSrcweir {
577*cdf0e10cSrcweir 
578*cdf0e10cSrcweir void SAL_CALL component_getImplementationEnvironment( const sal_Char** ppEnvTypeName, uno_Environment** /*ppEnv*/ )
579*cdf0e10cSrcweir {
580*cdf0e10cSrcweir     *ppEnvTypeName = CPPU_CURRENT_LANGUAGE_BINDING_NAME;
581*cdf0e10cSrcweir }
582*cdf0e10cSrcweir 
583*cdf0e10cSrcweir void* SAL_CALL component_getFactory( const sal_Char* sImplementationName, void* _pServiceManager, void* /*_pRegistryKey*/ )
584*cdf0e10cSrcweir {
585*cdf0e10cSrcweir     void* pRet = NULL;
586*cdf0e10cSrcweir 
587*cdf0e10cSrcweir     ::com::sun::star::lang::XMultiServiceFactory* pServiceManager =
588*cdf0e10cSrcweir         reinterpret_cast< ::com::sun::star::lang::XMultiServiceFactory* >
589*cdf0e10cSrcweir             ( _pServiceManager );
590*cdf0e10cSrcweir     ::com::sun::star::uno::Reference<
591*cdf0e10cSrcweir             ::com::sun::star::lang::XSingleServiceFactory > xFactory;
592*cdf0e10cSrcweir 
593*cdf0e10cSrcweir     for( const InstancesArray* pArr = aInstances; pArr->pServiceNm; ++pArr )
594*cdf0e10cSrcweir     {
595*cdf0e10cSrcweir         if( 0 == rtl_str_compare( sImplementationName, pArr->pImplementationNm ) )
596*cdf0e10cSrcweir         {
597*cdf0e10cSrcweir             ::com::sun::star::uno::Sequence< ::rtl::OUString > aServiceNames(1);
598*cdf0e10cSrcweir             aServiceNames.getArray()[0] =
599*cdf0e10cSrcweir                 ::rtl::OUString::createFromAscii( pArr->pServiceNm );
600*cdf0e10cSrcweir             xFactory = ::cppu::createSingleFactory(
601*cdf0e10cSrcweir                     pServiceManager, aServiceNames.getArray()[0],
602*cdf0e10cSrcweir                     *pArr->pFn, aServiceNames );
603*cdf0e10cSrcweir             break;
604*cdf0e10cSrcweir         }
605*cdf0e10cSrcweir     }
606*cdf0e10cSrcweir 
607*cdf0e10cSrcweir     if ( xFactory.is() )
608*cdf0e10cSrcweir     {
609*cdf0e10cSrcweir         xFactory->acquire();
610*cdf0e10cSrcweir         pRet = xFactory.get();
611*cdf0e10cSrcweir     }
612*cdf0e10cSrcweir 
613*cdf0e10cSrcweir     return pRet;
614*cdf0e10cSrcweir }
615*cdf0e10cSrcweir 
616*cdf0e10cSrcweir }   // "C"
617