virtual ActionInterface* copy( std::map<const DataSourceBase*, DataSourceBase*>& alreadyCloned ) const { vector<DataSourceBase::shared_ptr> argcopy( margs.size() ); unsigned int v=0; for (vector<DataSourceBase::shared_ptr>::iterator it = argcopy.begin(); it != argcopy.end(); ++it, ++v) argcopy[v] = (*it)->copy(alreadyCloned); return new CorbaOperationCallerCall(CService::_duplicate( mfact.in() ), mop, argcopy, mcaller, mctt, mresult->copy(alreadyCloned), mdocall); }
virtual ArrayPartDataSource<T>* copy( std::map<const base::DataSourceBase*, base::DataSourceBase*>& replace ) const { // if somehow a copy exists, return the copy, otherwise return this (see Attribute copy) if ( replace[this] != 0 ) { assert ( dynamic_cast<ArrayPartDataSource<T>*>( replace[this] ) == static_cast<ArrayPartDataSource<T>*>( replace[this] ) ); return static_cast<ArrayPartDataSource<T>*>( replace[this] ); } replace[this] = new ArrayPartDataSource<T>(*mref, mindex->copy(replace), mparent->copy(replace), mmax); return static_cast<ArrayPartDataSource<T>*>(replace[this]); }