Branch data Line data Source code
1 : : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 : : /*
3 : : * Version: MPL 1.1 / GPLv3+ / LGPLv3+
4 : : *
5 : : * The contents of this file are subject to the Mozilla Public License Version
6 : : * 1.1 (the "License"); you may not use this file except in compliance with
7 : : * the License or as specified alternatively below. You may obtain a copy of
8 : : * the License at http://www.mozilla.org/MPL/
9 : : *
10 : : * Software distributed under the License is distributed on an "AS IS" basis,
11 : : * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
12 : : * for the specific language governing rights and limitations under the
13 : : * License.
14 : : *
15 : : * Major Contributor(s):
16 : : * Copyright (C) 2012 Kohei Yoshida <kohei.yoshida@suse.com>
17 : : *
18 : : * All Rights Reserved.
19 : : *
20 : : * For minor contributions see the git repository.
21 : : *
22 : : * Alternatively, the contents of this file may be used under the terms of
23 : : * either the GNU General Public License Version 3 or later (the "GPLv3+"), or
24 : : * the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"),
25 : : * in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable
26 : : * instead of those above.
27 : : */
28 : :
29 : : #include "typedstrdata.hxx"
30 : : #include "global.hxx"
31 : :
32 : : #include "unotools/transliterationwrapper.hxx"
33 : :
34 : 0 : bool ScTypedStrData::LessCaseSensitive::operator() (const ScTypedStrData& left, const ScTypedStrData& right) const
35 : : {
36 [ # # ]: 0 : if (left.meStrType != right.meStrType)
37 : 0 : return left.meStrType < right.meStrType;
38 : :
39 [ # # ]: 0 : if (left.meStrType == Value)
40 : 0 : return left.mfValue < right.mfValue;
41 : :
42 : : return ScGlobal::GetCaseTransliteration()->compareString(
43 [ # # ][ # # ]: 0 : left.maStrValue, right.maStrValue) < 0;
[ # # ][ # # ]
44 : : }
45 : :
46 : 0 : bool ScTypedStrData::LessCaseInsensitive::operator() (const ScTypedStrData& left, const ScTypedStrData& right) const
47 : : {
48 [ # # ]: 0 : if (left.meStrType != right.meStrType)
49 : 0 : return left.meStrType < right.meStrType;
50 : :
51 [ # # ]: 0 : if (left.meStrType == Value)
52 : 0 : return left.mfValue < right.mfValue;
53 : :
54 : : return ScGlobal::GetpTransliteration()->compareString(
55 [ # # ][ # # ]: 0 : left.maStrValue, right.maStrValue) < 0;
[ # # ][ # # ]
56 : : }
57 : :
58 : 0 : bool ScTypedStrData::EqualCaseSensitive::operator() (const ScTypedStrData& left, const ScTypedStrData& right) const
59 : : {
60 [ # # ]: 0 : if (left.meStrType != right.meStrType)
61 : 0 : return false;
62 : :
63 [ # # ][ # # ]: 0 : if (left.meStrType == Value && left.mfValue != right.mfValue)
64 : 0 : return false;
65 : :
66 : : return ScGlobal::GetCaseTransliteration()->compareString(
67 [ # # ][ # # ]: 0 : left.maStrValue, right.maStrValue) == 0;
[ # # ][ # # ]
68 : : }
69 : :
70 : 0 : bool ScTypedStrData::EqualCaseInsensitive::operator() (const ScTypedStrData& left, const ScTypedStrData& right) const
71 : : {
72 [ # # ]: 0 : if (left.meStrType != right.meStrType)
73 : 0 : return false;
74 : :
75 [ # # ][ # # ]: 0 : if (left.meStrType == Value && left.mfValue != right.mfValue)
76 : 0 : return false;
77 : :
78 : : return ScGlobal::GetpTransliteration()->compareString(
79 [ # # ][ # # ]: 0 : left.maStrValue, right.maStrValue) == 0;
[ # # ][ # # ]
80 : : }
81 : :
82 : 0 : bool ScTypedStrData::operator== (const ScTypedStrData& r) const
83 : : {
84 : : // Case insensitive comparison by default.
85 : : EqualCaseInsensitive aHdl;
86 [ # # ]: 0 : return aHdl(*this, r);
87 : : }
88 : :
89 : 0 : bool ScTypedStrData::operator< (const ScTypedStrData& r) const
90 : : {
91 : : // Case insensitive comparison by default.
92 : : LessCaseInsensitive aHdl;
93 [ # # ]: 0 : return aHdl(*this, r);
94 : : }
95 : :
96 : 0 : ScTypedStrData::ScTypedStrData(
97 : : const rtl::OUString& rStr, double nVal, StringType nType ) :
98 : : maStrValue(rStr),
99 : : mfValue(nVal),
100 : 0 : meStrType(nType) {}
101 : :
102 : 0 : ScTypedStrData::ScTypedStrData( const ScTypedStrData& rCpy ) :
103 : : maStrValue(rCpy.maStrValue),
104 : : mfValue(rCpy.mfValue),
105 : 0 : meStrType(rCpy.meStrType) {}
106 : :
107 : 0 : bool ScTypedStrData::IsStrData() const
108 : : {
109 : 0 : return meStrType != Value;
110 : : }
111 : :
112 : 0 : const rtl::OUString& ScTypedStrData::GetString() const
113 : : {
114 : 0 : return maStrValue;
115 : : }
116 : :
117 : 0 : ScTypedStrData::StringType ScTypedStrData::GetStringType() const
118 : : {
119 : 0 : return meStrType;
120 : : }
121 : :
122 : 0 : FindTypedStrData::FindTypedStrData(const ScTypedStrData& rVal, bool bCaseSens) :
123 : 0 : maVal(rVal), mbCaseSens(bCaseSens) {}
124 : :
125 : 0 : bool FindTypedStrData::operator() (const ScTypedStrData& r) const
126 : : {
127 [ # # ]: 0 : if (mbCaseSens)
128 : : {
129 : : ScTypedStrData::EqualCaseSensitive aHdl;
130 [ # # ]: 0 : return aHdl(maVal, r);
131 : : }
132 : : else
133 : : {
134 : : ScTypedStrData::EqualCaseInsensitive aHdl;
135 [ # # ]: 0 : return aHdl(maVal, r);
136 : : }
137 : : }
138 : :
139 : : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|