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