25#include <osl/diagnose.h>
26#include <rtl/ustring.hxx>
39 void * pI1,
void * pI2,
44 if ((
nullptr == pI1) || (
nullptr == pI2))
48 typelib_TypeDescriptionReference * type_XInterface =
52 pI1 = (*queryInterface)( pI1, type_XInterface );
55 pI2 = (*queryInterface)( pI2, type_XInterface );
68 void * pDest,
void *pSource,
69 typelib_CompoundTypeDescription * pTypeDescr,
73 void * pDest,
void *pSource,
74 typelib_CompoundTypeDescription * pTypeDescr,
77 if (pTypeDescr->pBaseTypeDescription &&
83 typelib_TypeDescriptionReference ** ppTypeRefs = pTypeDescr->ppTypeRefs;
84 sal_Int32 * pMemberOffsets = pTypeDescr->pMemberOffsets;
85 sal_Int32 nDescr = pTypeDescr->nMembers;
89 sal_Int32 nOffset = pMemberOffsets[nDescr];
92 static_cast<char *
>(pSource) + nOffset,
103 uno_Sequence * pDest, uno_Sequence * pSource,
104 typelib_TypeDescriptionReference * pElementType,
108 uno_Sequence * pDest, uno_Sequence * pSource,
109 typelib_TypeDescriptionReference * pElementType,
112 if (pDest == pSource)
120 void * pDestElements = pDest->elements;
121 void * pSourceElements = pSource->elements;
123 switch (pElementType->eTypeClass)
125 case typelib_TypeClass_CHAR:
127 case typelib_TypeClass_BOOLEAN:
131 if (
bool(
static_cast<sal_Bool *
>(pDestElements)[
nPos]) !=
139 case typelib_TypeClass_BYTE:
140 return (0 == memcmp( pDestElements, pSourceElements,
sizeof(
sal_Int8) *
nElements ));
141 case typelib_TypeClass_SHORT:
142 case typelib_TypeClass_UNSIGNED_SHORT:
143 return (0 == memcmp( pDestElements, pSourceElements,
sizeof(sal_Int16) *
nElements ));
144 case typelib_TypeClass_LONG:
145 case typelib_TypeClass_UNSIGNED_LONG:
146 return (0 == memcmp( pDestElements, pSourceElements,
sizeof(sal_Int32) *
nElements ));
147 case typelib_TypeClass_HYPER:
148 case typelib_TypeClass_UNSIGNED_HYPER:
149 return (0 == memcmp( pDestElements, pSourceElements,
sizeof(sal_Int64) *
nElements ));
150 case typelib_TypeClass_FLOAT:
154 if (
static_cast<float *
>(pDestElements)[
nPos] !=
static_cast<float *
>(pSourceElements)[
nPos])
159 case typelib_TypeClass_DOUBLE:
163 if (
static_cast<double *
>(pDestElements)[
nPos] !=
static_cast<double *
>(pSourceElements)[
nPos])
168 case typelib_TypeClass_STRING:
172 if (
static_cast<OUString *
>(pDestElements)[
nPos] !=
static_cast<const OUString *
>(pSourceElements)[
nPos] )
177 case typelib_TypeClass_TYPE:
181 if (!
_type_equals(
static_cast<typelib_TypeDescriptionReference **
>(pDestElements)[
nPos],
182 static_cast<typelib_TypeDescriptionReference **
>(pSourceElements)[
nPos] ))
189 case typelib_TypeClass_ANY:
196 pSource2->pData, pSource2->pType,
204 case typelib_TypeClass_ENUM:
205 return (0 == memcmp( pDestElements, pSourceElements,
sizeof(sal_Int32) *
nElements ));
206 case typelib_TypeClass_STRUCT:
207 case typelib_TypeClass_EXCEPTION:
210 TYPELIB_DANGER_GET( &pElementTypeDescr, pElementType );
211 sal_Int32 nElementSize = pElementTypeDescr->nSize;
214 if (!
_equalStruct(
static_cast<char *
>(pDestElements) + (
nPos * nElementSize),
215 static_cast<char *
>(pSourceElements) + (
nPos * nElementSize),
216 reinterpret_cast<typelib_CompoundTypeDescription *
>(pElementTypeDescr),
219 TYPELIB_DANGER_RELEASE( pElementTypeDescr );
223 TYPELIB_DANGER_RELEASE( pElementTypeDescr );
226 case typelib_TypeClass_SEQUENCE:
229 TYPELIB_DANGER_GET( &pElementTypeDescr, pElementType );
230 typelib_TypeDescriptionReference * pSeqElementType =
231 reinterpret_cast<typelib_IndirectTypeDescription *
>(pElementTypeDescr)->pType;
235 static_cast<uno_Sequence **
>(pSourceElements)[
nPos],
238 TYPELIB_DANGER_RELEASE( pElementTypeDescr );
242 TYPELIB_DANGER_RELEASE( pElementTypeDescr );
245 case typelib_TypeClass_INTERFACE:
249 if (!
_equalObject(
static_cast<void **
>(pDestElements)[
nPos],
static_cast<void **
>(pSourceElements)[
nPos],
267 typelib_TypeDescriptionReference * pSourceType,
270 typelib_TypeClass eSourceTypeClass, eDestTypeClass;
271 while (typelib_TypeClass_ANY == (eDestTypeClass = pDestType->eTypeClass))
273 pDestTypeDescr =
nullptr;
274 pDestType =
static_cast<uno_Any *
>(pDest)->pType;
277 while (typelib_TypeClass_ANY == (eSourceTypeClass = pSourceType->eTypeClass))
279 pSourceType =
static_cast<uno_Any *
>(pSource)->pType;
283 switch (eDestTypeClass)
285 case typelib_TypeClass_VOID:
286 return eSourceTypeClass == typelib_TypeClass_VOID;
287 case typelib_TypeClass_CHAR:
288 return eSourceTypeClass == typelib_TypeClass_CHAR
290 case typelib_TypeClass_BOOLEAN:
291 return eSourceTypeClass == typelib_TypeClass_BOOLEAN
292 && (bool(*
static_cast<sal_Bool *
>(pDest))
293 == bool(*
static_cast<sal_Bool *
>(pSource)));
294 case typelib_TypeClass_BYTE:
295 switch (eSourceTypeClass)
297 case typelib_TypeClass_BYTE:
300 case typelib_TypeClass_SHORT:
302 *
static_cast<sal_Int8 *
>(pDest), *
static_cast<sal_Int16 *
>(pSource));
303 case typelib_TypeClass_UNSIGNED_SHORT:
305 *
static_cast<sal_Int8 *
>(pDest), *
static_cast<sal_uInt16 *
>(pSource));
306 case typelib_TypeClass_LONG:
308 *
static_cast<sal_Int8 *
>(pDest), *
static_cast<sal_Int32 *
>(pSource));
309 case typelib_TypeClass_UNSIGNED_LONG:
311 *
static_cast<sal_Int8 *
>(pDest), *
static_cast<sal_uInt32 *
>(pSource));
312 case typelib_TypeClass_HYPER:
314 *
static_cast<sal_Int8 *
>(pDest), *
static_cast<sal_Int64 *
>(pSource));
315 case typelib_TypeClass_UNSIGNED_HYPER:
317 *
static_cast<sal_Int8 *
>(pDest), *
static_cast<sal_Int64 *
>(pSource));
318 case typelib_TypeClass_FLOAT:
319 return (
static_cast<float>(*
static_cast<sal_Int8 *
>(pDest)) == *
static_cast<float *
>(pSource));
320 case typelib_TypeClass_DOUBLE:
321 return (
static_cast<double>(*
static_cast<sal_Int8 *
>(pDest)) == *
static_cast<double *
>(pSource));
325 case typelib_TypeClass_SHORT:
326 switch (eSourceTypeClass)
328 case typelib_TypeClass_BYTE:
330 *
static_cast<sal_Int16 *
>(pDest), *
static_cast<sal_Int8 *
>(pSource));
331 case typelib_TypeClass_SHORT:
333 *
static_cast<sal_Int16 *
>(pDest), *
static_cast<sal_Int16 *
>(pSource));
334 case typelib_TypeClass_UNSIGNED_SHORT:
336 *
static_cast<sal_Int16 *
>(pDest), *
static_cast<sal_uInt16 *
>(pSource));
337 case typelib_TypeClass_LONG:
339 *
static_cast<sal_Int16 *
>(pDest), *
static_cast<sal_Int32 *
>(pSource));
340 case typelib_TypeClass_UNSIGNED_LONG:
342 *
static_cast<sal_Int16 *
>(pDest), *
static_cast<sal_uInt32 *
>(pSource));
343 case typelib_TypeClass_HYPER:
345 *
static_cast<sal_Int16 *
>(pDest), *
static_cast<sal_Int64 *
>(pSource));
346 case typelib_TypeClass_UNSIGNED_HYPER:
348 *
static_cast<sal_Int16 *
>(pDest), *
static_cast<sal_Int64 *
>(pSource));
349 case typelib_TypeClass_FLOAT:
350 return (
static_cast<float>(*
static_cast<sal_Int16 *
>(pDest)) == *
static_cast<float *
>(pSource));
351 case typelib_TypeClass_DOUBLE:
352 return (
static_cast<double>(*
static_cast<sal_Int16 *
>(pDest)) == *
static_cast<double *
>(pSource));
356 case typelib_TypeClass_UNSIGNED_SHORT:
357 switch (eSourceTypeClass)
359 case typelib_TypeClass_BYTE:
361 *
static_cast<sal_uInt16 *
>(pDest), *
static_cast<sal_Int8 *
>(pSource));
362 case typelib_TypeClass_SHORT:
364 *
static_cast<sal_uInt16 *
>(pDest), *
static_cast<sal_Int16 *
>(pSource));
365 case typelib_TypeClass_UNSIGNED_SHORT:
367 *
static_cast<sal_uInt16 *
>(pDest), *
static_cast<sal_uInt16 *
>(pSource));
368 case typelib_TypeClass_LONG:
370 *
static_cast<sal_uInt16 *
>(pDest), *
static_cast<sal_Int32 *
>(pSource));
371 case typelib_TypeClass_UNSIGNED_LONG:
373 *
static_cast<sal_uInt16 *
>(pDest), *
static_cast<sal_uInt32 *
>(pSource));
374 case typelib_TypeClass_HYPER:
376 *
static_cast<sal_uInt16 *
>(pDest), *
static_cast<sal_Int64 *
>(pSource));
377 case typelib_TypeClass_UNSIGNED_HYPER:
379 *
static_cast<sal_uInt16 *
>(pDest), *
static_cast<sal_uInt64 *
>(pSource));
380 case typelib_TypeClass_FLOAT:
381 return (
static_cast<float>(*
static_cast<sal_uInt16 *
>(pDest)) == *
static_cast<float *
>(pSource));
382 case typelib_TypeClass_DOUBLE:
383 return (
static_cast<double>(*
static_cast<sal_uInt16 *
>(pDest)) == *
static_cast<double *
>(pSource));
387 case typelib_TypeClass_LONG:
388 switch (eSourceTypeClass)
390 case typelib_TypeClass_BYTE:
392 *
static_cast<sal_Int32 *
>(pDest), *
static_cast<sal_Int8 *
>(pSource));
393 case typelib_TypeClass_SHORT:
395 *
static_cast<sal_Int32 *
>(pDest), *
static_cast<sal_Int16 *
>(pSource));
396 case typelib_TypeClass_UNSIGNED_SHORT:
398 *
static_cast<sal_Int32 *
>(pDest), *
static_cast<sal_uInt16 *
>(pSource));
399 case typelib_TypeClass_LONG:
401 *
static_cast<sal_Int32 *
>(pDest), *
static_cast<sal_Int32 *
>(pSource));
402 case typelib_TypeClass_UNSIGNED_LONG:
404 *
static_cast<sal_Int32 *
>(pDest), *
static_cast<sal_uInt32 *
>(pSource));
405 case typelib_TypeClass_HYPER:
407 *
static_cast<sal_Int32 *
>(pDest), *
static_cast<sal_Int64 *
>(pSource));
408 case typelib_TypeClass_UNSIGNED_HYPER:
410 *
static_cast<sal_Int32 *
>(pDest), *
static_cast<sal_Int64 *
>(pSource));
411 case typelib_TypeClass_FLOAT:
412 return (
static_cast<float>(*
static_cast<sal_Int32 *
>(pDest)) == *
static_cast<float *
>(pSource));
413 case typelib_TypeClass_DOUBLE:
414 return (
static_cast<double>(*
static_cast<sal_Int32 *
>(pDest)) == *
static_cast<double *
>(pSource));
418 case typelib_TypeClass_UNSIGNED_LONG:
419 switch (eSourceTypeClass)
421 case typelib_TypeClass_BYTE:
423 *
static_cast<sal_uInt32 *
>(pDest), *
static_cast<sal_Int8 *
>(pSource));
424 case typelib_TypeClass_SHORT:
426 *
static_cast<sal_uInt32 *
>(pDest), *
static_cast<sal_Int16 *
>(pSource));
427 case typelib_TypeClass_UNSIGNED_SHORT:
429 *
static_cast<sal_uInt32 *
>(pDest), *
static_cast<sal_uInt16 *
>(pSource));
430 case typelib_TypeClass_LONG:
432 *
static_cast<sal_uInt32 *
>(pDest), *
static_cast<sal_Int32 *
>(pSource));
433 case typelib_TypeClass_UNSIGNED_LONG:
435 *
static_cast<sal_uInt32 *
>(pDest), *
static_cast<sal_uInt32 *
>(pSource));
436 case typelib_TypeClass_HYPER:
438 *
static_cast<sal_uInt32 *
>(pDest), *
static_cast<sal_Int64 *
>(pSource));
439 case typelib_TypeClass_UNSIGNED_HYPER:
441 *
static_cast<sal_uInt32 *
>(pDest), *
static_cast<sal_uInt64 *
>(pSource));
442 case typelib_TypeClass_FLOAT:
443 return (
static_cast<float>(*
static_cast<sal_uInt32 *
>(pDest)) == *
static_cast<float *
>(pSource));
444 case typelib_TypeClass_DOUBLE:
445 return (
static_cast<double>(*
static_cast<sal_uInt32 *
>(pDest)) == *
static_cast<double *
>(pSource));
449 case typelib_TypeClass_HYPER:
450 switch (eSourceTypeClass)
452 case typelib_TypeClass_BYTE:
454 *
static_cast<sal_Int64 *
>(pDest), *
static_cast<sal_Int8 *
>(pSource));
455 case typelib_TypeClass_SHORT:
457 *
static_cast<sal_Int64 *
>(pDest), *
static_cast<sal_Int16 *
>(pSource));
458 case typelib_TypeClass_UNSIGNED_SHORT:
460 *
static_cast<sal_Int64 *
>(pDest), *
static_cast<sal_uInt16 *
>(pSource));
461 case typelib_TypeClass_LONG:
463 *
static_cast<sal_Int64 *
>(pDest), *
static_cast<sal_Int32 *
>(pSource));
464 case typelib_TypeClass_UNSIGNED_LONG:
466 *
static_cast<sal_Int64 *
>(pDest), *
static_cast<sal_uInt32 *
>(pSource));
467 case typelib_TypeClass_HYPER:
469 *
static_cast<sal_Int64 *
>(pDest), *
static_cast<sal_Int64 *
>(pSource));
470 case typelib_TypeClass_UNSIGNED_HYPER:
472 *
static_cast<sal_Int64 *
>(pDest), *
static_cast<sal_Int64 *
>(pSource));
473 case typelib_TypeClass_FLOAT:
474 return (
static_cast<float>(*
static_cast<sal_Int64 *
>(pDest)) == *
static_cast<float *
>(pSource));
475 case typelib_TypeClass_DOUBLE:
476 return (
static_cast<double>(*
static_cast<sal_Int64 *
>(pDest)) == *
static_cast<double *
>(pSource));
480 case typelib_TypeClass_UNSIGNED_HYPER:
481 switch (eSourceTypeClass)
483 case typelib_TypeClass_BYTE:
485 *
static_cast<sal_uInt64 *
>(pDest), *
static_cast<sal_Int8 *
>(pSource));
486 case typelib_TypeClass_SHORT:
488 *
static_cast<sal_uInt64 *
>(pDest), *
static_cast<sal_Int16 *
>(pSource));
489 case typelib_TypeClass_UNSIGNED_SHORT:
491 *
static_cast<sal_uInt64 *
>(pDest), *
static_cast<sal_uInt16 *
>(pSource));
492 case typelib_TypeClass_LONG:
494 *
static_cast<sal_uInt64 *
>(pDest), *
static_cast<sal_Int32 *
>(pSource));
495 case typelib_TypeClass_UNSIGNED_LONG:
497 *
static_cast<sal_uInt64 *
>(pDest), *
static_cast<sal_uInt32 *
>(pSource));
498 case typelib_TypeClass_HYPER:
500 *
static_cast<sal_uInt64 *
>(pDest), *
static_cast<sal_Int64 *
>(pSource));
501 case typelib_TypeClass_UNSIGNED_HYPER:
503 *
static_cast<sal_uInt64 *
>(pDest), *
static_cast<sal_uInt64 *
>(pSource));
504 case typelib_TypeClass_FLOAT:
505 if (::floor( *
static_cast<float *
>(pSource) ) != *
static_cast<float *
>(pSource) || *
static_cast<float *
>(pSource) < 0)
507 return (*
static_cast<sal_uInt64 *
>(pDest) ==
static_cast<sal_uInt64
>(*
static_cast<float *
>(pSource)));
508 case typelib_TypeClass_DOUBLE:
509 if (::floor( *
static_cast<double *
>(pSource) ) != *
static_cast<double *
>(pSource) || *
static_cast<double *
>(pSource) < 0)
511 return (*
static_cast<sal_uInt64 *
>(pDest) ==
static_cast<sal_uInt64
>(*
static_cast<double *
>(pSource)));
515 case typelib_TypeClass_FLOAT:
516 switch (eSourceTypeClass)
518 case typelib_TypeClass_BYTE:
519 return (*
static_cast<float *
>(pDest) ==
static_cast<float>(*
static_cast<sal_Int8 *
>(pSource)));
520 case typelib_TypeClass_SHORT:
521 return (*
static_cast<float *
>(pDest) ==
static_cast<float>(*
static_cast<sal_Int16 *
>(pSource)));
522 case typelib_TypeClass_UNSIGNED_SHORT:
523 return (*
static_cast<float *
>(pDest) ==
static_cast<float>(*
static_cast<sal_uInt16 *
>(pSource)));
524 case typelib_TypeClass_LONG:
525 return (*
static_cast<float *
>(pDest) ==
static_cast<float>(*
static_cast<sal_Int32 *
>(pSource)));
526 case typelib_TypeClass_UNSIGNED_LONG:
527 return (*
static_cast<float *
>(pDest) ==
static_cast<float>(*
static_cast<sal_uInt32 *
>(pSource)));
528 case typelib_TypeClass_HYPER:
529 return (*
static_cast<float *
>(pDest) ==
static_cast<float>(*
static_cast<sal_Int64 *
>(pSource)));
530 case typelib_TypeClass_UNSIGNED_HYPER:
531 if (::floor( *
static_cast<float *
>(pDest) ) != *
static_cast<float *
>(pDest) || *
static_cast<float *
>(pDest) < 0)
533 return (
static_cast<sal_uInt64
>(*
static_cast<float *
>(pDest)) == *
static_cast<sal_uInt64 *
>(pSource));
534 case typelib_TypeClass_FLOAT:
535 return (*
static_cast<float *
>(pDest) == *
static_cast<float *
>(pSource));
536 case typelib_TypeClass_DOUBLE:
537 return (
static_cast<double>(*
static_cast<float *
>(pDest)) == *
static_cast<double *
>(pSource));
541 case typelib_TypeClass_DOUBLE:
542 switch (eSourceTypeClass)
544 case typelib_TypeClass_BYTE:
545 return (*
static_cast<double *
>(pDest) ==
static_cast<double>(*
static_cast<sal_Int8 *
>(pSource)));
546 case typelib_TypeClass_SHORT:
547 return (*
static_cast<double *
>(pDest) ==
static_cast<double>(*
static_cast<sal_Int16 *
>(pSource)));
548 case typelib_TypeClass_UNSIGNED_SHORT:
549 return (*
static_cast<double *
>(pDest) ==
static_cast<double>(*
static_cast<sal_uInt16 *
>(pSource)));
550 case typelib_TypeClass_LONG:
551 return (*
static_cast<double *
>(pDest) ==
static_cast<double>(*
static_cast<sal_Int32 *
>(pSource)));
552 case typelib_TypeClass_UNSIGNED_LONG:
553 return (*
static_cast<double *
>(pDest) ==
static_cast<double>(*
static_cast<sal_uInt32 *
>(pSource)));
554 case typelib_TypeClass_HYPER:
555 return (*
static_cast<double *
>(pDest) ==
static_cast<double>(*
static_cast<sal_Int64 *
>(pSource)));
556 case typelib_TypeClass_UNSIGNED_HYPER:
557 if (::floor( *
static_cast<double *
>(pDest) ) != *
static_cast<double *
>(pDest) || *
static_cast<double *
>(pDest) < 0)
559 return (
static_cast<sal_uInt64
>(*
static_cast<double *
>(pDest)) == *
static_cast<sal_uInt64 *
>(pSource));
560 case typelib_TypeClass_FLOAT:
561 return (*
static_cast<double *
>(pDest) ==
static_cast<double>(*
static_cast<float *
>(pSource)));
562 case typelib_TypeClass_DOUBLE:
563 return (*
static_cast<double *
>(pDest) == *
static_cast<double *
>(pSource));
567 case typelib_TypeClass_STRING:
568 return eSourceTypeClass == typelib_TypeClass_STRING
569 && *
static_cast<OUString *
>(pDest) ==
570 *
static_cast<OUString
const *
>(pSource);
571 case typelib_TypeClass_TYPE:
572 return eSourceTypeClass == typelib_TypeClass_TYPE
574 *
static_cast<typelib_TypeDescriptionReference **
>(pDest),
575 *
static_cast<typelib_TypeDescriptionReference **
>(pSource) );
576 case typelib_TypeClass_ENUM:
578 *
static_cast<sal_Int32 *
>(pDest) == *
static_cast<sal_Int32 *
>(pSource));
579 case typelib_TypeClass_STRUCT:
580 case typelib_TypeClass_EXCEPTION:
587 reinterpret_cast<typelib_CompoundTypeDescription *
>(pDestTypeDescr),
592 TYPELIB_DANGER_GET( &pDestTypeDescr, pDestType );
595 reinterpret_cast<typelib_CompoundTypeDescription *
>(pDestTypeDescr),
597 TYPELIB_DANGER_RELEASE( pDestTypeDescr );
600 case typelib_TypeClass_SEQUENCE:
606 *
static_cast<uno_Sequence **
>(pDest), *
static_cast<uno_Sequence **
>(pSource),
607 reinterpret_cast<typelib_IndirectTypeDescription *
>(pDestTypeDescr)->pType,
612 TYPELIB_DANGER_GET( &pDestTypeDescr, pDestType );
614 *
static_cast<uno_Sequence **
>(pDest), *
static_cast<uno_Sequence **
>(pSource),
615 reinterpret_cast<typelib_IndirectTypeDescription *
>(pDestTypeDescr)->pType,
617 TYPELIB_DANGER_RELEASE( pDestTypeDescr );
622 case typelib_TypeClass_INTERFACE:
623 if (typelib_TypeClass_INTERFACE == eSourceTypeClass)
sal_Bool SAL_CALL uno_type_equalData(void *pVal1, typelib_TypeDescriptionReference *pVal1Type, void *pVal2, typelib_TypeDescriptionReference *pVal2Type, uno_QueryInterfaceFunc queryInterface, uno_ReleaseFunc release) SAL_THROW_EXTERN_C()
std::unique_ptr< sal_Int32[]> pData
struct _typelib_TypeDescription typelib_TypeDescription
void _release(void *p, uno_ReleaseFunc release)
css::uno::Any SAL_CALL queryInterface(const css::uno::Type &rType, Interface1 *p1)
bool equalSequence(uno_Sequence *pDest, uno_Sequence *pSource, typelib_TypeDescriptionReference *pElementType, uno_QueryInterfaceFunc queryInterface, uno_ReleaseFunc release)
bool _equalObject(void *pI1, void *pI2, uno_QueryInterfaceFunc queryInterface, uno_ReleaseFunc release)
bool equalStruct(void *pDest, void *pSource, typelib_CompoundTypeDescription *pTypeDescr, uno_QueryInterfaceFunc queryInterface, uno_ReleaseFunc release)
bool _equalSequence(uno_Sequence *pDest, uno_Sequence *pSource, typelib_TypeDescriptionReference *pElementType, uno_QueryInterfaceFunc queryInterface, uno_ReleaseFunc release)
bool _equalStruct(void *pDest, void *pSource, typelib_CompoundTypeDescription *pTypeDescr, uno_QueryInterfaceFunc queryInterface, uno_ReleaseFunc release)
void * binuno_queryInterface(void *pUnoI, typelib_TypeDescriptionReference *pDestType)
bool _type_equals(typelib_TypeDescriptionReference const *pType1, typelib_TypeDescriptionReference const *pType2)
bool _equalData(void *pDest, typelib_TypeDescriptionReference *pDestType, typelib_TypeDescription *pDestTypeDescr, void *pSource, typelib_TypeDescriptionReference *pSourceType, uno_QueryInterfaceFunc queryInterface, uno_ReleaseFunc release)
constexpr bool cmp_equal(T1 value1, T2 value2) noexcept
typelib_TypeDescriptionReference **SAL_CALL typelib_static_type_getByTypeClass(typelib_TypeClass eTypeClass) SAL_THROW_EXTERN_C()