20#ifndef INCLUDED_SAX_FASTATTRIBS_HXX
21#define INCLUDED_SAX_FASTATTRIBS_HXX
23#include <com/sun/star/xml/sax/XFastAttributeList.hpp>
24#include <com/sun/star/xml/sax/XFastTokenHandler.hpp>
25#include <com/sun/star/util/XCloneable.hpp>
56 public cppu::WeakImplHelper< css::xml::sax::XFastTokenHandler >
60 virtual sal_Int32
getTokenDirect(
const char *pToken, sal_Int32 nLength )
const = 0;
69 static sal_Int32 getTokenFromChars(
71 std::string_view str );
79 FastAttributeList(
const css::uno::Reference< css::xml::sax::XFastAttributeList > & xAttrList );
85 maAttributeValues.reserve(nNumTokens+1);
86 maAttributeTokens.reserve(nNumTokens);
89 void add(
const css::uno::Reference<css::xml::sax::XFastAttributeList>& );
90 void add( sal_Int32 nToken, std::string_view value );
91 void add( sal_Int32 nToken, std::u16string_view sValue );
92 template <
typename C,
typename T1,
typename T2>
93 void add( sal_Int32 nToken, rtl::StringConcat<C, T1, T2>&& value) {
add(
nToken, Concat2View(
value)); }
94 template <
typename Val,
typename... Rest, std::enable_if_t<(
sizeof...(Rest) > 0),
int> = 0>
95 void add( sal_Int32 nToken, Val&& val, Rest&&... rest )
97 add(
nToken, std::forward<Val>(val));
98 add(std::forward<Rest>(rest)...);
100 void addNS( sal_Int32 nNamespaceToken, sal_Int32 nToken, std::string_view sValue );
101 void addNS( sal_Int32 nNamespaceToken, sal_Int32 nToken, std::u16string_view sValue );
103 void addUnknown(
const OUString& rNamespaceURL,
const OString& rQName,
const OString& value );
104 void addUnknown(
const OString& rName,
const OString& value );
108 size_t size()
const {
return maAttributeValues.size(); }
111 bool getAsInteger( sal_Int32 nToken, sal_Int32 &rInt)
const;
112 bool getAsDouble( sal_Int32 nToken,
double &rDouble)
const;
113 bool getAsView( sal_Int32 nToken, std::string_view& rPos )
const;
120 return std::string_view(getFastAttributeValue(nTokenIndex), AttributeValueLength(nTokenIndex));
124 return OStringToOUString(getAsViewByIndex(nTokenIndex), RTL_TEXTENCODING_UTF8);
128 virtual sal_Bool SAL_CALL hasAttribute( ::sal_Int32 Token )
override;
129 virtual ::sal_Int32 SAL_CALL getValueToken( ::sal_Int32 Token )
override;
130 virtual ::sal_Int32 SAL_CALL getOptionalValueToken( ::sal_Int32 Token, ::sal_Int32 Default )
override;
131 virtual OUString SAL_CALL
getValue( ::sal_Int32 Token )
override;
132 virtual OUString SAL_CALL getOptionalValue( ::sal_Int32 Token )
override;
133 virtual css::uno::Sequence< css::xml::Attribute > SAL_CALL getUnknownAttributes( )
override;
134 virtual css::uno::Sequence< css::xml::FastAttribute > SAL_CALL getFastAttributes()
override;
137 virtual ::css::uno::Reference< ::css::util::XCloneable > SAL_CALL createClone()
override;
141 for (
size_t i=0;
i<maAttributeTokens.size(); ++
i)
142 if (maAttributeTokens[
i] == Token)
154 : mrList(rList),
mnIdx(nIdx)
226 FastAttributeIter
find( sal_Int32 nToken )
const;
241 const css::uno::Reference< css::xml::sax::XFastAttributeList >& xAttrList )
Use for fast iteration and conversion of attributes.
sal_Int32 getLength() const
FastAttributeIter(const FastAttributeList &rList, size_t nIdx)
const FastAttributeIter & operator*() const
sal_Int32 getToken() const
bool isString(const char *str) const
const FastAttributeList & mrList
sal_Int32 toInt32() const
OUString toString() const
const char * toCString() const
bool operator!=(const FastAttributeIter &rhs) const
std::string_view toView() const
sal_Int32 AttributeValueLength(size_t i) const
std::vector< sal_Int32 > maAttributeValues
std::vector< UnknownAttribute > maUnknownAttributes
FastAttributeIter begin() const
OUString getValueByIndex(sal_Int32 nTokenIndex) const
std::string_view getAsViewByIndex(sal_Int32 nTokenIndex) const
char * mpChunk
buffer to store all attribute values - null terminated strings
void reserve(sal_Int32 nNumTokens)
sal_Int32 getAttributeIndex(::sal_Int32 Token)
const std::vector< sal_Int32 > & getFastAttributeTokens() const
std::vector< sal_Int32 > maAttributeTokens
FastAttributeIter end() const
sal_Int32 getAsIntegerByIndex(sal_Int32 nTokenIndex) const
sal_Int32 mnChunkLength
size of allocated memory for mpChunk
void add(sal_Int32 nToken, rtl::StringConcat< C, T1, T2 > &&value)
FastTokenHandlerBase * mpTokenHandler
void add(sal_Int32 nToken, Val &&val, Rest &&... rest)
const char * getFastAttributeValue(size_t nIndex) const
A native C++ interface to tokenisation.
virtual sal_Int32 getTokenDirect(const char *pToken, sal_Int32 nLength) const =0
OSQLColumns::const_iterator find(const OSQLColumns::const_iterator &first, const OSQLColumns::const_iterator &last, std::u16string_view _rVal, const ::comphelper::UStringMixEqual &_rCase)
css::beans::Optional< css::uno::Any > getValue(std::u16string_view id)
sal_Int32 toInt32(std::u16string_view str, sal_Int16 radix=10)
double toDouble(std::u16string_view str)
FastAttributeList & castToFastAttributeList(const css::uno::Reference< css::xml::sax::XFastAttributeList > &xAttrList)
void FillAttribute(css::xml::Attribute *pAttrib) const
UnknownAttribute(OUString sNamespaceURL, OString aName, OString value)