Kaydet (Commit) 0a5d6ac8 authored tarafından Thorsten Behrens's avatar Thorsten Behrens

xmlsecurity: slightly more modern c++

Change-Id: I680bd57a492fe04dc98f2f61ff292e44e544a483
Reviewed-on: https://gerrit.libreoffice.org/37451Tested-by: 's avatarJenkins <ci@libreoffice.org>
Reviewed-by: 's avatarThorsten Behrens <Thorsten.Behrens@CIB.de>
üst 09b76cc3
...@@ -38,6 +38,7 @@ class ElementMark; ...@@ -38,6 +38,7 @@ class ElementMark;
class ElementCollector; class ElementCollector;
#include <vector> #include <vector>
#include <memory>
class XSECFW_DLLPUBLIC SAXEventKeeperImpl : public cppu::WeakImplHelper class XSECFW_DLLPUBLIC SAXEventKeeperImpl : public cppu::WeakImplHelper
< <
...@@ -114,7 +115,7 @@ private: ...@@ -114,7 +115,7 @@ private:
/* /*
* maintains a collection of all ElementMarks. * maintains a collection of all ElementMarks.
*/ */
std::vector< const ElementMark* > m_vElementMarkBuffers; std::vector<std::unique_ptr<const ElementMark>> m_vElementMarkBuffers;
/* /*
* maintains a list of new ElementCollectors that will be created * maintains a list of new ElementCollectors that will be created
...@@ -214,6 +215,9 @@ public: ...@@ -214,6 +215,9 @@ public:
SAXEventKeeperImpl(); SAXEventKeeperImpl();
virtual ~SAXEventKeeperImpl() override; virtual ~SAXEventKeeperImpl() override;
SAXEventKeeperImpl(const SAXEventKeeperImpl&) = delete;
SAXEventKeeperImpl& operator=(const SAXEventKeeperImpl&) = delete;
/* XSAXEventKeeper */ /* XSAXEventKeeper */
virtual sal_Int32 SAL_CALL addElementCollector( ) override; virtual sal_Int32 SAL_CALL addElementCollector( ) override;
virtual void SAL_CALL removeElementCollector( sal_Int32 id ) override; virtual void SAL_CALL removeElementCollector( sal_Int32 id ) override;
......
...@@ -69,13 +69,6 @@ SAXEventKeeperImpl::~SAXEventKeeperImpl() ...@@ -69,13 +69,6 @@ SAXEventKeeperImpl::~SAXEventKeeperImpl()
*/ */
m_vNewElementCollectors.clear(); m_vNewElementCollectors.clear();
m_pNewBlocker = nullptr; m_pNewBlocker = nullptr;
std::vector< const ElementMark* >::const_iterator ii = m_vElementMarkBuffers.begin();
for( ; ii != m_vElementMarkBuffers.end(); ++ii )
{
delete (*ii);
}
m_vElementMarkBuffers.clear();
} }
void SAXEventKeeperImpl::setCurrentBufferNode(BufferNode* pBufferNode) void SAXEventKeeperImpl::setCurrentBufferNode(BufferNode* pBufferNode)
...@@ -182,9 +175,8 @@ BufferNode* SAXEventKeeperImpl::addNewElementMarkBuffers() ...@@ -182,9 +175,8 @@ BufferNode* SAXEventKeeperImpl::addNewElementMarkBuffers()
if (!m_vNewElementCollectors.empty()) if (!m_vNewElementCollectors.empty())
{ {
std::vector< const ElementCollector* >::const_iterator ii = m_vNewElementCollectors.begin(); for( auto ii = m_vNewElementCollectors.begin();
ii != m_vNewElementCollectors.end(); ++ii )
for( ; ii != m_vNewElementCollectors.end(); ++ii )
{ {
pBufferNode->addElementCollector(*ii); pBufferNode->addElementCollector(*ii);
} }
...@@ -219,13 +211,11 @@ ElementMark* SAXEventKeeperImpl::findElementMarkBuffer(sal_Int32 nId) const ...@@ -219,13 +211,11 @@ ElementMark* SAXEventKeeperImpl::findElementMarkBuffer(sal_Int32 nId) const
{ {
ElementMark* pElementMark = nullptr; ElementMark* pElementMark = nullptr;
std::vector< const ElementMark* >::const_iterator ii = m_vElementMarkBuffers.begin(); for( auto&& ii : m_vElementMarkBuffers )
for( ; ii != m_vElementMarkBuffers.end(); ++ii )
{ {
if ( nId == (*ii)->getBufferId()) if ( nId == ii->getBufferId())
{ {
pElementMark = const_cast<ElementMark*>(*ii); pElementMark = const_cast<ElementMark*>(ii.get());
break; break;
} }
} }
...@@ -249,19 +239,18 @@ void SAXEventKeeperImpl::removeElementMarkBuffer(sal_Int32 nId) ...@@ -249,19 +239,18 @@ void SAXEventKeeperImpl::removeElementMarkBuffer(sal_Int32 nId)
* nId - the Id of the ElementMark to be removed. * nId - the Id of the ElementMark to be removed.
******************************************************************************/ ******************************************************************************/
{ {
std::vector< const ElementMark* >::iterator ii = m_vElementMarkBuffers.begin(); for( auto ii = m_vElementMarkBuffers.begin();
ii != m_vElementMarkBuffers.end(); ++ii )
for( ; ii != m_vElementMarkBuffers.end(); ++ii )
{ {
if ( nId == (*ii)->getBufferId()) if ( nId == (*ii)->getBufferId())
{ {
/* /*
* checks whether this ElementMark still in the new ElementCollect array * checks whether this ElementMark still in the new ElementCollect array
*/ */
std::vector< const ElementCollector* >::iterator jj = m_vNewElementCollectors.begin(); for( auto jj = m_vNewElementCollectors.begin();
for( ; jj != m_vNewElementCollectors.end(); ++jj ) jj != m_vNewElementCollectors.end(); ++jj )
{ {
if ((*ii) == (*jj)) if (ii->get() == (*jj))
{ {
m_vNewElementCollectors.erase(jj); m_vNewElementCollectors.erase(jj);
break; break;
...@@ -271,16 +260,11 @@ void SAXEventKeeperImpl::removeElementMarkBuffer(sal_Int32 nId) ...@@ -271,16 +260,11 @@ void SAXEventKeeperImpl::removeElementMarkBuffer(sal_Int32 nId)
/* /*
* checks whether this ElementMark is the new Blocker * checks whether this ElementMark is the new Blocker
*/ */
if ((*ii) == m_pNewBlocker) if (ii->get() == m_pNewBlocker)
{ {
m_pNewBlocker = nullptr; m_pNewBlocker = nullptr;
} }
/*
* destroy the ElementMark
*/
delete (*ii);
m_vElementMarkBuffers.erase( ii ); m_vElementMarkBuffers.erase( ii );
break; break;
} }
...@@ -353,8 +337,8 @@ OUString SAXEventKeeperImpl::printBufferNode( ...@@ -353,8 +337,8 @@ OUString SAXEventKeeperImpl::printBufferNode(
rc += "\n"; rc += "\n";
std::vector< const BufferNode* >* vChildren = pBufferNode->getChildren(); std::vector< const BufferNode* >* vChildren = pBufferNode->getChildren();
std::vector< const BufferNode* >::const_iterator jj = vChildren->begin(); for( auto jj = vChildren->begin();
for( ; jj != vChildren->end(); ++jj ) jj != vChildren->end(); ++jj )
{ {
rc += printBufferNode(const_cast<BufferNode *>(*jj), nIndent+4); rc += printBufferNode(const_cast<BufferNode *>(*jj), nIndent+4);
} }
...@@ -387,10 +371,9 @@ cssu::Sequence< cssu::Reference< cssxw::XXMLElementWrapper > > ...@@ -387,10 +371,9 @@ cssu::Sequence< cssu::Reference< cssxw::XXMLElementWrapper > >
cssu::Sequence < cssu::Reference< cssu::Sequence < cssu::Reference<
cssxw::XXMLElementWrapper > > aChildrenCollection ( vChildren->size()); cssxw::XXMLElementWrapper > > aChildrenCollection ( vChildren->size());
std::vector< const BufferNode* >::const_iterator ii = vChildren->begin();
sal_Int32 nIndex = 0; sal_Int32 nIndex = 0;
for( ; ii != vChildren->end(); ++ii ) for( auto ii = vChildren->begin();
ii != vChildren->end(); ++ii )
{ {
aChildrenCollection[nIndex] = (*ii)->getXMLElement(); aChildrenCollection[nIndex] = (*ii)->getXMLElement();
nIndex++; nIndex++;
...@@ -531,8 +514,8 @@ void SAXEventKeeperImpl::smashBufferNode( ...@@ -531,8 +514,8 @@ void SAXEventKeeperImpl::smashBufferNode(
pParent->removeChild(pBufferNode); pParent->removeChild(pBufferNode);
pBufferNode->setParent(nullptr); pBufferNode->setParent(nullptr);
std::vector< const BufferNode * >::const_iterator ii = vChildren->begin(); for( auto ii = vChildren->begin();
for( ; ii != vChildren->end(); ++ii ) ii != vChildren->end(); ++ii )
{ {
const_cast<BufferNode *>(*ii)->setParent(pParent); const_cast<BufferNode *>(*ii)->setParent(pParent);
pParent->addChild(*ii, nIndex); pParent->addChild(*ii, nIndex);
...@@ -632,7 +615,7 @@ void SAXEventKeeperImpl::releaseElementMarkBuffer() ...@@ -632,7 +615,7 @@ void SAXEventKeeperImpl::releaseElementMarkBuffer()
m_bIsReleasing = true; m_bIsReleasing = true;
while (!m_vReleasedElementMarkBuffers.empty()) while (!m_vReleasedElementMarkBuffers.empty())
{ {
std::vector< sal_Int32 >::iterator pId = m_vReleasedElementMarkBuffers.begin(); auto pId = m_vReleasedElementMarkBuffers.begin();
sal_Int32 nId = *pId; sal_Int32 nId = *pId;
m_vReleasedElementMarkBuffers.erase( pId ); m_vReleasedElementMarkBuffers.erase( pId );
...@@ -820,7 +803,8 @@ sal_Int32 SAXEventKeeperImpl::createElementCollector( ...@@ -820,7 +803,8 @@ sal_Int32 SAXEventKeeperImpl::createElementCollector(
bModifyElement, bModifyElement,
xReferenceResolvedListener); xReferenceResolvedListener);
m_vElementMarkBuffers.push_back( pElementCollector ); m_vElementMarkBuffers.push_back(
std::unique_ptr<const ElementMark>(pElementCollector));
/* /*
* All the new EC to initial EC array. * All the new EC to initial EC array.
...@@ -850,7 +834,8 @@ sal_Int32 SAXEventKeeperImpl::createBlocker() ...@@ -850,7 +834,8 @@ sal_Int32 SAXEventKeeperImpl::createBlocker()
OSL_ASSERT(m_pNewBlocker == nullptr); OSL_ASSERT(m_pNewBlocker == nullptr);
m_pNewBlocker = new ElementMark(cssxc::sax::ConstOfSecurityId::UNDEFINEDSECURITYID, nId); m_pNewBlocker = new ElementMark(cssxc::sax::ConstOfSecurityId::UNDEFINEDSECURITYID, nId);
m_vElementMarkBuffers.push_back( m_pNewBlocker ); m_vElementMarkBuffers.push_back(
std::unique_ptr<const ElementMark>(m_pNewBlocker));
return nId; return nId;
} }
...@@ -913,7 +898,7 @@ void SAL_CALL SAXEventKeeperImpl::setElement( ...@@ -913,7 +898,7 @@ void SAL_CALL SAXEventKeeperImpl::setElement(
BufferNode* pBufferNode = pElementMark->getBufferNode(); BufferNode* pBufferNode = pElementMark->getBufferNode();
if (pBufferNode != nullptr) if (pBufferNode != nullptr)
{ {
bool bIsCurrent = m_xXMLDocument->isCurrent(pBufferNode->getXMLElement()); const bool bIsCurrent = m_xXMLDocument->isCurrent(pBufferNode->getXMLElement());
pBufferNode->setXMLElement(aElement); pBufferNode->setXMLElement(aElement);
if (bIsCurrent) if (bIsCurrent)
...@@ -1072,7 +1057,7 @@ void SAL_CALL SAXEventKeeperImpl::startElement( ...@@ -1072,7 +1057,7 @@ void SAL_CALL SAXEventKeeperImpl::startElement(
void SAL_CALL SAXEventKeeperImpl::endElement( const OUString& aName ) void SAL_CALL SAXEventKeeperImpl::endElement( const OUString& aName )
{ {
bool bIsCurrent = m_xXMLDocument->isCurrent(m_pCurrentBufferNode->getXMLElement()); const bool bIsCurrent = m_xXMLDocument->isCurrent(m_pCurrentBufferNode->getXMLElement());
/* /*
* If there is a following handler and no blocking now, then * If there is a following handler and no blocking now, then
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment