summaryrefslogtreecommitdiffstats
path: root/include/i18nutil/transliteration.hxx
blob: 7de57599954cc048509baef02afcc153087dcc49 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*
 * This file is part of the LibreOffice project.
 *
 * This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
 *
 * This file incorporates work covered by the following license notice:
 *
 *   Licensed to the Apache Software Foundation (ASF) under one or more
 *   contributor license agreements. See the NOTICE file distributed
 *   with this work for additional information regarding copyright
 *   ownership. The ASF licenses this file to you under the Apache
 *   License, Version 2.0 (the "License"); you may not use this file
 *   except in compliance with the License. You may obtain a copy of
 *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
 */
#ifndef INCLUDED_I18NUTIL_TRANSLITERATION_HXX
#define INCLUDED_I18NUTIL_TRANSLITERATION_HXX

#include <com/sun/star/i18n/TransliterationModules.hpp>
#include <com/sun/star/i18n/TransliterationModulesExtra.hpp>
#include <o3tl/typed_flags_set.hxx>

/**
 * This is a superset type of the com::sun::star::i18n::TransliterationModules and TransliterationModulesExtra,
 *  with some extra type checking
 */
enum class TransliterationFlags {
    NONE                           = 0,
    /// Transliterate a string from upper case to lower case
    UPPERCASE_LOWERCASE            = int(css::i18n::TransliterationModules_UPPERCASE_LOWERCASE),
    /// Transliterate a string from lower case to upper case
    LOWERCASE_UPPERCASE            = int(css::i18n::TransliterationModules_LOWERCASE_UPPERCASE),
    /// Transliterate a string from half width character to full width character
    HALFWIDTH_FULLWIDTH            = int(css::i18n::TransliterationModules_HALFWIDTH_FULLWIDTH),
    /// Transliterate a string from full width character to half width character
    FULLWIDTH_HALFWIDTH            = int(css::i18n::TransliterationModules_FULLWIDTH_HALFWIDTH),
    /// Transliterate a Japanese string from Katakana to Hiragana
    KATAKANA_HIRAGANA              = int(css::i18n::TransliterationModules_KATAKANA_HIRAGANA),
    /// Transliterate a Japanese string from Hiragana to Katakana
    HIRAGANA_KATAKANA              = int(css::i18n::TransliterationModules_HIRAGANA_KATAKANA),
    /// Transliterate an ASCII number string to Simplified Chinese lower case number string in spellout format
    NumToTextLower_zh_CN           = int(css::i18n::TransliterationModules_NumToTextLower_zh_CN),
    /// Transliterate an ASCII number string to Simplified Chinese upper case number string in spellout format
    NumToTextUpper_zh_CN           = int(css::i18n::TransliterationModules_NumToTextUpper_zh_CN),
    /// Transliterate an ASCII number string to Traditional Chinese lower case number string in spellout format
    NumToTextLower_zh_TW           = int(css::i18n::TransliterationModules_NumToTextLower_zh_TW),
    /// Transliterate an ASCII number string to Traditional Chinese upper case number string in spellout format
    NumToTextUpper_zh_TW           = int(css::i18n::TransliterationModules_NumToTextUpper_zh_TW),
    /// Transliterate an ASCII number string to formal Korean Hangul number string in spellout format
    NumToTextFormalHangul_ko       = int(css::i18n::TransliterationModules_NumToTextFormalHangul_ko),
    /// Transliterate an ASCII number string to formal Korean Hanja lower case number string in spellout format
    NumToTextFormalLower_ko        = int(css::i18n::TransliterationModules_NumToTextFormalLower_ko),
    /// Transliterate an ASCII number string to formal Korean Hanja upper case number string in spellout format
    NumToTextFormalUpper_ko        = int(css::i18n::TransliterationModules_NumToTextFormalUpper_ko),

    /** The first character of the sentence is put in upper case
     */
    SENTENCE_CASE                  = int(css::i18n::TransliterationModulesExtra::SENTENCE_CASE),


    /** The first character of the word is put in upper case.
     * This one is part
     */
    TITLE_CASE                     = int(css::i18n::TransliterationModulesExtra::TITLE_CASE),


    /** All characters of the word are to change their case from small letters
     * to capital letters and vice versa.
     */
    TOGGLE_CASE                    = int(css::i18n::TransliterationModulesExtra::TOGGLE_CASE),

    NON_IGNORE_MASK                = int(css::i18n::TransliterationModules_NON_IGNORE_MASK),
    IGNORE_MASK                    = 0x7fffff00,

    /// Ignore case when comparing strings by transliteration service
    IGNORE_CASE                    = int(css::i18n::TransliterationModules_IGNORE_CASE),
    /// Ignore Hiragana and Katakana when comparing strings by transliteration service
    IGNORE_KANA                    = int(css::i18n::TransliterationModules_IGNORE_KANA), // ja_JP
    /// Ignore full width and half width character when comparing strings by transliteration service
    IGNORE_WIDTH                   = int(css::i18n::TransliterationModules_IGNORE_WIDTH), // ja_JP
    /// Ignore Japanese traditional Kanji character in Japanese fuzzy search
    ignoreTraditionalKanji_ja_JP   = int(css::i18n::TransliterationModules_IgnoreTraditionalKanji_ja_JP),
    /// Ignore Japanese traditional Katakana and Hiragana character in Japanese fuzzy search
    ignoreTraditionalKana_ja_JP    = int(css::i18n::TransliterationModules_IgnoreTraditionalKana_ja_JP),
    /// Ignore dash or minus sign in Japanese fuzzy search
    ignoreMinusSign_ja_JP          = int(css::i18n::TransliterationModules_IgnoreMinusSign_ja_JP),
    /// Ignore Hiragana and Katakana iteration mark in Japanese fuzzy search
    ignoreIterationMark_ja_JP      = int(css::i18n::TransliterationModules_IgnoreIterationMark_ja_JP),
    /// Ignore separator punctuations in Japanese fuzzy search
    ignoreSeparator_ja_JP          = int(css::i18n::TransliterationModules_IgnoreSeparator_ja_JP),
    /// Ignore Katakana and Hiragana Zi/Zi and Zu/Zu  in Japanese fuzzy search
    ignoreZiZu_ja_JP               = int(css::i18n::TransliterationModules_IgnoreZiZu_ja_JP),
    /// Ignore Katakana and Hiragana Ba/Gua and Ha/Fa in Japanese fuzzy search
    ignoreBaFa_ja_JP               = int(css::i18n::TransliterationModules_IgnoreBaFa_ja_JP),
    /// Ignore Katakana and Hiragana Tsui/Tea/Ti and Dyi/Ji in Japanese fuzzy search
    ignoreTiJi_ja_JP               = int(css::i18n::TransliterationModules_IgnoreTiJi_ja_JP),
    /// Ignore Katakana and Hiragana Hyu/Fyu and Byu/Gyu in Japanese fuzzy search
    ignoreHyuByu_ja_JP             = int(css::i18n::TransliterationModules_IgnoreHyuByu_ja_JP),
    /// Ignore Katakana and Hiragana Se/Sye and Ze/Je in Japanese fuzzy search
    ignoreSeZe_ja_JP               = int(css::i18n::TransliterationModules_IgnoreSeZe_ja_JP),
    /// Ignore Katakana YA/A which follows the character in either I or E row in Japanese fuzzy search
    ignoreIandEfollowedByYa_ja_JP  = int(css::i18n::TransliterationModules_IgnoreIandEfollowedByYa_ja_JP),
    /// Ignore Katakana KI/KU which follows the character in SA column in Japanese fuzzy search
    ignoreKiKuFollowedBySa_ja_JP   = int(css::i18n::TransliterationModules_IgnoreKiKuFollowedBySa_ja_JP),
    /// Ignore Japanese normal and small sized character in Japanese fuzzy search
    ignoreSize_ja_JP               = int(css::i18n::TransliterationModules_IgnoreSize_ja_JP),
    /// Ignore Japanese prolonged sound mark in Japanese fuzzy search
    ignoreProlongedSoundMark_ja_JP = int(css::i18n::TransliterationModules_IgnoreProlongedSoundMark_ja_JP),
    /// Ignore middle dot in Japanese fuzzy search
    ignoreMiddleDot_ja_JP          = int(css::i18n::TransliterationModules_IgnoreMiddleDot_ja_JP),
    /// Ignore white space characters, include space, TAB, return, etc. in Japanese fuzzy search
    ignoreSpace_ja_JP              = int(css::i18n::TransliterationModules_IgnoreSpace_ja_JP),
    /// transliterate Japanese small sized character to normal sized character
    smallToLarge_ja_JP             = int(css::i18n::TransliterationModules_SmallToLarge_ja_JP),
    /// transliterate Japanese normal sized character to small sized character
    largeToSmall_ja_JP             = int(css::i18n::TransliterationModules_LargeToSmall_ja_JP),

    /// Transliterate decomposing and removing diacritics, not only CTL, despite its name.
    IGNORE_DIACRITICS_CTL          = int(css::i18n::TransliterationModulesExtra::IGNORE_DIACRITICS_CTL),
    /// Ignore Kashida mark.
    IGNORE_KASHIDA_CTL             = int(css::i18n::TransliterationModulesExtra::IGNORE_KASHIDA_CTL)
};
namespace o3tl {
    template<> struct typed_flags<TransliterationFlags> : is_typed_flags<TransliterationFlags, 0x7fffffff> {};
}


#endif

/* vim:set shiftwidth=4 softtabstop=4 expandtab: */