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