21 #include <com/sun/star/xml/AttributeData.hpp>
23 #include <rtl/ustrbuf.hxx>
42 : mpContainer(
std::move( pContainer ) )
45 mpContainer = std::make_unique<SvXMLAttrContainerData>();
61 const sal_uInt16 nAttrCount =
mpContainer->GetAttrCount();
63 size_t nPos = aName.find(
':' );
64 if( nPos == std::u16string_view::npos )
66 for( sal_uInt16 nAttr = 0; nAttr < nAttrCount; nAttr++ )
75 const std::u16string_view aPrefix( aName.substr( 0L, nPos ) );
76 const std::u16string_view aLName( aName.substr( nPos+1 ) );
78 for( sal_uInt16 nAttr = 0; nAttr < nAttrCount; nAttr++ )
92 return theSvUnoAttributeContainerUnoTunnelId.
getSeq();
105 if( nAttr == USHRT_MAX )
106 throw container::NoSuchElementException();
108 xml::AttributeData
aData;
109 aData.Namespace =
mpContainer->GetAttrNamespace(nAttr);
110 aData.Type =
"CDATA";
118 const sal_uInt16 nAttrCount =
mpContainer->GetAttrCount();
120 uno::Sequence< OUString > aElementNames( static_cast<sal_Int32>(nAttrCount) );
121 OUString *pNames = aElementNames.getArray();
123 for( sal_uInt16 nAttr = 0; nAttr < nAttrCount; nAttr++ )
125 OUStringBuffer sBuffer(
mpContainer->GetAttrPrefix(nAttr) );
126 if( !sBuffer.isEmpty() )
127 sBuffer.append(
':' );
128 sBuffer.append(
mpContainer->GetAttrLName(nAttr) );
129 *pNames++ = sBuffer.makeStringAndClear();
132 return aElementNames;
143 if(
auto pData = o3tl::tryAccess<xml::AttributeData>(aElement) )
146 if( nAttr == USHRT_MAX )
147 throw container::NoSuchElementException();
149 sal_Int32
nPos = aName.indexOf(
':' );
152 const OUString aPrefix( aName.copy( 0L, nPos ));
153 const OUString aLName( aName.copy( nPos+1 ));
155 if(
pData->Namespace.isEmpty() )
168 if(
pData->Namespace.isEmpty() )
176 throw lang::IllegalArgumentException();
182 auto pData = o3tl::tryAccess<xml::AttributeData>(aElement);
184 throw lang::IllegalArgumentException();
187 if( nAttr != USHRT_MAX )
188 throw container::ElementExistException();
190 sal_Int32
nPos = aName.indexOf(
':' );
193 const OUString aPrefix( aName.copy( 0L, nPos ));
194 const OUString aLName( aName.copy( nPos+1 ));
196 if(
pData->Namespace.isEmpty() )
209 if(
pData->Namespace.isEmpty() )
220 if( nAttr == USHRT_MAX )
221 throw container::NoSuchElementException();
229 return "SvUnoAttributeContainer";
234 return {
"com.sun.star.xml.AttributeContainer" };
virtual css::uno::Sequence< OUString > SAL_CALL getElementNames() override
std::unique_ptr< sal_Int32[]> pData
virtual sal_Bool SAL_CALL hasByName(const OUString &aName) override
virtual sal_Int64 SAL_CALL getSomething(const css::uno::Sequence< sal_Int8 > &aIdentifier) override
std::unique_ptr< SvXMLAttrContainerData > mpContainer
bool CPPUHELPER_DLLPUBLIC supportsService(css::lang::XServiceInfo *implementation, rtl::OUString const &name)
static const css::uno::Sequence< sal_Int8 > & getUnoTunnelId() noexcept
virtual void SAL_CALL removeByName(const OUString &Name) override
constexpr OUStringLiteral aData
const css::uno::Sequence< sal_Int8 > & getSeq() const
virtual css::uno::Any SAL_CALL getByName(const OUString &aName) override
uno::Reference< uno::XInterface > SvUnoAttributeContainer_CreateInstance()
virtual void SAL_CALL insertByName(const OUString &aName, const css::uno::Any &aElement) override
virtual sal_Bool SAL_CALL supportsService(const OUString &ServiceName) override
css::uno::Type const & get()
virtual OUString SAL_CALL getImplementationName() override
virtual void SAL_CALL replaceByName(const OUString &aName, const css::uno::Any &aElement) override
sal_Int64 getSomethingImpl(const css::uno::Sequence< sal_Int8 > &rId, T *pThis, FallbackToGetSomethingOf< Base >={})
SvUnoAttributeContainer(std::unique_ptr< SvXMLAttrContainerData > pContainer=nullptr)
virtual css::uno::Type SAL_CALL getElementType() override
virtual sal_Bool SAL_CALL hasElements() override
virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() override
SAL_DLLPRIVATE sal_uInt16 getIndexByName(std::u16string_view aName) const