[Libreoffice-commits] core.git: 2 commits - include/comphelper xmloff/source xmlscript/source
Noel Grandin (via logerrit)
logerrit at kemper.freedesktop.org
Thu May 27 12:58:56 UTC 2021
include/comphelper/stl_types.hxx | 14 +++++
xmloff/source/style/impastpl.cxx | 36 ++++++-------
xmlscript/source/xmldlg_imexp/exp_share.hxx | 2
xmlscript/source/xmldlg_imexp/xmldlg_export.cxx | 64 ++++++++++++------------
4 files changed, 65 insertions(+), 51 deletions(-)
New commits:
commit a76ae1c3d1076cbcb58d3fc27723e4eefffac0a3
Author: Noel Grandin <noel.grandin at collabora.co.uk>
AuthorDate: Thu May 27 13:21:16 2021 +0200
Commit: Noel Grandin <noel.grandin at collabora.co.uk>
CommitDate: Thu May 27 14:58:28 2021 +0200
no need to allocate Style objects separately
Change-Id: I88e4642a81b18c41216784332cc4a37a3bde9d95
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/116247
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin at collabora.co.uk>
diff --git a/xmlscript/source/xmldlg_imexp/exp_share.hxx b/xmlscript/source/xmldlg_imexp/exp_share.hxx
index dc7da2477194..919950c79bef 100644
--- a/xmlscript/source/xmldlg_imexp/exp_share.hxx
+++ b/xmlscript/source/xmldlg_imexp/exp_share.hxx
@@ -73,7 +73,7 @@ struct Style
};
class StyleBag
{
- ::std::vector< std::unique_ptr<Style> > _styles;
+ ::std::vector<Style> _styles;
public:
~StyleBag() ;
diff --git a/xmlscript/source/xmldlg_imexp/xmldlg_export.cxx b/xmlscript/source/xmldlg_imexp/xmldlg_export.cxx
index 55ee293bc464..6a7af3fc3d85 100644
--- a/xmlscript/source/xmldlg_imexp/xmldlg_export.cxx
+++ b/xmlscript/source/xmldlg_imexp/xmldlg_export.cxx
@@ -1272,72 +1272,72 @@ OUString StyleBag::getStyleId( Style const & rStyle )
}
// lookup existing style
- for (auto const & pStyle : _styles)
+ for (auto & rExistingStyle : _styles)
{
short demanded_defaults = ~rStyle._set & rStyle._all;
// test, if defaults are not set
- if ((~pStyle->_set & demanded_defaults) == demanded_defaults &&
- (rStyle._set & (pStyle->_all & ~pStyle->_set)) == 0)
+ if ((~rExistingStyle._set & demanded_defaults) == demanded_defaults &&
+ (rStyle._set & (rExistingStyle._all & ~rExistingStyle._set)) == 0)
{
- short bset = rStyle._set & pStyle->_set;
+ short bset = rStyle._set & rExistingStyle._set;
if ((bset & 0x1) &&
- rStyle._backgroundColor != pStyle->_backgroundColor)
+ rStyle._backgroundColor != rExistingStyle._backgroundColor)
continue;
if ((bset & 0x2) &&
- rStyle._textColor != pStyle->_textColor)
+ rStyle._textColor != rExistingStyle._textColor)
continue;
if ((bset & 0x20) &&
- rStyle._textLineColor != pStyle->_textLineColor)
+ rStyle._textLineColor != rExistingStyle._textLineColor)
continue;
if ((bset & 0x10) &&
- rStyle._fillColor != pStyle->_fillColor)
+ rStyle._fillColor != rExistingStyle._fillColor)
continue;
if ((bset & 0x4) &&
- (rStyle._border != pStyle->_border ||
+ (rStyle._border != rExistingStyle._border ||
(rStyle._border == BORDER_SIMPLE_COLOR &&
- rStyle._borderColor != pStyle->_borderColor)))
+ rStyle._borderColor != rExistingStyle._borderColor)))
continue;
if ((bset & 0x8) &&
- !equalFont( rStyle, *pStyle ))
+ !equalFont( rStyle, rExistingStyle ))
continue;
if ((bset & 0x40) &&
- rStyle._visualEffect != pStyle->_visualEffect)
+ rStyle._visualEffect != rExistingStyle._visualEffect)
continue;
// merge in
- short bnset = rStyle._set & ~pStyle->_set;
+ short bnset = rStyle._set & ~rExistingStyle._set;
if (bnset & 0x1)
- pStyle->_backgroundColor = rStyle._backgroundColor;
+ rExistingStyle._backgroundColor = rStyle._backgroundColor;
if (bnset & 0x2)
- pStyle->_textColor = rStyle._textColor;
+ rExistingStyle._textColor = rStyle._textColor;
if (bnset & 0x20)
- pStyle->_textLineColor = rStyle._textLineColor;
+ rExistingStyle._textLineColor = rStyle._textLineColor;
if (bnset & 0x10)
- pStyle->_fillColor = rStyle._fillColor;
+ rExistingStyle._fillColor = rStyle._fillColor;
if (bnset & 0x4) {
- pStyle->_border = rStyle._border;
- pStyle->_borderColor = rStyle._borderColor;
+ rExistingStyle._border = rStyle._border;
+ rExistingStyle._borderColor = rStyle._borderColor;
}
if (bnset & 0x8) {
- pStyle->_descr = rStyle._descr;
- pStyle->_fontRelief = rStyle._fontRelief;
- pStyle->_fontEmphasisMark = rStyle._fontEmphasisMark;
+ rExistingStyle._descr = rStyle._descr;
+ rExistingStyle._fontRelief = rStyle._fontRelief;
+ rExistingStyle._fontEmphasisMark = rStyle._fontEmphasisMark;
}
if (bnset & 0x40)
- pStyle->_visualEffect = rStyle._visualEffect;
+ rExistingStyle._visualEffect = rStyle._visualEffect;
- pStyle->_all |= rStyle._all;
- pStyle->_set |= rStyle._set;
+ rExistingStyle._all |= rStyle._all;
+ rExistingStyle._set |= rStyle._set;
- return pStyle->_id;
+ return rExistingStyle._id;
}
}
// no appr style found, append new
- std::unique_ptr<Style> pStyle(new Style( rStyle ));
- pStyle->_id = OUString::number( _styles.size() );
- _styles.push_back( std::move(pStyle) );
- return _styles.back()->_id;
+ Style aNewStyle( rStyle );
+ aNewStyle._id = OUString::number( _styles.size() );
+ _styles.push_back( aNewStyle );
+ return _styles.back()._id;
}
StyleBag::~StyleBag()
@@ -1353,9 +1353,9 @@ void StyleBag::dump( Reference< xml::sax::XExtendedDocumentHandler > const & xOu
xOut->ignorableWhitespace( OUString() );
xOut->startElement( aStylesName, Reference< xml::sax::XAttributeList >() );
// export styles
- for (auto const & _style : _styles)
+ for (auto & _style : _styles)
{
- Reference< xml::sax::XAttributeList > xAttr( _style->createElement() );
+ Reference< xml::sax::XAttributeList > xAttr( _style.createElement() );
static_cast< ElementDescriptor * >( xAttr.get() )->dump( xOut );
}
xOut->ignorableWhitespace( OUString() );
commit 2d0eea0a79df9bc54e075c90ee7d6134b03250c0
Author: Noel Grandin <noel.grandin at collabora.co.uk>
AuthorDate: Thu May 27 13:37:45 2021 +0200
Commit: Noel Grandin <noel.grandin at collabora.co.uk>
CommitDate: Thu May 27 14:58:12 2021 +0200
we can search std::set without allocating on the heap
we just need to add some overloads to UniquePtrValueLess
Change-Id: I91c395393a2de609c8f442de605d1dd2098dfae0
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/116248
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin at collabora.co.uk>
diff --git a/include/comphelper/stl_types.hxx b/include/comphelper/stl_types.hxx
index 5e8a532a60b9..5693a83338f5 100644
--- a/include/comphelper/stl_types.hxx
+++ b/include/comphelper/stl_types.hxx
@@ -74,6 +74,20 @@ template<class T> struct UniquePtrValueLess
assert(rhs.get());
return (*lhs) < (*rhs);
}
+ // The following are so we can search in std::set without allocating a temporary entry on the heap
+ typedef bool is_transparent;
+ bool operator()(T const& lhs,
+ std::unique_ptr<T> const& rhs) const
+ {
+ assert(rhs.get());
+ return lhs < (*rhs);
+ }
+ bool operator()(std::unique_ptr<T> const& lhs,
+ T const& rhs) const
+ {
+ assert(lhs.get());
+ return (*lhs) < rhs;
+ }
};
/// by-value implementation of std::foo<std::unique_ptr<T>>::operator==
diff --git a/xmloff/source/style/impastpl.cxx b/xmloff/source/style/impastpl.cxx
index 0a3e2e97595f..b965b7a5a8f8 100644
--- a/xmloff/source/style/impastpl.cxx
+++ b/xmloff/source/style/impastpl.cxx
@@ -367,8 +367,8 @@ void SvXMLAutoStylePoolP_Impl::AddFamily(
}
#if OSL_DEBUG_LEVEL > 0
- std::unique_ptr<XMLAutoStyleFamily> pTemp(new XMLAutoStyleFamily(nFamily));
- auto const iter = m_FamilySet.find(pTemp);
+ XMLAutoStyleFamily aTemp(nFamily);
+ auto const iter = m_FamilySet.find(aTemp);
if (iter != m_FamilySet.end())
{
// FIXME: do we really intend to replace the previous nFamily
@@ -388,8 +388,8 @@ void SvXMLAutoStylePoolP_Impl::SetFamilyPropSetMapper(
XmlStyleFamily nFamily,
const rtl::Reference < SvXMLExportPropertyMapper > & rMapper )
{
- std::unique_ptr<XMLAutoStyleFamily> pTemp(new XMLAutoStyleFamily(nFamily));
- auto const iter = m_FamilySet.find(pTemp);
+ XMLAutoStyleFamily aTemp(nFamily);
+ auto const iter = m_FamilySet.find(aTemp);
if (iter != m_FamilySet.end())
(*iter)->mxMapper = rMapper;
}
@@ -397,8 +397,8 @@ void SvXMLAutoStylePoolP_Impl::SetFamilyPropSetMapper(
// Adds a name to list
void SvXMLAutoStylePoolP_Impl::RegisterName( XmlStyleFamily nFamily, const OUString& rName )
{
- std::unique_ptr<XMLAutoStyleFamily> pTemp(new XMLAutoStyleFamily(nFamily));
- auto const iter = m_FamilySet.find(pTemp);
+ XMLAutoStyleFamily aTemp(nFamily);
+ auto const iter = m_FamilySet.find(aTemp);
assert(iter != m_FamilySet.end()); // family must be known
// SAL_DEBUG("SvXMLAutoStylePoolP_Impl::RegisterName: " << nFamily << ", '" << rName << "'");
(*iter)->maNameSet.insert(rName);
@@ -407,8 +407,8 @@ void SvXMLAutoStylePoolP_Impl::RegisterName( XmlStyleFamily nFamily, const OUStr
// Adds a name to list
void SvXMLAutoStylePoolP_Impl::RegisterDefinedName( XmlStyleFamily nFamily, const OUString& rName )
{
- std::unique_ptr<XMLAutoStyleFamily> pTemp(new XMLAutoStyleFamily(nFamily));
- auto const iter = m_FamilySet.find(pTemp);
+ XMLAutoStyleFamily aTemp(nFamily);
+ auto const iter = m_FamilySet.find(aTemp);
assert(iter != m_FamilySet.end()); // family must be known
(*iter)->maReservedNameSet.insert(rName);
}
@@ -455,8 +455,8 @@ bool SvXMLAutoStylePoolP_Impl::Add(
OUString& rName, XmlStyleFamily nFamily, const OUString& rParentName,
const ::std::vector< XMLPropertyState >& rProperties, bool bDontSeek )
{
- std::unique_ptr<XMLAutoStyleFamily> pTemp(new XMLAutoStyleFamily(nFamily));
- auto const iter = m_FamilySet.find(pTemp);
+ XMLAutoStyleFamily aTemp(nFamily);
+ auto const iter = m_FamilySet.find(aTemp);
assert(iter != m_FamilySet.end()); // family must be known
XMLAutoStyleFamily &rFamily = **iter;
@@ -481,8 +481,8 @@ bool SvXMLAutoStylePoolP_Impl::AddNamed(
{
// get family and parent the same way as in Add()
- std::unique_ptr<XMLAutoStyleFamily> pTemp(new XMLAutoStyleFamily(nFamily));
- auto const iter = m_FamilySet.find(pTemp);
+ XMLAutoStyleFamily aTemp(nFamily);
+ auto const iter = m_FamilySet.find(aTemp);
assert(iter != m_FamilySet.end()); // family must be known
XMLAutoStyleFamily &rFamily = **iter;
@@ -511,13 +511,13 @@ OUString SvXMLAutoStylePoolP_Impl::Find( XmlStyleFamily nFamily,
{
OUString sName;
- std::unique_ptr<XMLAutoStyleFamily> pTemp(new XMLAutoStyleFamily(nFamily));
- auto const iter = m_FamilySet.find(pTemp);
+ XMLAutoStyleFamily aTemp(nFamily);
+ auto const iter = m_FamilySet.find(aTemp);
assert(iter != m_FamilySet.end()); // family must be known
XMLAutoStyleFamily const& rFamily = **iter;
- std::unique_ptr<XMLAutoStylePoolParent> pTmp(new XMLAutoStylePoolParent(rParent));
- auto const it2 = rFamily.m_ParentSet.find(pTmp);
+ XMLAutoStylePoolParent aTmp(rParent);
+ auto const it2 = rFamily.m_ParentSet.find(aTmp);
if (it2 != rFamily.m_ParentSet.end())
{
sName = (*it2)->Find(rFamily, rProperties);
@@ -579,8 +579,8 @@ void SvXMLAutoStylePoolP_Impl::exportXML(
const SvXMLAutoStylePoolP *pAntiImpl) const
{
// Get list of parents for current family (nFamily)
- std::unique_ptr<XMLAutoStyleFamily> pTemp(new XMLAutoStyleFamily(nFamily));
- auto const iter = m_FamilySet.find(pTemp);
+ XMLAutoStyleFamily aTemp(nFamily);
+ auto const iter = m_FamilySet.find(aTemp);
assert(iter != m_FamilySet.end()); // family must be known
const XMLAutoStyleFamily &rFamily = **iter;
More information about the Libreoffice-commits
mailing list