Replace lists by vectors in animation parts (sd/animations)

Change-Id: Ie5306041e5cde5617e460ae4d98861e8d26e389d
Reviewed-on: https://gerrit.libreoffice.org/44297
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
This commit is contained in:
Julien Nabet 2017-11-04 14:45:32 +01:00
parent 33157a1153
commit 393fa77d27
4 changed files with 23 additions and 31 deletions

View file

@ -56,7 +56,7 @@
#include <cppuhelper/implbase.hxx>
#include <osl/mutex.hxx>
#include <list>
#include <vector>
#include <algorithm>
#include <string.h>
@ -100,10 +100,6 @@ using namespace ::com::sun::star::animations::AnimationNodeType;
namespace animcore
{
typedef std::list< Reference< XAnimationNode > > ChildList_t;
class AnimationNodeBase : public XAnimateMotion,
public XAnimateColor,
public XTransitionFilter,
@ -344,14 +340,14 @@ private:
double mfIterateInterval;
/** sorted list of child nodes for XTimeContainer*/
ChildList_t maChildren;
std::vector< Reference< XAnimationNode > > maChildren;
};
class TimeContainerEnumeration : public ::cppu::WeakImplHelper< XEnumeration >
{
public:
explicit TimeContainerEnumeration( const ChildList_t &rChildren );
explicit TimeContainerEnumeration( const std::vector< Reference< XAnimationNode > > &rChildren );
// Methods
virtual sal_Bool SAL_CALL hasMoreElements() override;
@ -359,16 +355,16 @@ public:
private:
/** sorted list of child nodes */
ChildList_t maChildren;
std::vector< Reference< XAnimationNode > > maChildren;
/** current iteration position */
ChildList_t::iterator maIter;
std::vector< Reference< XAnimationNode > >::iterator maIter;
/** our first, last and only protection from multi-threads! */
Mutex maMutex;
};
TimeContainerEnumeration::TimeContainerEnumeration( const ChildList_t &rChildren )
TimeContainerEnumeration::TimeContainerEnumeration( const std::vector< Reference< XAnimationNode > > &rChildren )
: maChildren( rChildren )
{
maIter = maChildren.begin();
@ -1192,11 +1188,9 @@ Reference< XCloneable > SAL_CALL AnimationNode::createClone()
Reference< XTimeContainer > xContainer( xNewNode, UNO_QUERY );
if( xContainer.is() )
{
ChildList_t::iterator aIter( maChildren.begin() );
ChildList_t::iterator aEnd( maChildren.end() );
while( aIter != aEnd )
for (auto const& child : maChildren)
{
Reference< XCloneable > xCloneable((*aIter++), UNO_QUERY );
Reference< XCloneable > xCloneable(child, UNO_QUERY );
if( xCloneable.is() ) try
{
Reference< XAnimationNode > xNewChildNode( xCloneable->createClone(), UNO_QUERY );
@ -1768,13 +1762,13 @@ Reference< XAnimationNode > SAL_CALL AnimationNode::insertBefore( const Referenc
if( !newChild.is() || !refChild.is() )
throw IllegalArgumentException();
ChildList_t::iterator before = std::find(maChildren.begin(), maChildren.end(), refChild);
if( before == maChildren.end() )
throw NoSuchElementException();
if( std::find(maChildren.begin(), maChildren.end(), newChild) != maChildren.end() )
throw ElementExistException();
auto before = std::find(maChildren.begin(), maChildren.end(), refChild);
if( before == maChildren.end() )
throw NoSuchElementException();
maChildren.insert( before, newChild );
Reference< XInterface > xThis( static_cast< OWeakObject * >(this) );
@ -1792,13 +1786,13 @@ Reference< XAnimationNode > SAL_CALL AnimationNode::insertAfter( const Reference
if( !newChild.is() || !refChild.is() )
throw IllegalArgumentException();
ChildList_t::iterator before = std::find(maChildren.begin(), maChildren.end(), refChild);
if( before == maChildren.end() )
throw NoSuchElementException();
if( std::find(maChildren.begin(), maChildren.end(), newChild) != maChildren.end() )
throw ElementExistException();
auto before = std::find(maChildren.begin(), maChildren.end(), refChild);
if( before == maChildren.end() )
throw NoSuchElementException();
++before;
if( before != maChildren.end() )
maChildren.insert( before, newChild );
@ -1820,13 +1814,13 @@ Reference< XAnimationNode > SAL_CALL AnimationNode::replaceChild( const Referenc
if( !newChild.is() || !oldChild.is() )
throw IllegalArgumentException();
ChildList_t::iterator replace = std::find(maChildren.begin(), maChildren.end(), oldChild);
if( replace == maChildren.end() )
throw NoSuchElementException();
if( std::find(maChildren.begin(), maChildren.end(), newChild) != maChildren.end() )
throw ElementExistException();
auto replace = std::find(maChildren.begin(), maChildren.end(), oldChild);
if( replace == maChildren.end() )
throw NoSuchElementException();
Reference< XInterface > xNull( nullptr );
oldChild->setParent( xNull );
@ -1847,7 +1841,7 @@ Reference< XAnimationNode > SAL_CALL AnimationNode::removeChild( const Reference
if( !oldChild.is() )
throw IllegalArgumentException();
ChildList_t::iterator old = std::find(maChildren.begin(), maChildren.end(), oldChild);
auto old = std::find(maChildren.begin(), maChildren.end(), oldChild);
if( old == maChildren.end() )
throw NoSuchElementException();

View file

@ -38,8 +38,6 @@ struct AfterEffectNode
: mxNode( xNode ), mxMaster( xMaster ), mbOnNextEffect( bOnNextEffect ) {}
};
typedef std::list< AfterEffectNode > AfterEffectNodeList;
/** inserts the animation node in the given AfterEffectNode at the correct position
in the timing hierarchy of its master */
SD_DLLPUBLIC void stl_process_after_effect_node_func(AfterEffectNode const & rNode);

View file

@ -1822,7 +1822,7 @@ void EffectSequenceHelper::implRebuild()
EffectSequence::iterator aEnd( maEffects.end() );
if( aIter != aEnd )
{
AfterEffectNodeList aAfterEffects;
std::vector< sd::AfterEffectNode > aAfterEffects;
CustomAnimationEffectPtr pEffect = (*aIter++);

View file

@ -89,7 +89,7 @@ private:
ImplSdPPTImport* mpPPTImport;
SvStream& mrStCtrl;
sd::AfterEffectNodeList maAfterEffectNodes;
std::vector< sd::AfterEffectNode > maAfterEffectNodes;
#ifdef DBG_ANIM_LOG
FILE * mpFile;