torc-master
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
torc::generic::_impl::Copier< class Design > Class Template Referenceabstract

#include <Cloning.hpp>

+ Inheritance diagram for torc::generic::_impl::Copier< class Design >:
+ Collaboration diagram for torc::generic::_impl::Copier< class Design >:

Public Types

typedef Design Type
 
typedef boost::shared_ptr< TypePointer
 

Public Member Functions

Pointer operator() (const Pointer &inSource, const ObjectFactorySharedPtr &inFactory) throw (Error)
 
void visit (Design &inDesign) throw (Error)
 
 Copier ()
 
 ~Copier () throw ()
 
virtual void visit (_Tp &client)=0 throw (Error)
 

Private Attributes

ObjectFactorySharedPtr mFactory
 
Pointer mReturnVal
 

Detailed Description

template<>
class torc::generic::_impl::Copier< class Design >

Definition at line 190 of file Cloning.hpp.

Member Typedef Documentation

typedef boost::shared_ptr<Type> torc::generic::_impl::Copier< class Design >::Pointer

Definition at line 193 of file Cloning.hpp.

Definition at line 192 of file Cloning.hpp.

Constructor & Destructor Documentation

Definition at line 246 of file Cloning.hpp.

246  : Type::Visitor(), mFactory(), mReturnVal() {
247  }
torc::generic::_impl::Copier< class Design >::~Copier ( )
throw (
)
inline

Definition at line 249 of file Cloning.hpp.

249  {
250  }

Member Function Documentation

Pointer torc::generic::_impl::Copier< class Design >::operator() ( const Pointer inSource,
const ObjectFactorySharedPtr inFactory 
)
throw (Error
)
inline

Definition at line 195 of file Cloning.hpp.

196  {
197  mFactory = inFactory;
198  inSource->accept(*this);
199  return mReturnVal;
200  }
template<typename _Tp >
virtual void torc::generic::VisitorType< _Tp >::visit ( _Tp &  client)
throw (Error
)
pure virtualinherited

Visit the target object. This will typically be a derived leaf type.

Parameters
[in,out]clientA reference to the target object
Exceptions
ErrorException generated by any of the functions called from inside visit()

+ Here is the caller graph for this function:

void torc::generic::_impl::Copier< class Design >::visit ( Design inDesign)
throw (Error
)
inline

Definition at line 202 of file Cloning.hpp.

203  {
204  DesignSharedPtr designPtr;
205  mFactory->create(designPtr);
206 
207  designPtr->setComments(inDesign.getComments());
208  designPtr->setName(inDesign.getName());
209  designPtr->setOriginalName(inDesign.getOriginalName());
210  designPtr->setParent(inDesign.getParent());
211  designPtr->setCellRefName(inDesign.getCellRefName());
212  designPtr->setLibraryRefName(inDesign.getLibraryRefName());
213 
214  std::list < std::string > userData;
215  inDesign.getUserData(userData);
216  designPtr->setUserData(userData);
217 
218  std::vector<StatusSharedPtr> outStatus;
219  inDesign.getStatuses(outStatus);
220  for(std::vector<StatusSharedPtr>::iterator it = outStatus.begin(); it != outStatus.end();
221  ++it) {
222  StatusSharedPtr clonedStatus = clone(*it, mFactory);
223  designPtr->addStatus(clonedStatus);
224  }
225 
226  std::map<std::string, PropertySharedPtr> outProperties;
227  std::vector<PropertySharedPtr> properties;
228  inDesign.getProperties(outProperties);
229  for(std::map<std::string, PropertySharedPtr>::iterator it = outProperties.begin();
230  it != outProperties.end(); ++it) {
231  PropertySharedPtr clonedProperty = clone((*it).second, mFactory);
232  properties.push_back(clonedProperty);
233  }
234  for(std::vector<PropertySharedPtr>::iterator it = properties.begin();
235  it != properties.end(); ++it) {
236  designPtr->setProperty((*it)->getName(), *it);
237  }
238 
239  mReturnVal = designPtr;
240  }
241  catch(Error& e) {
242  e.setCurrentLocation(__FUNCTION__, __FILE__, __LINE__);
243  throw;
244  }
boost::shared_ptr< Design > DesignSharedPtr
boost::shared_ptr< _Tp > clone(const boost::shared_ptr< _Tp > &inPointer, const ObjectFactorySharedPtr &inFactory)
Definition: Cloning.hpp:63
boost::shared_ptr< Property > PropertySharedPtr
boost::shared_ptr< Status > StatusSharedPtr

+ Here is the call graph for this function:

Field Documentation

Definition at line 253 of file Cloning.hpp.

Pointer torc::generic::_impl::Copier< class Design >::mReturnVal
private

Definition at line 254 of file Cloning.hpp.


The documentation for this class was generated from the following file: