Coverage Report

Created: 2025-12-08 09:28

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/libreoffice/i18npool/source/registerservices/registerservices.cxx
Line
Count
Source
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 <config_locales.h>
21
22
#include <com/sun/star/lang/XSingleServiceFactory.hpp>
23
24
#include <comphelper/processfactory.hxx>
25
#include <cppuhelper/factory.hxx>
26
#include <cppuhelper/weak.hxx>
27
28
#include <servicename.hxx>
29
30
#include <transliteration_body.hxx>
31
#include <transliteration_OneToOne.hxx>
32
#include <textToPronounce_zh.hxx>
33
#include <numtotext_cjk.hxx>
34
#include <numtochar.hxx>
35
#include <texttonum.hxx>
36
#include <chartonum.hxx>
37
38
#include <calendarImpl.hxx>
39
#include <calendar_gregorian.hxx>
40
#include <calendar_hijri.hxx>
41
#include <calendar_jewish.hxx>
42
43
#include <breakiterator_cjk.hxx>
44
45
#include <indexentrysupplier.hxx>
46
#include <indexentrysupplier_asian.hxx>
47
#include <indexentrysupplier_ja_phonetic.hxx>
48
#include <indexentrysupplier_default.hxx>
49
50
#include <chaptercollator.hxx>
51
#include <collator_unicode.hxx>
52
53
#include <inputsequencechecker_th.hxx>
54
#include <inputsequencechecker_hi.hxx>
55
56
#include <textconversion.hxx>
57
58
using namespace ::com::sun::star;
59
using namespace i18npool;
60
61
#define IMPL_CREATEINSTANCE( ImplName ) \
62
    static uno::Reference< uno::XInterface >   \
63
        ImplName##_CreateInstance(               \
64
            SAL_UNUSED_PARAMETER const uno::Reference<    \
65
0
                    lang::XMultiServiceFactory >& )       \
66
0
{                                                         \
67
0
    return uno::Reference <                               \
68
0
            uno::XInterface >( static_cast<cppu::OWeakObject*>(   \
69
0
                                    new ImplName) );       \
70
0
}
Unexecuted instantiation: registerservices.cxx:Transliteration_u2l_CreateInstance(com::sun::star::uno::Reference<com::sun::star::lang::XMultiServiceFactory> const&)
Unexecuted instantiation: registerservices.cxx:Transliteration_l2u_CreateInstance(com::sun::star::uno::Reference<com::sun::star::lang::XMultiServiceFactory> const&)
Unexecuted instantiation: registerservices.cxx:Transliteration_sentencecase_CreateInstance(com::sun::star::uno::Reference<com::sun::star::lang::XMultiServiceFactory> const&)
Unexecuted instantiation: registerservices.cxx:Transliteration_titlecase_CreateInstance(com::sun::star::uno::Reference<com::sun::star::lang::XMultiServiceFactory> const&)
Unexecuted instantiation: registerservices.cxx:Transliteration_togglecase_CreateInstance(com::sun::star::uno::Reference<com::sun::star::lang::XMultiServiceFactory> const&)
Unexecuted instantiation: registerservices.cxx:NumToCharIndic_ar_CreateInstance(com::sun::star::uno::Reference<com::sun::star::lang::XMultiServiceFactory> const&)
Unexecuted instantiation: registerservices.cxx:ignoreDiacritics_CTL_CreateInstance(com::sun::star::uno::Reference<com::sun::star::lang::XMultiServiceFactory> const&)
Unexecuted instantiation: registerservices.cxx:ignoreKashida_CTL_CreateInstance(com::sun::star::uno::Reference<com::sun::star::lang::XMultiServiceFactory> const&)
Unexecuted instantiation: registerservices.cxx:NumToTextCircledNumber_CreateInstance(com::sun::star::uno::Reference<com::sun::star::lang::XMultiServiceFactory> const&)
71
72
#define IMPL_TRANSLITERATION_ITEM( implName ) \
73
    {       TRLT_SERVICELNAME_L10N, \
74
        TRLT_IMPLNAME_PREFIX  #implName, \
75
        &implName##_CreateInstance }
76
77
#define IMPL_UNO_CONSTRUCTOR( ImplName ) \
78
extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface * \
79
i18npool_##ImplName##_get_implementation( \
80
    css::uno::XComponentContext *, \
81
27.9k
    css::uno::Sequence<css::uno::Any> const &) \
82
27.9k
{ \
83
27.9k
    return cppu::acquire(new ImplName()); \
84
27.9k
}
i18npool_Calendar_buddhist_get_implementation
Line
Count
Source
81
160
    css::uno::Sequence<css::uno::Any> const &) \
82
160
{ \
83
160
    return cppu::acquire(new ImplName()); \
84
160
}
i18npool_Calendar_dangi_get_implementation
Line
Count
Source
81
161
    css::uno::Sequence<css::uno::Any> const &) \
82
161
{ \
83
161
    return cppu::acquire(new ImplName()); \
84
161
}
Unexecuted instantiation: i18npool_Calendar_gengou_get_implementation
i18npool_Calendar_gregorian_get_implementation
Line
Count
Source
81
25.7k
    css::uno::Sequence<css::uno::Any> const &) \
82
25.7k
{ \
83
25.7k
    return cppu::acquire(new ImplName()); \
84
25.7k
}
Unexecuted instantiation: i18npool_Calendar_hanja_get_implementation
Unexecuted instantiation: i18npool_Calendar_hanja_yoil_get_implementation
i18npool_Calendar_hijri_get_implementation
Line
Count
Source
81
160
    css::uno::Sequence<css::uno::Any> const &) \
82
160
{ \
83
160
    return cppu::acquire(new ImplName()); \
84
160
}
i18npool_Calendar_jewish_get_implementation
Line
Count
Source
81
1.64k
    css::uno::Sequence<css::uno::Any> const &) \
82
1.64k
{ \
83
1.64k
    return cppu::acquire(new ImplName()); \
84
1.64k
}
Unexecuted instantiation: i18npool_Calendar_ROC_get_implementation
Unexecuted instantiation: i18npool_CharToNumEastIndic_ar_get_implementation
Unexecuted instantiation: i18npool_CharToNumIndic_ar_get_implementation
i18npool_Collator_Unicode_get_implementation
Line
Count
Source
81
3
    css::uno::Sequence<css::uno::Any> const &) \
82
3
{ \
83
3
    return cppu::acquire(new ImplName()); \
84
3
}
Unexecuted instantiation: i18npool_NumToCharEastIndic_ar_get_implementation
85
86
#define IMPL_UNO_CONSTRUCTOR_CTX( ImplName ) \
87
extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface * \
88
i18npool_##ImplName##_get_implementation( \
89
    css::uno::XComponentContext * context, \
90
70.6k
    css::uno::Sequence<css::uno::Any> const &) \
91
70.6k
{ \
92
70.6k
    return cppu::acquire(new ImplName(context)); \
93
70.6k
}
i18npool_CalendarImpl_get_implementation
Line
Count
Source
90
70.6k
    css::uno::Sequence<css::uno::Any> const &) \
91
70.6k
{ \
92
70.6k
    return cppu::acquire(new ImplName(context)); \
93
70.6k
}
Unexecuted instantiation: i18npool_ChapterCollator_get_implementation
Unexecuted instantiation: i18npool_IndexEntrySupplier_get_implementation
Unexecuted instantiation: i18npool_IndexEntrySupplier_asian_get_implementation
Unexecuted instantiation: i18npool_IndexEntrySupplier_Unicode_get_implementation
94
95
96
// At least for iOS it doesn't hurt if we have lots of functions here
97
// generated by these lovely macros that get compiled, but then no
98
// references to them thanks to the WITH_LOCALE ifdefs for the
99
// aInstances table below. The -dead_strip linker option will take
100
// care of not linking these functions in. Presumably the same holds
101
// for Android, too, as we use -ffunction-sections and
102
// -Wl,--gc_sections. It's mainly for iOS and Android that the
103
// --with-locales option is intended anyway.
104
105
IMPL_CREATEINSTANCE( ignoreDiacritics_CTL )
106
IMPL_CREATEINSTANCE( ignoreKashida_CTL )
107
IMPL_CREATEINSTANCE( NumToCharIndic_ar )
108
IMPL_CREATEINSTANCE( NumToTextCircledNumber )
109
IMPL_CREATEINSTANCE( Transliteration_l2u )
110
IMPL_CREATEINSTANCE( Transliteration_sentencecase )
111
IMPL_CREATEINSTANCE( Transliteration_titlecase )
112
IMPL_CREATEINSTANCE( Transliteration_togglecase )
113
IMPL_CREATEINSTANCE( Transliteration_u2l )
114
IMPL_UNO_CONSTRUCTOR( Calendar_buddhist )
115
IMPL_UNO_CONSTRUCTOR( Calendar_dangi )
116
IMPL_UNO_CONSTRUCTOR( Calendar_gengou )
117
IMPL_UNO_CONSTRUCTOR( Calendar_gregorian )
118
IMPL_UNO_CONSTRUCTOR( Calendar_hanja )
119
IMPL_UNO_CONSTRUCTOR( Calendar_hanja_yoil )
120
IMPL_UNO_CONSTRUCTOR( Calendar_hijri )
121
IMPL_UNO_CONSTRUCTOR( Calendar_jewish )
122
IMPL_UNO_CONSTRUCTOR( Calendar_ROC )
123
IMPL_UNO_CONSTRUCTOR( CharToNumEastIndic_ar )
124
IMPL_UNO_CONSTRUCTOR( CharToNumIndic_ar )
125
IMPL_UNO_CONSTRUCTOR( Collator_Unicode )
126
IMPL_UNO_CONSTRUCTOR_CTX( CalendarImpl )
127
IMPL_UNO_CONSTRUCTOR_CTX( ChapterCollator )
128
IMPL_UNO_CONSTRUCTOR_CTX( IndexEntrySupplier )
129
IMPL_UNO_CONSTRUCTOR_CTX( IndexEntrySupplier_asian )
130
IMPL_UNO_CONSTRUCTOR_CTX( IndexEntrySupplier_Unicode )
131
IMPL_UNO_CONSTRUCTOR( NumToCharEastIndic_ar )
132
133
#if WITH_LOCALE_ALL || WITH_LOCALE_hi
134
IMPL_CREATEINSTANCE( NumToCharIndic_hi )
135
IMPL_UNO_CONSTRUCTOR( CharToNumIndic_hi )
136
IMPL_UNO_CONSTRUCTOR( InputSequenceChecker_hi )
137
#endif
138
139
#if WITH_LOCALE_ALL || WITH_LOCALE_ja
140
IMPL_CREATEINSTANCE( fullwidthToHalfwidth )
141
IMPL_CREATEINSTANCE( halfwidthToFullwidth )
142
IMPL_CREATEINSTANCE( hiraganaToKatakana )
143
IMPL_CREATEINSTANCE( ignoreBaFa_ja_JP )
144
IMPL_CREATEINSTANCE( ignoreHyuByu_ja_JP )
145
IMPL_CREATEINSTANCE( ignoreIandEfollowedByYa_ja_JP )
146
IMPL_CREATEINSTANCE( ignoreIterationMark_ja_JP )
147
IMPL_CREATEINSTANCE( ignoreKiKuFollowedBySa_ja_JP )
148
IMPL_CREATEINSTANCE( ignoreMiddleDot_ja_JP )
149
IMPL_CREATEINSTANCE( ignoreMinusSign_ja_JP )
150
IMPL_CREATEINSTANCE( ignoreProlongedSoundMark_ja_JP )
151
IMPL_CREATEINSTANCE( ignoreSeparator_ja_JP )
152
IMPL_CREATEINSTANCE( ignoreSeZe_ja_JP )
153
IMPL_CREATEINSTANCE( ignoreSize_ja_JP )
154
IMPL_CREATEINSTANCE( ignoreSpace_ja_JP )
155
IMPL_CREATEINSTANCE( ignoreTiJi_ja_JP )
156
IMPL_CREATEINSTANCE( ignoreTraditionalKana_ja_JP )
157
IMPL_CREATEINSTANCE( ignoreTraditionalKanji_ja_JP )
158
IMPL_CREATEINSTANCE( ignoreZiZu_ja_JP )
159
IMPL_CREATEINSTANCE( katakanaToHiragana )
160
IMPL_CREATEINSTANCE( largeToSmall_ja_JP )
161
IMPL_CREATEINSTANCE( NumToCharFullwidth )
162
IMPL_CREATEINSTANCE( NumToCharHalfwidth )
163
IMPL_CREATEINSTANCE( NumToCharKanjiShort_ja_JP )
164
IMPL_CREATEINSTANCE( NumToCharKanjiTraditional_ja_JP )
165
IMPL_CREATEINSTANCE( NumToTextFullwidth_ja_JP )
166
IMPL_CREATEINSTANCE( NumToTextKanjiLongModern_ja_JP )
167
IMPL_CREATEINSTANCE( NumToTextKanjiLongTraditional_ja_JP )
168
IMPL_CREATEINSTANCE( NumToTextKanjiShortModern_ja_JP )
169
IMPL_CREATEINSTANCE( NumToTextKanjiShortTraditional_ja_JP )
170
IMPL_CREATEINSTANCE( smallToLarge_ja_JP )
171
IMPL_CREATEINSTANCE( TextToNumKanjiLongModern_ja_JP )
172
IMPL_CREATEINSTANCE( TextToNumKanjiLongTraditional_ja_JP )
173
IMPL_UNO_CONSTRUCTOR( BreakIterator_ja )
174
IMPL_UNO_CONSTRUCTOR( CharToNumFullwidth )
175
IMPL_UNO_CONSTRUCTOR( CharToNumKanjiShort_ja_JP )
176
IMPL_UNO_CONSTRUCTOR( CharToNumKanjiTraditional_ja_JP )
177
IMPL_UNO_CONSTRUCTOR_CTX( IndexEntrySupplier_ja_phonetic_alphanumeric_first_by_consonant )
178
IMPL_UNO_CONSTRUCTOR_CTX( IndexEntrySupplier_ja_phonetic_alphanumeric_first_by_syllable )
179
IMPL_UNO_CONSTRUCTOR_CTX( IndexEntrySupplier_ja_phonetic_alphanumeric_last_by_consonant )
180
IMPL_UNO_CONSTRUCTOR_CTX( IndexEntrySupplier_ja_phonetic_alphanumeric_last_by_syllable )
181
IMPL_UNO_CONSTRUCTOR( FULLWIDTH_HALFWIDTH_LIKE_ASC )
182
IMPL_UNO_CONSTRUCTOR( FULLWIDTHKATAKANA_HALFWIDTHKATAKANA )
183
IMPL_UNO_CONSTRUCTOR( HALFWIDTH_FULLWIDTH_LIKE_JIS )
184
IMPL_UNO_CONSTRUCTOR( HALFWIDTHKATAKANA_FULLWIDTHKATAKANA )
185
IMPL_UNO_CONSTRUCTOR( NumToTextAIUFullWidth_ja_JP )
186
IMPL_UNO_CONSTRUCTOR( NumToTextAIUHalfWidth_ja_JP )
187
IMPL_UNO_CONSTRUCTOR( NumToTextIROHAFullWidth_ja_JP )
188
IMPL_UNO_CONSTRUCTOR( NumToTextIROHAHalfWidth_ja_JP )
189
#endif
190
191
#if WITH_LOCALE_ALL || WITH_LOCALE_ko
192
IMPL_CREATEINSTANCE( NumToCharHangul_ko )
193
IMPL_CREATEINSTANCE( NumToCharLower_ko )
194
IMPL_CREATEINSTANCE( NumToCharUpper_ko )
195
IMPL_CREATEINSTANCE( NumToTextFullwidth_ko )
196
IMPL_CREATEINSTANCE( TextToNumFormalHangul_ko )
197
IMPL_CREATEINSTANCE( TextToNumFormalLower_ko )
198
IMPL_CREATEINSTANCE( TextToNumFormalUpper_ko )
199
IMPL_CREATEINSTANCE( TextToNumInformalHangul_ko )
200
IMPL_CREATEINSTANCE( TextToNumInformalLower_ko )
201
IMPL_CREATEINSTANCE( TextToNumInformalUpper_ko )
202
IMPL_UNO_CONSTRUCTOR( BreakIterator_ko )
203
IMPL_UNO_CONSTRUCTOR( CharToNumHangul_ko )
204
IMPL_UNO_CONSTRUCTOR( CharToNumLower_ko )
205
IMPL_UNO_CONSTRUCTOR( CharToNumUpper_ko )
206
IMPL_UNO_CONSTRUCTOR_CTX( TextConversion_ko )
207
IMPL_UNO_CONSTRUCTOR( NumToTextFormalHangul_ko )
208
IMPL_UNO_CONSTRUCTOR( NumToTextFormalLower_ko )
209
IMPL_UNO_CONSTRUCTOR( NumToTextFormalUpper_ko )
210
IMPL_UNO_CONSTRUCTOR( NumToTextHangulCircledJamo_ko )
211
IMPL_UNO_CONSTRUCTOR( NumToTextHangulCircledSyllable_ko )
212
IMPL_UNO_CONSTRUCTOR( NumToTextHangulJamo_ko )
213
IMPL_UNO_CONSTRUCTOR( NumToTextHangulSyllable_ko )
214
IMPL_UNO_CONSTRUCTOR( NumToTextInformalHangul_ko )
215
IMPL_UNO_CONSTRUCTOR( NumToTextInformalLower_ko )
216
IMPL_UNO_CONSTRUCTOR( NumToTextInformalUpper_ko )
217
#endif
218
219
#if WITH_LOCALE_ALL || WITH_LOCALE_th
220
IMPL_CREATEINSTANCE( NumToChar_th )
221
IMPL_UNO_CONSTRUCTOR( CharToNum_th )
222
IMPL_UNO_CONSTRUCTOR( InputSequenceChecker_th )
223
#endif
224
225
#if WITH_LOCALE_ALL || WITH_LOCALE_zh
226
IMPL_CREATEINSTANCE( NumToCharLower_zh_CN )
227
IMPL_CREATEINSTANCE( NumToCharLower_zh_TW )
228
IMPL_CREATEINSTANCE( NumToCharUpper_zh_CN )
229
IMPL_CREATEINSTANCE( NumToCharUpper_zh_TW )
230
IMPL_CREATEINSTANCE( NumToTextDate_zh )
231
IMPL_CREATEINSTANCE( NumToTextDiZi_zh )
232
IMPL_CREATEINSTANCE( NumToTextTianGan_zh )
233
IMPL_CREATEINSTANCE( TextToChuyin_zh_TW )
234
IMPL_CREATEINSTANCE( TextToNumLower_zh_CN )
235
IMPL_CREATEINSTANCE( TextToNumLower_zh_TW )
236
IMPL_CREATEINSTANCE( TextToNumUpper_zh_CN )
237
IMPL_CREATEINSTANCE( TextToNumUpper_zh_TW )
238
IMPL_CREATEINSTANCE( TextToPinyin_zh_CN )
239
IMPL_UNO_CONSTRUCTOR( BreakIterator_zh )
240
IMPL_UNO_CONSTRUCTOR( BreakIterator_zh_TW )
241
IMPL_UNO_CONSTRUCTOR( CharToNumLower_zh_CN )
242
IMPL_UNO_CONSTRUCTOR( CharToNumLower_zh_TW )
243
IMPL_UNO_CONSTRUCTOR( CharToNumUpper_zh_CN )
244
IMPL_UNO_CONSTRUCTOR( CharToNumUpper_zh_TW )
245
IMPL_UNO_CONSTRUCTOR_CTX( TextConversion_zh )
246
IMPL_UNO_CONSTRUCTOR( NumToTextFullwidth_zh_CN )
247
IMPL_UNO_CONSTRUCTOR( NumToTextFullwidth_zh_TW )
248
IMPL_UNO_CONSTRUCTOR( NumToTextLower_zh_CN )
249
IMPL_UNO_CONSTRUCTOR( NumToTextLower_zh_TW )
250
IMPL_UNO_CONSTRUCTOR( NumToTextUpper_zh_CN )
251
IMPL_UNO_CONSTRUCTOR( NumToTextUpper_zh_TW )
252
#endif
253
254
namespace {
255
256
typedef uno::Reference< uno::XInterface > (*FN_CreateInstance)(
257
                const uno::Reference< lang::XMultiServiceFactory >& );
258
259
struct InstancesArray {
260
        const char* pServiceNm;
261
        const char* pImplementationNm;
262
        FN_CreateInstance pFn;
263
};
264
265
}
266
267
const InstancesArray aInstances[] = {
268
    {   TRLT_SERVICELNAME_L10N,
269
        TRLT_IMPLNAME_PREFIX  "UPPERCASE_LOWERCASE",
270
        &Transliteration_u2l_CreateInstance },
271
    {   TRLT_SERVICELNAME_L10N,
272
        TRLT_IMPLNAME_PREFIX  "LOWERCASE_UPPERCASE",
273
        &Transliteration_l2u_CreateInstance },
274
    {   TRLT_SERVICELNAME_L10N,
275
        TRLT_IMPLNAME_PREFIX  "SENTENCE_CASE",
276
        &Transliteration_sentencecase_CreateInstance },
277
    {   TRLT_SERVICELNAME_L10N,
278
        TRLT_IMPLNAME_PREFIX  "TITLE_CASE",
279
        &Transliteration_titlecase_CreateInstance },
280
    {   TRLT_SERVICELNAME_L10N,
281
        TRLT_IMPLNAME_PREFIX  "TOGGLE_CASE",
282
        &Transliteration_togglecase_CreateInstance },
283
284
    IMPL_TRANSLITERATION_ITEM( NumToCharIndic_ar ),
285
    IMPL_TRANSLITERATION_ITEM( ignoreDiacritics_CTL ),
286
    IMPL_TRANSLITERATION_ITEM( ignoreKashida_CTL ),
287
    IMPL_TRANSLITERATION_ITEM( NumToTextCircledNumber ),
288
289
#if WITH_LOCALE_ALL || WITH_LOCALE_hi
290
    IMPL_TRANSLITERATION_ITEM( NumToCharIndic_hi ),
291
#endif
292
293
#if WITH_LOCALE_ALL || WITH_LOCALE_ja
294
    {   TRLT_SERVICELNAME_L10N,
295
        TRLT_IMPLNAME_PREFIX  "HIRAGANA_KATAKANA",
296
        &hiraganaToKatakana_CreateInstance },
297
    {   TRLT_SERVICELNAME_L10N,
298
        TRLT_IMPLNAME_PREFIX  "KATAKANA_HIRAGANA",
299
        &katakanaToHiragana_CreateInstance },
300
    {   TRLT_SERVICELNAME_L10N,
301
        TRLT_IMPLNAME_PREFIX  "FULLWIDTH_HALFWIDTH",
302
        &fullwidthToHalfwidth_CreateInstance },
303
    {   TRLT_SERVICELNAME_L10N,
304
        TRLT_IMPLNAME_PREFIX  "HALFWIDTH_FULLWIDTH",
305
        &halfwidthToFullwidth_CreateInstance },
306
307
    IMPL_TRANSLITERATION_ITEM( ignoreBaFa_ja_JP ),
308
    IMPL_TRANSLITERATION_ITEM( ignoreHyuByu_ja_JP ),
309
    IMPL_TRANSLITERATION_ITEM( ignoreIandEfollowedByYa_ja_JP ),
310
    IMPL_TRANSLITERATION_ITEM( ignoreIterationMark_ja_JP ),
311
    IMPL_TRANSLITERATION_ITEM( ignoreKiKuFollowedBySa_ja_JP ),
312
    IMPL_TRANSLITERATION_ITEM( ignoreMiddleDot_ja_JP ),
313
    IMPL_TRANSLITERATION_ITEM( ignoreMinusSign_ja_JP ),
314
    IMPL_TRANSLITERATION_ITEM( ignoreProlongedSoundMark_ja_JP ),
315
    IMPL_TRANSLITERATION_ITEM( ignoreSeparator_ja_JP ),
316
    IMPL_TRANSLITERATION_ITEM( ignoreSeZe_ja_JP ),
317
    IMPL_TRANSLITERATION_ITEM( ignoreSize_ja_JP ),
318
    IMPL_TRANSLITERATION_ITEM( ignoreSpace_ja_JP ),
319
    IMPL_TRANSLITERATION_ITEM( ignoreTiJi_ja_JP ),
320
    IMPL_TRANSLITERATION_ITEM( ignoreTraditionalKana_ja_JP ),
321
    IMPL_TRANSLITERATION_ITEM( ignoreTraditionalKanji_ja_JP ),
322
    IMPL_TRANSLITERATION_ITEM( ignoreZiZu_ja_JP ),
323
    IMPL_TRANSLITERATION_ITEM( largeToSmall_ja_JP ),
324
    IMPL_TRANSLITERATION_ITEM( NumToCharFullwidth ),
325
    IMPL_TRANSLITERATION_ITEM( NumToCharHalfwidth ),
326
    IMPL_TRANSLITERATION_ITEM( NumToCharKanjiShort_ja_JP ),
327
    IMPL_TRANSLITERATION_ITEM( NumToCharKanjiTraditional_ja_JP ),
328
    IMPL_TRANSLITERATION_ITEM( NumToTextFullwidth_ja_JP ),
329
    IMPL_TRANSLITERATION_ITEM( NumToTextKanjiLongModern_ja_JP ),
330
    IMPL_TRANSLITERATION_ITEM( NumToTextKanjiLongTraditional_ja_JP ),
331
    IMPL_TRANSLITERATION_ITEM( NumToTextKanjiShortModern_ja_JP ),
332
    IMPL_TRANSLITERATION_ITEM( NumToTextKanjiShortTraditional_ja_JP ),
333
    IMPL_TRANSLITERATION_ITEM( smallToLarge_ja_JP ),
334
    IMPL_TRANSLITERATION_ITEM( TextToNumKanjiLongModern_ja_JP ),
335
    IMPL_TRANSLITERATION_ITEM( TextToNumKanjiLongTraditional_ja_JP ),
336
#endif
337
338
#if WITH_LOCALE_ALL || WITH_LOCALE_ko
339
    IMPL_TRANSLITERATION_ITEM( NumToCharHangul_ko ),
340
    IMPL_TRANSLITERATION_ITEM( NumToCharLower_ko ),
341
    IMPL_TRANSLITERATION_ITEM( NumToCharUpper_ko ),
342
    IMPL_TRANSLITERATION_ITEM( NumToTextFullwidth_ko ),
343
    IMPL_TRANSLITERATION_ITEM( TextToNumFormalHangul_ko ),
344
    IMPL_TRANSLITERATION_ITEM( TextToNumFormalLower_ko ),
345
    IMPL_TRANSLITERATION_ITEM( TextToNumFormalUpper_ko ),
346
    IMPL_TRANSLITERATION_ITEM( TextToNumInformalHangul_ko ),
347
    IMPL_TRANSLITERATION_ITEM( TextToNumInformalLower_ko ),
348
    IMPL_TRANSLITERATION_ITEM( TextToNumInformalUpper_ko ),
349
#endif
350
351
#if WITH_LOCALE_ALL || WITH_LOCALE_th
352
    IMPL_TRANSLITERATION_ITEM( NumToChar_th ),
353
#endif
354
355
#if WITH_LOCALE_ALL || WITH_LOCALE_zh
356
    IMPL_TRANSLITERATION_ITEM( NumToCharLower_zh_CN ),
357
    IMPL_TRANSLITERATION_ITEM( NumToCharLower_zh_TW ),
358
    IMPL_TRANSLITERATION_ITEM( NumToCharUpper_zh_CN ),
359
    IMPL_TRANSLITERATION_ITEM( NumToCharUpper_zh_TW ),
360
    IMPL_TRANSLITERATION_ITEM( NumToTextDate_zh ),
361
    IMPL_TRANSLITERATION_ITEM( NumToTextDiZi_zh ),
362
    IMPL_TRANSLITERATION_ITEM( NumToTextTianGan_zh ),
363
    IMPL_TRANSLITERATION_ITEM( TextToChuyin_zh_TW ),
364
    IMPL_TRANSLITERATION_ITEM( TextToNumLower_zh_CN ),
365
    IMPL_TRANSLITERATION_ITEM( TextToNumLower_zh_TW ),
366
    IMPL_TRANSLITERATION_ITEM( TextToNumUpper_zh_CN ),
367
    IMPL_TRANSLITERATION_ITEM( TextToNumUpper_zh_TW ),
368
    IMPL_TRANSLITERATION_ITEM( TextToPinyin_zh_CN ),
369
#endif
370
371
    { nullptr, nullptr, nullptr }
372
};
373
374
375
extern "C"
376
{
377
378
SAL_DLLPUBLIC_EXPORT void* i18npool_component_getFactory( const char* sImplementationName, void* _pServiceManager, SAL_UNUSED_PARAMETER void* /*_pRegistryKey*/ )
379
0
{
380
0
    void* pRet = nullptr;
381
382
0
    lang::XMultiServiceFactory* pServiceManager =
383
0
        static_cast< lang::XMultiServiceFactory* >( _pServiceManager );
384
0
    uno::Reference< lang::XSingleServiceFactory > xFactory;
385
386
0
    for( const InstancesArray* pArr = aInstances; pArr->pServiceNm; ++pArr )
387
0
    {
388
0
        if( 0 == rtl_str_compare( sImplementationName, pArr->pImplementationNm ) )
389
0
        {
390
0
            uno::Sequence< OUString > aServiceNames {
391
0
                OUString::createFromAscii( pArr->pServiceNm ) };
392
0
            xFactory = ::cppu::createSingleFactory(
393
0
                    pServiceManager,
394
0
                    OUString::createFromAscii( pArr->pImplementationNm ),
395
0
                    *pArr->pFn, aServiceNames );
396
0
            break;
397
0
        }
398
0
    }
399
400
0
    if ( xFactory.is() )
401
0
    {
402
0
        xFactory->acquire();
403
0
        pRet = xFactory.get();
404
0
    }
405
406
0
    return pRet;
407
0
}
408
409
}   // "C"
410
411
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */