[Libreoffice-commits] core.git: winaccessibility/source

Michael Weghorn (via logerrit) logerrit at kemper.freedesktop.org
Mon Jun 28 13:34:14 UTC 2021


 winaccessibility/source/UAccCOM/MAccessible.cxx |   79 +++++++++---------------
 1 file changed, 31 insertions(+), 48 deletions(-)

New commits:
commit 620223ec2b47133db4faddd1f7cbf0294fb72fa4
Author:     Michael Weghorn <m.weghorn at posteo.de>
AuthorDate: Mon Jun 28 10:49:50 2021 +0100
Commit:     Michael Weghorn <m.weghorn at posteo.de>
CommitDate: Mon Jun 28 15:33:40 2021 +0200

    wina11y: Convert QUERYXINTERFACE macro to template function
    
    Change-Id: Ia4ecab7ada4df83b773505561569cededef35612
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/118005
    Tested-by: Jenkins
    Reviewed-by: Michael Weghorn <m.weghorn at posteo.de>

diff --git a/winaccessibility/source/UAccCOM/MAccessible.cxx b/winaccessibility/source/UAccCOM/MAccessible.cxx
index f3c0dbf09493..5e0cd681381d 100644
--- a/winaccessibility/source/UAccCOM/MAccessible.cxx
+++ b/winaccessibility/source/UAccCOM/MAccessible.cxx
@@ -91,6 +91,24 @@ enum XInterfaceIndex {
     XI_NULL         = -1
 };
 
+template <class Interface>
+bool queryXInterface(XAccessible* pXAcc, XInterface** ppXI)
+{
+    if (!pXAcc)
+        return false;
+
+    Reference<XAccessibleContext> pRContext = pXAcc->getAccessibleContext();
+    if (!pRContext.is())
+        return false;
+
+    Reference<Interface> pRXI(pRContext, UNO_QUERY);
+    if (!pRXI.is())
+        return false;
+
+    *ppXI = pRXI.get();
+    return true;
+}
+
 }
 
 // IA2 states mapping, and name
@@ -145,25 +163,6 @@ short const UNO_STATES[] =
 
 using namespace com::sun::star::accessibility::AccessibleRole;
 
-
-#define QUERYXINTERFACE(ainterface) \
-{                           \
-    if(pXAcc == nullptr)    \
-    return false;       \
-    pRContext = pXAcc->getAccessibleContext();  \
-    if( !pRContext.is() )   \
-{                       \
-    return false;       \
-}                       \
-    Reference<X##ainterface> pRXI(pRContext,UNO_QUERY);\
-    if( !pRXI.is() )        \
-{                       \
-    return false;       \
-}                       \
-    *ppXI = pRXI.get(); \
-    return true;            \
-}
-
 #define ISDESTROY() \
     if(m_isDestroy) \
     return S_FALSE;
@@ -2503,51 +2502,35 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP CMAccessible::Put_ActionDescription( const OLE
 
 bool CMAccessible::GetXInterfaceFromXAccessible(XAccessible* pXAcc, XInterface** ppXI, int index)
 {
-    Reference< XAccessibleContext > pRContext;
-
     switch(index)
     {
     case XI_COMPONENT:
-        QUERYXINTERFACE(AccessibleComponent)
-            break;
+        return queryXInterface<XAccessibleComponent>(pXAcc, ppXI);
     case XI_TEXT:
-        QUERYXINTERFACE(AccessibleText)
-            break;
+        return queryXInterface<XAccessibleText>(pXAcc, ppXI);
     case XI_EDITABLETEXT:
-        QUERYXINTERFACE(AccessibleEditableText)
-            break;
+        return queryXInterface<XAccessibleEditableText>(pXAcc, ppXI);
     case XI_TABLE:
-        QUERYXINTERFACE(AccessibleTable)
-            break;
+        return queryXInterface<XAccessibleTable>(pXAcc, ppXI);
     case XI_SELECTION:
-        QUERYXINTERFACE(AccessibleSelection)
-            break;
+        return queryXInterface<XAccessibleSelection>(pXAcc, ppXI);
     case XI_EXTENDEDCOMP:
-        QUERYXINTERFACE(AccessibleExtendedComponent)
-            break;
+        return queryXInterface<XAccessibleExtendedComponent>(pXAcc, ppXI);
     case XI_KEYBINDING:
-        QUERYXINTERFACE(AccessibleKeyBinding)
-            break;
+        return queryXInterface<XAccessibleKeyBinding>(pXAcc, ppXI);
     case XI_ACTION:
-        QUERYXINTERFACE(AccessibleAction)
-            break;
+        return queryXInterface<XAccessibleAction>(pXAcc, ppXI);
     case XI_VALUE:
-        QUERYXINTERFACE(AccessibleValue)
-            break;
+        return queryXInterface<XAccessibleValue>(pXAcc, ppXI);
     case XI_HYPERTEXT:
-        QUERYXINTERFACE(AccessibleHypertext)
-            break;
+        return queryXInterface<XAccessibleHypertext>(pXAcc, ppXI);
     case XI_HYPERLINK:
-        QUERYXINTERFACE(AccessibleHyperlink)
-            break;
+        return queryXInterface<XAccessibleHyperlink>(pXAcc, ppXI);
     case XI_IMAGE:
-        QUERYXINTERFACE(AccessibleImage)
-            break;
+        return queryXInterface<XAccessibleImage>(pXAcc, ppXI);
     default:
-        break;
+        return false;
     }
-
-    return false;
 }
 
 template<typename T> static HRESULT


More information about the Libreoffice-commits mailing list