File: | comphelper/source/misc/types.cxx |
Location: | line 465, column 5 |
Description: | Access to field 'pType' results in a dereference of a null pointer (loaded from variable 'pSequenceTD') |
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 <comphelper/types.hxx> | |||||
21 | #include <comphelper/extract.hxx> | |||||
22 | #include <com/sun/star/util/Date.hpp> | |||||
23 | #include <com/sun/star/util/Time.hpp> | |||||
24 | #include <com/sun/star/util/DateTime.hpp> | |||||
25 | #include <com/sun/star/awt/FontUnderline.hpp> | |||||
26 | #include <com/sun/star/awt/FontStrikeout.hpp> | |||||
27 | #include <com/sun/star/awt/FontDescriptor.hpp> | |||||
28 | #include <osl/diagnose.h> | |||||
29 | #include <typelib/typedescription.hxx> | |||||
30 | ||||||
31 | #include <memory.h> | |||||
32 | ||||||
33 | ||||||
34 | //......................................................................... | |||||
35 | namespace comphelper | |||||
36 | { | |||||
37 | //......................................................................... | |||||
38 | ||||||
39 | using namespace ::com::sun::star::uno; | |||||
40 | using namespace ::com::sun::star::awt; | |||||
41 | using namespace ::com::sun::star::util; | |||||
42 | using namespace ::com::sun::star::lang; | |||||
43 | ||||||
44 | //------------------------------------------------------------------------- | |||||
45 | sal_Bool operator ==(const DateTime& _rLeft, const DateTime& _rRight) | |||||
46 | { | |||||
47 | return ( _rLeft.HundredthSeconds == _rRight.HundredthSeconds) && | |||||
48 | ( _rLeft.Seconds == _rRight.Seconds) && | |||||
49 | ( _rLeft.Minutes == _rRight.Minutes) && | |||||
50 | ( _rLeft.Hours == _rRight.Hours) && | |||||
51 | ( _rLeft.Day == _rRight.Day) && | |||||
52 | ( _rLeft.Month == _rRight.Month) && | |||||
53 | ( _rLeft.Year == _rRight.Year) ; | |||||
54 | } | |||||
55 | ||||||
56 | //------------------------------------------------------------------------- | |||||
57 | sal_Bool operator ==(const Date& _rLeft, const Date& _rRight) | |||||
58 | { | |||||
59 | return ( _rLeft.Day == _rRight.Day) && | |||||
60 | ( _rLeft.Month == _rRight.Month) && | |||||
61 | ( _rLeft.Year == _rRight.Year) ; | |||||
62 | } | |||||
63 | ||||||
64 | //------------------------------------------------------------------------- | |||||
65 | sal_Bool operator ==(const Time& _rLeft, const Time& _rRight) | |||||
66 | { | |||||
67 | return ( _rLeft.HundredthSeconds == _rRight.HundredthSeconds) && | |||||
68 | ( _rLeft.Seconds == _rRight.Seconds) && | |||||
69 | ( _rLeft.Minutes == _rRight.Minutes) && | |||||
70 | ( _rLeft.Hours == _rRight.Hours) ; | |||||
71 | } | |||||
72 | ||||||
73 | //------------------------------------------------------------------------------ | |||||
74 | sal_Int64 getINT64(const Any& _rAny) | |||||
75 | { | |||||
76 | sal_Int64 nReturn = 0; | |||||
77 | OSL_VERIFY( _rAny >>= nReturn )do { if (!(_rAny >>= nReturn)) do { if (true && (!(0))) { sal_detail_logFormat((SAL_DETAIL_LOG_LEVEL_WARN), ( "legacy.osl"), ("/usr/local/src/libreoffice/comphelper/source/misc/types.cxx" ":" "77" ": "), "OSL_ASSERT: %s", "0"); } } while (false); } while (0); | |||||
78 | return nReturn; | |||||
79 | } | |||||
80 | ||||||
81 | //------------------------------------------------------------------------------ | |||||
82 | sal_Int32 getINT32(const Any& _rAny) | |||||
83 | { | |||||
84 | sal_Int32 nReturn = 0; | |||||
85 | OSL_VERIFY( _rAny >>= nReturn )do { if (!(_rAny >>= nReturn)) do { if (true && (!(0))) { sal_detail_logFormat((SAL_DETAIL_LOG_LEVEL_WARN), ( "legacy.osl"), ("/usr/local/src/libreoffice/comphelper/source/misc/types.cxx" ":" "85" ": "), "OSL_ASSERT: %s", "0"); } } while (false); } while (0); | |||||
86 | return nReturn; | |||||
87 | } | |||||
88 | ||||||
89 | //------------------------------------------------------------------------------ | |||||
90 | sal_Int16 getINT16(const Any& _rAny) | |||||
91 | { | |||||
92 | sal_Int16 nReturn = 0; | |||||
93 | OSL_VERIFY( _rAny >>= nReturn )do { if (!(_rAny >>= nReturn)) do { if (true && (!(0))) { sal_detail_logFormat((SAL_DETAIL_LOG_LEVEL_WARN), ( "legacy.osl"), ("/usr/local/src/libreoffice/comphelper/source/misc/types.cxx" ":" "93" ": "), "OSL_ASSERT: %s", "0"); } } while (false); } while (0); | |||||
94 | return nReturn; | |||||
95 | } | |||||
96 | ||||||
97 | //------------------------------------------------------------------------------ | |||||
98 | double getDouble(const Any& _rAny) | |||||
99 | { | |||||
100 | double nReturn = 0.0; | |||||
101 | OSL_VERIFY( _rAny >>= nReturn )do { if (!(_rAny >>= nReturn)) do { if (true && (!(0))) { sal_detail_logFormat((SAL_DETAIL_LOG_LEVEL_WARN), ( "legacy.osl"), ("/usr/local/src/libreoffice/comphelper/source/misc/types.cxx" ":" "101" ": "), "OSL_ASSERT: %s", "0"); } } while (false); } while (0); | |||||
102 | return nReturn; | |||||
103 | } | |||||
104 | ||||||
105 | //------------------------------------------------------------------------------ | |||||
106 | float getFloat(const Any& _rAny) | |||||
107 | { | |||||
108 | float nReturn = 0.0; | |||||
109 | OSL_VERIFY( _rAny >>= nReturn )do { if (!(_rAny >>= nReturn)) do { if (true && (!(0))) { sal_detail_logFormat((SAL_DETAIL_LOG_LEVEL_WARN), ( "legacy.osl"), ("/usr/local/src/libreoffice/comphelper/source/misc/types.cxx" ":" "109" ": "), "OSL_ASSERT: %s", "0"); } } while (false); } while (0); | |||||
110 | return nReturn; | |||||
111 | } | |||||
112 | ||||||
113 | //------------------------------------------------------------------------------ | |||||
114 | ::rtl::OUString getString(const Any& _rAny) | |||||
115 | { | |||||
116 | ::rtl::OUString nReturn; | |||||
117 | OSL_VERIFY( _rAny >>= nReturn )do { if (!(_rAny >>= nReturn)) do { if (true && (!(0))) { sal_detail_logFormat((SAL_DETAIL_LOG_LEVEL_WARN), ( "legacy.osl"), ("/usr/local/src/libreoffice/comphelper/source/misc/types.cxx" ":" "117" ": "), "OSL_ASSERT: %s", "0"); } } while (false); } while (0); | |||||
118 | return nReturn; | |||||
119 | } | |||||
120 | ||||||
121 | //------------------------------------------------------------------------------ | |||||
122 | sal_Bool getBOOL(const Any& _rAny) | |||||
123 | { | |||||
124 | sal_Bool nReturn = sal_False((sal_Bool)0); | |||||
125 | if (_rAny.getValueType() == ::getCppuBooleanType()) | |||||
126 | nReturn = *(sal_Bool*)_rAny.getValue(); | |||||
127 | else | |||||
128 | OSL_FAIL("comphelper::getBOOL : invalid argument !")do { if (true && (((sal_Bool)1))) { sal_detail_logFormat ((SAL_DETAIL_LOG_LEVEL_WARN), ("legacy.osl"), ("/usr/local/src/libreoffice/comphelper/source/misc/types.cxx" ":" "128" ": "), "%s", "comphelper::getBOOL : invalid argument !" ); } } while (false); | |||||
129 | return nReturn; | |||||
130 | } | |||||
131 | ||||||
132 | //------------------------------------------------------------------------------ | |||||
133 | sal_Int32 getEnumAsINT32(const Any& _rAny) throw(IllegalArgumentException) | |||||
134 | { | |||||
135 | sal_Int32 nReturn = 0; | |||||
136 | if (! ::cppu::enum2int(nReturn,_rAny) ) | |||||
137 | throw IllegalArgumentException(); | |||||
138 | return nReturn; | |||||
139 | } | |||||
140 | ||||||
141 | //------------------------------------------------------------------------------ | |||||
142 | FontDescriptor getDefaultFont() | |||||
143 | { | |||||
144 | FontDescriptor aReturn; | |||||
145 | aReturn.Slant = FontSlant_DONTKNOW; | |||||
146 | aReturn.Underline = FontUnderline::DONTKNOW; | |||||
147 | aReturn.Strikeout = FontStrikeout::DONTKNOW; | |||||
148 | return aReturn; | |||||
149 | } | |||||
150 | ||||||
151 | //------------------------------------------------------------------------------ | |||||
152 | sal_Bool isAssignableFrom(const Type& _rAssignable, const Type& _rFrom) | |||||
153 | { | |||||
154 | // getthe type lib descriptions | |||||
155 | typelib_TypeDescription* pAssignable = NULL__null; | |||||
156 | _rAssignable.getDescription(&pAssignable); | |||||
157 | ||||||
158 | typelib_TypeDescription* pFrom = NULL__null; | |||||
159 | _rFrom.getDescription(&pFrom); | |||||
160 | ||||||
161 | // and ask the type lib | |||||
162 | return typelib_typedescription_isAssignableFrom(pAssignable, pFrom); | |||||
163 | } | |||||
164 | ||||||
165 | //------------------------------------------------------------------ | |||||
166 | template<class TYPE> | |||||
167 | sal_Bool tryCompare(const void* _pData, const Any& _rValue, sal_Bool& _bIdentical, TYPE& _rOut) | |||||
168 | { | |||||
169 | sal_Bool bSuccess = _rValue >>= _rOut; | |||||
170 | _bIdentical = bSuccess && (_rOut == *reinterpret_cast<const TYPE*>(_pData)); | |||||
171 | return bSuccess; | |||||
172 | } | |||||
173 | ||||||
174 | //------------------------------------------------------------------ | |||||
175 | sal_Bool tryCompare(const void* _pData, const Any& _rValue, sal_Bool& _bIdentical, sal_Unicode& _rOut) | |||||
176 | { | |||||
177 | sal_Bool bSuccess = ( _rValue.getValueTypeClass() == TypeClass_CHAR ); | |||||
178 | if ( bSuccess ) | |||||
179 | _rOut = *static_cast< const sal_Unicode* >( _rValue.getValue() ); | |||||
180 | _bIdentical = bSuccess && ( _rOut == *static_cast< const sal_Unicode* >( _pData ) ); | |||||
181 | return bSuccess; | |||||
182 | } | |||||
183 | ||||||
184 | //------------------------------------------------------------------ | |||||
185 | sal_Bool compare_impl(const Type& _rType, const void* pData, const Any& _rValue) | |||||
186 | { | |||||
187 | sal_Bool bRes = sal_True((sal_Bool)1); | |||||
188 | ||||||
189 | if (_rType.getTypeClass() == TypeClass_ANY) | |||||
190 | { | |||||
191 | // beides AnyWerte | |||||
192 | if (_rValue.getValueType().getTypeClass() == TypeClass_ANY) | |||||
193 | bRes = compare_impl( | |||||
194 | reinterpret_cast<const Any*>(pData)->getValueType(), | |||||
195 | reinterpret_cast<const Any*>(pData)->getValue(), | |||||
196 | *reinterpret_cast<const Any*>(_rValue.getValue())); | |||||
197 | else | |||||
198 | bRes = compare_impl( | |||||
199 | reinterpret_cast<const Any*>(pData)->getValueType(), | |||||
200 | reinterpret_cast<const Any*>(pData)->getValue(), | |||||
201 | _rValue); | |||||
202 | } | |||||
203 | else if ( (_rType.getTypeClass() == TypeClass_VOID) | |||||
204 | || (_rValue.getValueType().getTypeClass() == TypeClass_VOID) | |||||
205 | ) | |||||
206 | { | |||||
207 | bRes = _rType.getTypeClass() == _rValue.getValueType().getTypeClass(); | |||||
208 | } | |||||
209 | else | |||||
210 | { | |||||
211 | sal_Bool bConversionSuccess = sal_False((sal_Bool)0); | |||||
212 | switch (_rType.getTypeClass()) | |||||
213 | { | |||||
214 | case TypeClass_VOID: | |||||
215 | bConversionSuccess = sal_True((sal_Bool)1); | |||||
216 | bRes = _rValue.getValueType().getTypeClass() == TypeClass_VOID; | |||||
217 | break; | |||||
218 | case TypeClass_BOOLEAN: | |||||
219 | { | |||||
220 | sal_Bool aDummy; | |||||
221 | bConversionSuccess = tryCompare(pData, _rValue, bRes, aDummy); | |||||
222 | break; | |||||
223 | } | |||||
224 | case TypeClass_CHAR: | |||||
225 | { | |||||
226 | sal_Unicode aDummy(0); | |||||
227 | bConversionSuccess = tryCompare(pData, _rValue, bRes, aDummy); | |||||
228 | break; | |||||
229 | } | |||||
230 | case TypeClass_STRING: | |||||
231 | { | |||||
232 | ::rtl::OUString aDummy; | |||||
233 | bConversionSuccess = tryCompare(pData, _rValue, bRes, aDummy); | |||||
234 | break; | |||||
235 | } | |||||
236 | case TypeClass_FLOAT: | |||||
237 | { | |||||
238 | float aDummy; | |||||
239 | bConversionSuccess = tryCompare(pData, _rValue, bRes, aDummy); | |||||
240 | break; | |||||
241 | } | |||||
242 | case TypeClass_DOUBLE: | |||||
243 | { | |||||
244 | double aDummy; | |||||
245 | bConversionSuccess = tryCompare(pData, _rValue, bRes, aDummy); | |||||
246 | break; | |||||
247 | } | |||||
248 | case TypeClass_BYTE: | |||||
249 | { | |||||
250 | sal_Int8 aDummy; | |||||
251 | bConversionSuccess = tryCompare(pData, _rValue, bRes, aDummy); | |||||
252 | break; | |||||
253 | } | |||||
254 | case TypeClass_SHORT: | |||||
255 | { | |||||
256 | sal_Int16 aDummy; | |||||
257 | bConversionSuccess = tryCompare(pData, _rValue, bRes, aDummy); | |||||
258 | break; | |||||
259 | } | |||||
260 | case TypeClass_ENUM: | |||||
261 | { | |||||
262 | sal_Int32 nAsInt32 = 0; | |||||
263 | bConversionSuccess = ::cppu::enum2int(nAsInt32, _rValue); | |||||
264 | bRes = bConversionSuccess && (nAsInt32== *reinterpret_cast<const sal_Int32*>(pData)); | |||||
265 | break; | |||||
266 | } | |||||
267 | case TypeClass_LONG: | |||||
268 | { | |||||
269 | sal_Int32 aDummy; | |||||
270 | bConversionSuccess = tryCompare(pData, _rValue, bRes, aDummy); | |||||
271 | break; | |||||
272 | } | |||||
273 | case TypeClass_UNSIGNED_SHORT: | |||||
274 | { | |||||
275 | sal_uInt16 aDummy; | |||||
276 | bConversionSuccess = tryCompare(pData, _rValue, bRes, aDummy); | |||||
277 | break; | |||||
278 | } | |||||
279 | case TypeClass_UNSIGNED_LONG: | |||||
280 | { | |||||
281 | sal_uInt32 aDummy; | |||||
282 | bConversionSuccess = tryCompare(pData, _rValue, bRes, aDummy); | |||||
283 | break; | |||||
284 | } | |||||
285 | case TypeClass_INTERFACE: | |||||
286 | { | |||||
287 | InterfaceRef aDummy; | |||||
288 | bConversionSuccess = tryCompare(pData, _rValue, bRes, aDummy); | |||||
289 | break; | |||||
290 | } | |||||
291 | case TypeClass_STRUCT: | |||||
292 | if (isA(_rType, static_cast<FontDescriptor*>(NULL__null))) | |||||
293 | { | |||||
294 | FontDescriptor aTemp; | |||||
295 | bConversionSuccess = _rValue >>= aTemp; | |||||
296 | if (bConversionSuccess) | |||||
297 | { | |||||
298 | bRes = *(FontDescriptor*)pData == aTemp; | |||||
299 | } | |||||
300 | else | |||||
301 | bRes = sal_False((sal_Bool)0); | |||||
302 | break; | |||||
303 | } | |||||
304 | if (isA(_rType, static_cast<Date*>(NULL__null))) | |||||
305 | { | |||||
306 | Date aDummy; | |||||
307 | bConversionSuccess = tryCompare(pData, _rValue, bRes, aDummy); | |||||
308 | break; | |||||
309 | } | |||||
310 | if (isA(_rType, static_cast<Time*>(NULL__null))) | |||||
311 | { | |||||
312 | Time aDummy; | |||||
313 | bConversionSuccess = tryCompare(pData, _rValue, bRes, aDummy); | |||||
314 | break; | |||||
315 | } | |||||
316 | if (isA(_rType, static_cast<DateTime*>(NULL__null))) | |||||
317 | { | |||||
318 | DateTime aDummy; | |||||
319 | bConversionSuccess = tryCompare(pData, _rValue, bRes, aDummy); | |||||
320 | break; | |||||
321 | } | |||||
322 | break; | |||||
323 | case TypeClass_SEQUENCE: | |||||
324 | if (isA(_rType, static_cast< Sequence<sal_Int8>* >(NULL__null))) | |||||
325 | { | |||||
326 | Sequence<sal_Int8> aTemp; | |||||
327 | bConversionSuccess = _rValue >>= aTemp; | |||||
328 | if (bConversionSuccess) | |||||
329 | { | |||||
330 | const Sequence<sal_Int8>& rLeftSeq = *reinterpret_cast<const Sequence<sal_Int8>*>(pData); | |||||
331 | const Sequence<sal_Int8>& rRightSeq = aTemp; | |||||
332 | bRes = rLeftSeq.getLength() == rRightSeq.getLength() && | |||||
333 | memcmp(rLeftSeq.getConstArray(), rRightSeq.getConstArray(), rLeftSeq.getLength()) == 0; | |||||
334 | } | |||||
335 | } | |||||
336 | else if (isA(_rType, static_cast< Sequence<sal_uInt8>* >(NULL__null))) | |||||
337 | { | |||||
338 | Sequence<sal_uInt8> aTemp; | |||||
339 | bConversionSuccess = _rValue >>= aTemp; | |||||
340 | if (bConversionSuccess) | |||||
341 | { | |||||
342 | const Sequence<sal_uInt8>& rLeftSeq = *reinterpret_cast<const Sequence<sal_uInt8>*>(pData); | |||||
343 | const Sequence<sal_uInt8>& rRightSeq = aTemp; | |||||
344 | bRes = rLeftSeq.getLength() == rRightSeq.getLength() && | |||||
345 | memcmp(rLeftSeq.getConstArray(), rRightSeq.getConstArray(), rLeftSeq.getLength()) == 0; | |||||
346 | } | |||||
347 | } | |||||
348 | else if (isA(_rType, static_cast< Sequence<sal_Int16>* >(NULL__null))) | |||||
349 | { | |||||
350 | Sequence<sal_Int16> aTemp; | |||||
351 | bConversionSuccess = _rValue >>= aTemp; | |||||
352 | if (bConversionSuccess) | |||||
353 | { | |||||
354 | const Sequence<sal_Int16>& rLeftSeq = *reinterpret_cast<const Sequence<sal_Int16>*>(pData); | |||||
355 | const Sequence<sal_Int16>& rRightSeq = aTemp; | |||||
356 | bRes = rLeftSeq.getLength() == rRightSeq.getLength() && | |||||
357 | memcmp(rLeftSeq.getConstArray(), rRightSeq.getConstArray(), rLeftSeq.getLength()*sizeof(sal_Int16)) == 0; | |||||
358 | } | |||||
359 | } | |||||
360 | else if (isA(_rType, static_cast< Sequence<sal_uInt16>* >(NULL__null))) | |||||
361 | { | |||||
362 | Sequence<sal_uInt16> aTemp; | |||||
363 | bConversionSuccess = _rValue >>= aTemp; | |||||
364 | if (bConversionSuccess) | |||||
365 | { | |||||
366 | const Sequence<sal_uInt16>& rLeftSeq = *reinterpret_cast<const Sequence<sal_uInt16>*>(pData); | |||||
367 | const Sequence<sal_uInt16>& rRightSeq = aTemp; | |||||
368 | bRes = rLeftSeq.getLength() == rRightSeq.getLength() && | |||||
369 | memcmp(rLeftSeq.getConstArray(), rRightSeq.getConstArray(), rLeftSeq.getLength()*sizeof(sal_uInt16)) == 0; | |||||
370 | } | |||||
371 | } | |||||
372 | else if (isA(_rType, static_cast< Sequence<sal_Int32>* >(NULL__null))) | |||||
373 | { | |||||
374 | Sequence<sal_Int32> aTemp; | |||||
375 | bConversionSuccess = _rValue >>= aTemp; | |||||
376 | if (bConversionSuccess) | |||||
377 | { | |||||
378 | const Sequence<sal_Int32>& rLeftSeq = *reinterpret_cast<const Sequence<sal_Int32>*>(pData); | |||||
379 | const Sequence<sal_Int32>& rRightSeq = aTemp; | |||||
380 | bRes = rLeftSeq.getLength() == rRightSeq.getLength() && | |||||
381 | memcmp(rLeftSeq.getConstArray(), rRightSeq.getConstArray(), rLeftSeq.getLength()*sizeof(sal_Int32)) == 0; | |||||
382 | } | |||||
383 | } | |||||
384 | else if (isA(_rType, static_cast< Sequence<sal_uInt32>* >(NULL__null))) | |||||
385 | { | |||||
386 | Sequence<sal_uInt32> aTemp; | |||||
387 | bConversionSuccess = _rValue >>= aTemp; | |||||
388 | if (bConversionSuccess) | |||||
389 | { | |||||
390 | const Sequence<sal_uInt32>& rLeftSeq = *reinterpret_cast<const Sequence<sal_uInt32>*>(pData); | |||||
391 | const Sequence<sal_uInt32>& rRightSeq = aTemp; | |||||
392 | bRes = rLeftSeq.getLength() == rRightSeq.getLength() && | |||||
393 | memcmp(rLeftSeq.getConstArray(), rRightSeq.getConstArray(), rLeftSeq.getLength()*sizeof(sal_uInt32)) == 0; | |||||
394 | } | |||||
395 | } | |||||
396 | else if (isA(_rType, static_cast< Sequence< ::rtl::OUString >* >(NULL__null))) | |||||
397 | { | |||||
398 | Sequence< ::rtl::OUString > aTemp; | |||||
399 | bConversionSuccess = _rValue >>= aTemp; | |||||
400 | if (bConversionSuccess) | |||||
401 | { | |||||
402 | const Sequence< ::rtl::OUString >& rLeftSeq = *reinterpret_cast<const Sequence< ::rtl::OUString>*>(pData); | |||||
403 | const Sequence< ::rtl::OUString >& rRightSeq = aTemp; | |||||
404 | sal_Int32 nSeqLen = rLeftSeq.getLength(); | |||||
405 | bRes = ( nSeqLen == rRightSeq.getLength() ); | |||||
406 | for ( sal_Int32 n = 0; bRes && ( n < nSeqLen ); n++ ) | |||||
407 | { | |||||
408 | const ::rtl::OUString& rS1 = rLeftSeq.getConstArray()[n]; | |||||
409 | const ::rtl::OUString& rS2 = rRightSeq.getConstArray()[n]; | |||||
410 | bRes = ( rS1 == rS2 ); | |||||
411 | } | |||||
412 | } | |||||
413 | } | |||||
414 | break; | |||||
415 | default: | |||||
416 | bRes = sal_False((sal_Bool)0); | |||||
417 | } | |||||
418 | ||||||
419 | bRes = bRes && bConversionSuccess; | |||||
420 | } | |||||
421 | return bRes; | |||||
422 | } | |||||
423 | ||||||
424 | //------------------------------------------------------------------------------ | |||||
425 | sal_Bool compare(const Any& rLeft, const Any& rRight) | |||||
426 | { | |||||
427 | return compare_impl(rLeft.getValueType(), rLeft.getValue(), rRight); | |||||
428 | } | |||||
429 | ||||||
430 | //------------------------------------------------------------------------- | |||||
431 | sal_Bool operator ==(const FontDescriptor& _rLeft, const FontDescriptor& _rRight) | |||||
432 | { | |||||
433 | return ( _rLeft.Name.equals( _rRight.Name ) ) && | |||||
434 | ( _rLeft.Height == _rRight.Height ) && | |||||
435 | ( _rLeft.Width == _rRight.Width ) && | |||||
436 | ( _rLeft.StyleName.equals( _rRight.StyleName ) ) && | |||||
437 | ( _rLeft.Family == _rRight.Family ) && | |||||
438 | ( _rLeft.CharSet == _rRight.CharSet ) && | |||||
439 | ( _rLeft.Pitch == _rRight.Pitch ) && | |||||
440 | ( _rLeft.CharacterWidth == _rRight.CharacterWidth ) && | |||||
441 | ( _rLeft.Weight == _rRight.Weight ) && | |||||
442 | ( _rLeft.Slant == _rRight.Slant ) && | |||||
443 | ( _rLeft.Underline == _rRight.Underline ) && | |||||
444 | ( _rLeft.Strikeout == _rRight.Strikeout ) && | |||||
445 | ( _rLeft.Orientation == _rRight.Orientation ) && | |||||
446 | ( _rLeft.Kerning == _rRight.Kerning ) && | |||||
447 | ( _rLeft.WordLineMode == _rRight.WordLineMode ) && | |||||
448 | ( _rLeft.Type == _rRight.Type ) ; | |||||
449 | } | |||||
450 | ||||||
451 | //------------------------------------------------------------------------- | |||||
452 | Type getSequenceElementType(const Type& _rSequenceType) | |||||
453 | { | |||||
454 | OSL_ENSURE(_rSequenceType.getTypeClass() == TypeClass_SEQUENCE,do { if (true && (!(_rSequenceType.getTypeClass() == TypeClass_SEQUENCE ))) { sal_detail_logFormat((SAL_DETAIL_LOG_LEVEL_WARN), ("legacy.osl" ), ("/usr/local/src/libreoffice/comphelper/source/misc/types.cxx" ":" "455" ": "), "%s", "getSequenceElementType: must be called with a sequence type!" ); } } while (false) | |||||
455 | "getSequenceElementType: must be called with a sequence type!")do { if (true && (!(_rSequenceType.getTypeClass() == TypeClass_SEQUENCE ))) { sal_detail_logFormat((SAL_DETAIL_LOG_LEVEL_WARN), ("legacy.osl" ), ("/usr/local/src/libreoffice/comphelper/source/misc/types.cxx" ":" "455" ": "), "%s", "getSequenceElementType: must be called with a sequence type!" ); } } while (false); | |||||
456 | ||||||
457 | if (!(_rSequenceType.getTypeClass() == TypeClass_SEQUENCE)) | |||||
| ||||||
458 | return Type(); | |||||
459 | ||||||
460 | TypeDescription aTD(_rSequenceType); | |||||
461 | typelib_IndirectTypeDescription* pSequenceTD = | |||||
462 | reinterpret_cast< typelib_IndirectTypeDescription* >(aTD.get()); | |||||
463 | ||||||
464 | OSL_ASSERT(pSequenceTD)do { if (true && (!(pSequenceTD))) { sal_detail_logFormat ((SAL_DETAIL_LOG_LEVEL_WARN), ("legacy.osl"), ("/usr/local/src/libreoffice/comphelper/source/misc/types.cxx" ":" "464" ": "), "OSL_ASSERT: %s", "pSequenceTD"); } } while (false); | |||||
465 | OSL_ASSERT(pSequenceTD->pType)do { if (true && (!(pSequenceTD->pType))) { sal_detail_logFormat ((SAL_DETAIL_LOG_LEVEL_WARN), ("legacy.osl"), ("/usr/local/src/libreoffice/comphelper/source/misc/types.cxx" ":" "465" ": "), "OSL_ASSERT: %s", "pSequenceTD->pType"); } } while (false); | |||||
| ||||||
466 | ||||||
467 | if (pSequenceTD && pSequenceTD->pType) | |||||
468 | return Type(pSequenceTD->pType); | |||||
469 | ||||||
470 | return Type(); | |||||
471 | } | |||||
472 | //......................................................................... | |||||
473 | } // namespace comphelper | |||||
474 | //......................................................................... | |||||
475 | ||||||
476 | /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |