22#include <com/sun/star/lang/IndexOutOfBoundsException.hpp>
33 AccessibleRelation lcl_getRelationByType( std::vector<AccessibleRelation>& raRelations, sal_Int16 aRelationType )
35 for (
const auto& aRelation: raRelations)
37 if (aRelation.RelationType == aRelationType)
40 return AccessibleRelation();
45AccessibleRelationSetHelper::AccessibleRelationSetHelper ()
50 :
cppu::WeakImplHelper<XAccessibleRelationSet>(rHelper),
69 std::scoped_lock aGuard (
maMutex);
87 AccessibleRelation SAL_CALL
90 std::scoped_lock aGuard (
maMutex);
93 throw lang::IndexOutOfBoundsException();
113 std::scoped_lock aGuard (
maMutex);
115 AccessibleRelation defaultRelation;
116 AccessibleRelation relationByType = lcl_getRelationByType(
maRelations, aRelationType);
117 return relationByType.RelationType != defaultRelation.RelationType;
131AccessibleRelation SAL_CALL
134 std::scoped_lock aGuard (
maMutex);
136 return lcl_getRelationByType(
maRelations, aRelationType);
141 std::scoped_lock aGuard (
maMutex);
145 if (aRelation.RelationType == rRelation.RelationType)
158 static const uno::Sequence< css::uno::Type>
aTypes {
167 return css::uno::Sequence<sal_Int8>();
::std::vector< AccessibleRelation > maRelations
css::uno::Type const & get()
@descr This base class provides an implementation of the AccessibleRelationSet service.
std::mutex maMutex
Mutex guarding this object.
virtual ~AccessibleRelationSetHelper() override
virtual sal_Int32 SAL_CALL getRelationCount() override
Returns the number of relations in this relation set.
virtual css::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId() override
Returns an implementation id.
virtual sal_Bool SAL_CALL containsRelation(sal_Int16 aRelationType) override
Tests whether the relation set contains a relation matching the specified key.
virtual css::uno::Sequence< css::uno::Type > SAL_CALL getTypes() override
Returns a sequence of all supported interfaces.
virtual css::accessibility::AccessibleRelation SAL_CALL getRelationByType(sal_Int16 aRelationType) override
Retrieve and return the relation with the given relation type.
void AddRelation(const css::accessibility::AccessibleRelation &rRelation)
std::vector< css::accessibility::AccessibleRelation > maRelations
The implementation of this helper interface.
virtual css::accessibility::AccessibleRelation SAL_CALL getRelation(sal_Int32 nIndex) override
Returns the relation of this relation set that is specified by the given index.
css::uno::Sequence< T > concatSequences(const css::uno::Sequence< T > &rS1, const Ss &... rSn)
constexpr std::enable_if_t< std::is_signed_v< T >, std::make_unsigned_t< T > > make_unsigned(T value)