summaryrefslogtreecommitdiff
path: root/winaccessibility
diff options
context:
space:
mode:
authorMichael Weghorn <m.weghorn@posteo.de>2021-06-28 10:49:50 +0100
committerMichael Weghorn <m.weghorn@posteo.de>2021-06-28 15:33:40 +0200
commit620223ec2b47133db4faddd1f7cbf0294fb72fa4 (patch)
tree933f4e506f1e4c713651402bb83ef0cf0ba903fd /winaccessibility
parent197d9631b3add45d294f1d7f81cee00a695f36c9 (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.cxx79
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