LibreOffice Module i18nutil (master)
1
include
i18nutil
oneToOneMapping.hxx
Go to the documentation of this file.
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_ONETOONEMAPPING_HXX
20
#define INCLUDED_I18NUTIL_ONETOONEMAPPING_HXX
21
22
#include <
i18nutil/i18nutildllapi.h
>
23
#include <memory>
24
#include <config_options.h>
25
26
namespace
i18nutil
{
27
28
struct
OneToOneMappingTable_t
29
{
30
sal_Unicode
first
;
31
sal_Unicode
second
;
32
};
33
34
typedef
sal_Int8
UnicodePairFlag
;
35
struct
UnicodePairWithFlag
36
{
37
sal_Unicode
first
;
38
sal_Unicode
second
;
39
UnicodePairFlag
flag
;
40
};
41
42
class
UNLESS_MERGELIBS(I18NUTIL_DLLPUBLIC) oneToOneMapping
43
{
44
private
:
45
oneToOneMapping(
const
oneToOneMapping&) =
delete
;
46
oneToOneMapping& operator=(
const
oneToOneMapping&) =
delete
;
47
public
:
48
oneToOneMapping(
OneToOneMappingTable_t
const
*rpTable,
const
size_t
rnSize,
const
size_t
rnUnitSize =
sizeof
(
OneToOneMappingTable_t
) );
49
virtual
~oneToOneMapping();
50
51
// binary search
52
virtual
sal_Unicode
find
(
const
sal_Unicode
nKey )
const
;
53
54
// translator
55
sal_Unicode
operator[] (
const
sal_Unicode
nKey )
const
{
return
find
( nKey ); };
56
57
protected
:
58
OneToOneMappingTable_t
const
*mpTable;
59
size_t
mnSize
;
60
};
61
62
class
oneToOneMappingWithFlag
final :
public
oneToOneMapping
63
{
64
private
:
65
oneToOneMappingWithFlag
(
const
oneToOneMappingWithFlag
&) =
delete
;
66
oneToOneMappingWithFlag
&
operator=
(
const
oneToOneMappingWithFlag
&) =
delete
;
67
68
friend
class
widthfolding;
69
70
public
:
71
oneToOneMappingWithFlag
(
UnicodePairWithFlag
const
*rpTableWF,
const
size_t
rnSize,
const
UnicodePairFlag
rnFlag );
72
virtual
~oneToOneMappingWithFlag
()
override
;
73
74
// make index for fast search
75
void
makeIndex();
76
77
// index search
78
virtual
sal_Unicode
find
(
const
sal_Unicode
nKey )
const override
;
79
private
:
80
UnicodePairWithFlag
const
*
mpTableWF
;
81
UnicodePairFlag
mnFlag
;
82
std::unique_ptr<UnicodePairWithFlag const *[]> mpIndex[256];
83
bool
mbHasIndex
;
84
};
85
86
}
87
88
#endif
// _I18N_TRANSLITERATION_ONETOONEMAPPING_HXX_
89
90
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
i18nutil::oneToOneMappingWithFlag
Definition:
oneToOneMapping.hxx:63
i18nutil::oneToOneMappingWithFlag::mnFlag
UnicodePairFlag mnFlag
Definition:
oneToOneMapping.hxx:81
i18nutil::oneToOneMappingWithFlag::mpTableWF
UnicodePairWithFlag const * mpTableWF
Definition:
oneToOneMapping.hxx:80
i18nutil::oneToOneMappingWithFlag::oneToOneMappingWithFlag
oneToOneMappingWithFlag(const oneToOneMappingWithFlag &)=delete
i18nutil::oneToOneMappingWithFlag::operator=
oneToOneMappingWithFlag & operator=(const oneToOneMappingWithFlag &)=delete
i18nutil::oneToOneMappingWithFlag::mbHasIndex
bool mbHasIndex
Definition:
oneToOneMapping.hxx:83
mnSize
sal_uInt32 mnSize
i18nutildllapi.h
find
OSQLColumns::const_iterator find(const OSQLColumns::const_iterator &first, const OSQLColumns::const_iterator &last, std::u16string_view _rVal, const ::comphelper::UStringMixEqual &_rCase)
i18nutil
i18nutil::UnicodePairFlag
sal_Int8 UnicodePairFlag
Definition:
oneToOneMapping.hxx:34
i18nutil::OneToOneMappingTable_t
Definition:
oneToOneMapping.hxx:29
i18nutil::OneToOneMappingTable_t::first
sal_Unicode first
Definition:
oneToOneMapping.hxx:30
i18nutil::OneToOneMappingTable_t::second
sal_Unicode second
Definition:
oneToOneMapping.hxx:31
i18nutil::UnicodePairWithFlag
Definition:
oneToOneMapping.hxx:36
i18nutil::UnicodePairWithFlag::flag
UnicodePairFlag flag
Definition:
oneToOneMapping.hxx:39
i18nutil::UnicodePairWithFlag::second
sal_Unicode second
Definition:
oneToOneMapping.hxx:38
i18nutil::UnicodePairWithFlag::first
sal_Unicode first
Definition:
oneToOneMapping.hxx:37
sal_Unicode
sal_uInt16 sal_Unicode
sal_Int8
signed char sal_Int8
Generated on Sun Jul 30 2023 04:26:31 for LibreOffice Module i18nutil (master) by
1.9.3