diff options
author | Michael Weghorn <m.weghorn@posteo.de> | 2021-06-28 10:49:50 +0100 |
---|---|---|
committer | Michael Weghorn <m.weghorn@posteo.de> | 2021-06-28 15:33:40 +0200 |
commit | 620223ec2b47133db4faddd1f7cbf0294fb72fa4 (patch) | |
tree | 933f4e506f1e4c713651402bb83ef0cf0ba903fd /winaccessibility | |
parent | 197d9631b3add45d294f1d7f81cee00a695f36c9 (diff) |
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@posteo.de>
Diffstat (limited to 'winaccessibility')
-rw-r--r-- | winaccessibility/source/UAccCOM/MAccessible.cxx | 79 |
1 files changed, 31 insertions, 48 deletions
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 |