xref: /core/include/i18nutil/transliteration.hxx (revision 04af4e4f)
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 #ifndef INCLUDED_I18NUTIL_TRANSLITERATION_HXX
20 #define INCLUDED_I18NUTIL_TRANSLITERATION_HXX
21 
22 #include <com/sun/star/i18n/TransliterationModules.hpp>
23 #include <com/sun/star/i18n/TransliterationModulesExtra.hpp>
24 #include <o3tl/typed_flags_set.hxx>
25 
26 /**
27  * This is a superset type of the com::sun::star::i18n::TransliterationModules and TransliterationModulesExtra,
28  *  with some extra type checking
29  */
30 enum class TransliterationFlags {
31     NONE                           = 0,
32     /// Transliterate a string from upper case to lower case
33     UPPERCASE_LOWERCASE            = int(css::i18n::TransliterationModules_UPPERCASE_LOWERCASE),
34     /// Transliterate a string from lower case to upper case
35     LOWERCASE_UPPERCASE            = int(css::i18n::TransliterationModules_LOWERCASE_UPPERCASE),
36     /// Transliterate a string from half width character to full width character
37     HALFWIDTH_FULLWIDTH            = int(css::i18n::TransliterationModules_HALFWIDTH_FULLWIDTH),
38     /// Transliterate a string from full width character to half width character
39     FULLWIDTH_HALFWIDTH            = int(css::i18n::TransliterationModules_FULLWIDTH_HALFWIDTH),
40     /// Transliterate a Japanese string from Katakana to Hiragana
41     KATAKANA_HIRAGANA              = int(css::i18n::TransliterationModules_KATAKANA_HIRAGANA),
42     /// Transliterate a Japanese string from Hiragana to Katakana
43     HIRAGANA_KATAKANA              = int(css::i18n::TransliterationModules_HIRAGANA_KATAKANA),
44     /// Transliterate an ASCII number string to Simplified Chinese lower case number string in spellout format
45     NumToTextLower_zh_CN           = int(css::i18n::TransliterationModules_NumToTextLower_zh_CN),
46     /// Transliterate an ASCII number string to Simplified Chinese upper case number string in spellout format
47     NumToTextUpper_zh_CN           = int(css::i18n::TransliterationModules_NumToTextUpper_zh_CN),
48     /// Transliterate an ASCII number string to Traditional Chinese lower case number string in spellout format
49     NumToTextLower_zh_TW           = int(css::i18n::TransliterationModules_NumToTextLower_zh_TW),
50     /// Transliterate an ASCII number string to Traditional Chinese upper case number string in spellout format
51     NumToTextUpper_zh_TW           = int(css::i18n::TransliterationModules_NumToTextUpper_zh_TW),
52     /// Transliterate an ASCII number string to formal Korean Hangul number string in spellout format
53     NumToTextFormalHangul_ko       = int(css::i18n::TransliterationModules_NumToTextFormalHangul_ko),
54     /// Transliterate an ASCII number string to formal Korean Hanja lower case number string in spellout format
55     NumToTextFormalLower_ko        = int(css::i18n::TransliterationModules_NumToTextFormalLower_ko),
56     /// Transliterate an ASCII number string to formal Korean Hanja upper case number string in spellout format
57     NumToTextFormalUpper_ko        = int(css::i18n::TransliterationModules_NumToTextFormalUpper_ko),
58 
59     /** The first character of the sentence is put in upper case
60      */
61     SENTENCE_CASE                  = int(css::i18n::TransliterationModulesExtra::SENTENCE_CASE),
62 
63 
64     /** The first character of the word is put in upper case.
65      * This one is part
66      */
67     TITLE_CASE                     = int(css::i18n::TransliterationModulesExtra::TITLE_CASE),
68 
69 
70     /** All characters of the word are to change their case from small letters
71      * to capital letters and vice versa.
72      */
73     TOGGLE_CASE                    = int(css::i18n::TransliterationModulesExtra::TOGGLE_CASE),
74 
75     NON_IGNORE_MASK                = int(css::i18n::TransliterationModules_NON_IGNORE_MASK),
76     IGNORE_MASK                    = 0x7fffff00,
77 
78     /// Ignore case when comparing strings by transliteration service
79     IGNORE_CASE                    = int(css::i18n::TransliterationModules_IGNORE_CASE),
80     /// Ignore Hiragana and Katakana when comparing strings by transliteration service
81     IGNORE_KANA                    = int(css::i18n::TransliterationModules_IGNORE_KANA), // ja_JP
82     /// Ignore full width and half width character when comparing strings by transliteration service
83     IGNORE_WIDTH                   = int(css::i18n::TransliterationModules_IGNORE_WIDTH), // ja_JP
84     /// Ignore Japanese traditional Kanji character in Japanese fuzzy search
85     ignoreTraditionalKanji_ja_JP   = int(css::i18n::TransliterationModules_IgnoreTraditionalKanji_ja_JP),
86     /// Ignore Japanese traditional Katakana and Hiragana character in Japanese fuzzy search
87     ignoreTraditionalKana_ja_JP    = int(css::i18n::TransliterationModules_IgnoreTraditionalKana_ja_JP),
88     /// Ignore dash or minus sign in Japanese fuzzy search
89     ignoreMinusSign_ja_JP          = int(css::i18n::TransliterationModules_IgnoreMinusSign_ja_JP),
90     /// Ignore Hiragana and Katakana iteration mark in Japanese fuzzy search
91     ignoreIterationMark_ja_JP      = int(css::i18n::TransliterationModules_IgnoreIterationMark_ja_JP),
92     /// Ignore separator punctuations in Japanese fuzzy search
93     ignoreSeparator_ja_JP          = int(css::i18n::TransliterationModules_IgnoreSeparator_ja_JP),
94     /// Ignore Katakana and Hiragana Zi/Zi and Zu/Zu  in Japanese fuzzy search
95     ignoreZiZu_ja_JP               = int(css::i18n::TransliterationModules_IgnoreZiZu_ja_JP),
96     /// Ignore Katakana and Hiragana Ba/Gua and Ha/Fa in Japanese fuzzy search
97     ignoreBaFa_ja_JP               = int(css::i18n::TransliterationModules_IgnoreBaFa_ja_JP),
98     /// Ignore Katakana and Hiragana Tsui/Tea/Ti and Dyi/Ji in Japanese fuzzy search
99     ignoreTiJi_ja_JP               = int(css::i18n::TransliterationModules_IgnoreTiJi_ja_JP),
100     /// Ignore Katakana and Hiragana Hyu/Fyu and Byu/Gyu in Japanese fuzzy search
101     ignoreHyuByu_ja_JP             = int(css::i18n::TransliterationModules_IgnoreHyuByu_ja_JP),
102     /// Ignore Katakana and Hiragana Se/Sye and Ze/Je in Japanese fuzzy search
103     ignoreSeZe_ja_JP               = int(css::i18n::TransliterationModules_IgnoreSeZe_ja_JP),
104     /// Ignore Katakana YA/A which follows the character in either I or E row in Japanese fuzzy search
105     ignoreIandEfollowedByYa_ja_JP  = int(css::i18n::TransliterationModules_IgnoreIandEfollowedByYa_ja_JP),
106     /// Ignore Katakana KI/KU which follows the character in SA column in Japanese fuzzy search
107     ignoreKiKuFollowedBySa_ja_JP   = int(css::i18n::TransliterationModules_IgnoreKiKuFollowedBySa_ja_JP),
108     /// Ignore Japanese normal and small sized character in Japanese fuzzy search
109     ignoreSize_ja_JP               = int(css::i18n::TransliterationModules_IgnoreSize_ja_JP),
110     /// Ignore Japanese prolonged sound mark in Japanese fuzzy search
111     ignoreProlongedSoundMark_ja_JP = int(css::i18n::TransliterationModules_IgnoreProlongedSoundMark_ja_JP),
112     /// Ignore middle dot in Japanese fuzzy search
113     ignoreMiddleDot_ja_JP          = int(css::i18n::TransliterationModules_IgnoreMiddleDot_ja_JP),
114     /// Ignore white space characters, include space, TAB, return, etc. in Japanese fuzzy search
115     ignoreSpace_ja_JP              = int(css::i18n::TransliterationModules_IgnoreSpace_ja_JP),
116     /// transliterate Japanese small sized character to normal sized character
117     smallToLarge_ja_JP             = int(css::i18n::TransliterationModules_SmallToLarge_ja_JP),
118     /// transliterate Japanese normal sized character to small sized character
119     largeToSmall_ja_JP             = int(css::i18n::TransliterationModules_LargeToSmall_ja_JP),
120 
121     /// Transliterate decomposing and removing diacritics, not only CTL, despite its name.
122     IGNORE_DIACRITICS_CTL          = int(css::i18n::TransliterationModulesExtra::IGNORE_DIACRITICS_CTL),
123     /// Ignore Kashida mark.
124     IGNORE_KASHIDA_CTL             = int(css::i18n::TransliterationModulesExtra::IGNORE_KASHIDA_CTL)
125 };
126 namespace o3tl {
127     template<> struct typed_flags<TransliterationFlags> : is_typed_flags<TransliterationFlags, 0x7fffffff> {};
128 }
129 
130 
131 #endif
132 
133 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
134