From e303b3bba8caaefd3a7897a773deb69643967047 Mon Sep 17 00:00:00 2001 From: Stephan Bergmann Date: Wed, 29 May 2024 17:36:55 +0200 Subject: Implement attribute handling Change-Id: Ic30d2de582f952555ec672984da78a07a9319443 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/168224 Reviewed-by: Stephan Bergmann Tested-by: Jenkins --- bridges/source/cpp_uno/gcc3_wasm/uno2cpp.cxx | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) (limited to 'bridges') diff --git a/bridges/source/cpp_uno/gcc3_wasm/uno2cpp.cxx b/bridges/source/cpp_uno/gcc3_wasm/uno2cpp.cxx index 4b4cdb2bbadb..fcc978ab672e 100644 --- a/bridges/source/cpp_uno/gcc3_wasm/uno2cpp.cxx +++ b/bridges/source/cpp_uno/gcc3_wasm/uno2cpp.cxx @@ -18,7 +18,9 @@ #include #include #include +#include #include +#include #include #include #include @@ -324,7 +326,21 @@ void unoInterfaceProxyDispatch(uno_Interface* pUnoI, const typelib_TypeDescripti { case typelib_TypeClass_INTERFACE_ATTRIBUTE: { - std::abort(); + auto const atd + = reinterpret_cast(pMemberDescr); + VtableSlot slot(getVtableSlot(atd)); + if (pReturn == nullptr) + { + slot.index += 1; + call(pThis, slot, cppu::UnoType::get().getTypeLibType(), 1, + &o3tl::temporary( + typelib_MethodParameter{ nullptr, atd->pAttributeTypeRef, true, false }), + pReturn, pArgs, ppException); + } + else + { + call(pThis, slot, atd->pAttributeTypeRef, 0, nullptr, pReturn, pArgs, ppException); + } break; } case typelib_TypeClass_INTERFACE_METHOD: -- cgit