torc-master
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
View.cpp
Go to the documentation of this file.
1 // Torc - Copyright 2011-2013 University of Southern California. All Rights Reserved.
2 // $HeadURL$
3 // $Id$
4 
5 // This program is free software: you can redistribute it and/or modify it under the terms of the
6 // GNU General Public License as published by the Free Software Foundation, either version 3 of the
7 // License, or (at your option) any later version.
8 //
9 // This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
10 // without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
11 // the GNU General Public License for more details.
12 //
13 // You should have received a copy of the GNU General Public License along with this program. If
14 // not, see <http://www.gnu.org/licenses/>.
15 
16 #ifndef HAVE_CONFIG_H
17 #include "torc/generic/config.h"
18 #endif
19 
20 //BOOST
21 #include <boost/bind.hpp>
22 #include <boost/mem_fn.hpp>
23 #ifdef GENOM_SERIALIZATION
24 #include <boost/archive/binary_iarchive.hpp>
25 #include <boost/archive/binary_oarchive.hpp>
26 #include <boost/serialization/base_object.hpp>
27 #include <boost/serialization/is_abstract.hpp>
28 #include <boost/serialization/map.hpp>
29 #include <boost/serialization/shared_ptr.hpp>
30 #endif //GENOM_SERIALIZATION
32 #include "torc/generic/Log.hpp"
33 #include "torc/generic/Net.hpp"
36 #include "torc/generic/Port.hpp"
38 #include "torc/generic/View.hpp"
39 #include "torc/generic/Cell.hpp"
40 
41 namespace torc {
42 namespace generic {
43 
44 #ifdef GENOM_SERIALIZATION
45 class RestoredInstanceUpdater {
46 public:
47  void operator()(const InstanceSharedPtr& inInst) const throw(Error) {
48  try {
49  inInst->setParent(mView);
50  inInst->restoreMaster();
51  } catch(Error& e) {
52  e.setCurrentLocation(__FUNCTION__, __FILE__, __LINE__ );
53  throw;
54  }
55  }
56 
57  RestoredInstanceUpdater(const ViewSharedPtr& inView) : mView(inView) {}
58 private:
59  ViewSharedPtr mView;
60 };
61 #endif //GENOM_SERIALIZATION
62 /**
63  * Create a view
64  *
65  * @param[in] inName Name of the view to be created.
66  * @param[in] inCellPtr Pointer to parented(Cell) object.
67  * @param[in] inViewType View Type.
68  * @param[in] inOriginalName Original name of the view [optional].
69  *
70  * @return Pointer to created view.
71  **/
73  const View::Type& inViewType, const std::string& inOriginalName) throw (Error) {
74  try {
75  ViewSharedPtr newView;
76  create(newView);
77  newView->setName(inName);
78  newView->setParent(inCellPtr);
79  newView->setType(inViewType);
80  newView->setOriginalName(inOriginalName);
81  inCellPtr->addView(newView);
82  return newView;
83  } catch(Error& e) {
84  e.setCurrentLocation(__FUNCTION__, __FILE__, __LINE__);
85  throw;
86  }
87 }
88 
89 void View::accept(BaseVisitor& inoutVisitor) throw (Error) {
90  try {
91  runVisitor(*this, inoutVisitor);
92  } catch(Error& e) {
93  e.setCurrentLocation(__FUNCTION__, __FILE__, __LINE__);
94  throw;
95  }
96 }
97 
99  if(!mParameters->isContextRegistered(mMyContext)) {
100  mParameters->registerContext(mMyContext);
101  }
102  return mParameters;
103 }
104 
105 /**
106  * Set the type of view
107  *
108  * @param[in] inSource Type of view
109  */
110 void View::setType(const View::Type& inSource) {
111  mType = inSource;
112 }
113 
114 /**
115  * Set the list of instances to this view.
116  *
117  * @param[in] inSource List of instances.
118  */
119 void View::setInstances(const std::vector<InstanceSharedPtr>& inSource) throw (Error) {
120  std::vector<InstanceSharedPtr>::const_iterator instance = inSource.begin();
121  std::vector<InstanceSharedPtr>::const_iterator end = inSource.end();
122  for(; instance != end; ++instance) {
123  try {
124  addInstance(*instance);
125  } catch(Error& e) {
126  e.setCurrentLocation(__FUNCTION__, __FILE__, __LINE__);
127  throw;
128  }
129  }
130 }
131 
132 /**
133  * Add an instance to the list of instances. Empty pointer is ignored.
134  *
135  * @param[in] inInstance Pointer to instance to be added.
136  *
137  * @exception Error Could not add instance because pointer to the Instance does not exist
138  * @exception Error Could not add instance because Instance name is empty
139  * @exception Error Could not add instance because Instance name already exists
140  */
141 void View::addInstance(const InstanceSharedPtr& inInstance) throw (Error) {
142  if(!inInstance) {
143  Error e(eMessageIdErrorPointerToItemDoesNotExist, __FUNCTION__, __FILE__, __LINE__);
144  e.saveContextData("Pointer to the instance object does not exist", inInstance);
145  throw e;
146  }
147  std::string name = inInstance->getName();
148  if(name.empty()) {
149  Error e(eMessageIdErrorEmptyItemName, __FUNCTION__, __FILE__, __LINE__);
150  e.saveContextData("Empty Instance name", name);
151  throw e;
152  }
153  if(false == mInstanceSymTab.set(name, inInstance)) {
154  Error e(eMessageIdErrorItemAlreadyExists, __FUNCTION__, __FILE__, __LINE__);
155  e.saveContextData("Instance name", name);
156  throw e;
157  }
158  inInstance->setParent(getSharedThis());
159 }
160 
161 /**
162  * Find an instance by name, in the list of instances.
163  *
164  * @param[in] inName String inSource specifying the name of the instance.
165  *
166  * @return A pointer to the instance if found, an empty pointer otherwise.
167  *
168  * @exception Error Empty Instance name
169  */
171  if(inName.empty()) {
172  Error e(eMessageIdErrorEmptyItemName, __FUNCTION__, __FILE__, __LINE__);
173  e.saveContextData("Instance name", inName);
174  throw e;
175  }
176  InstanceSharedPtr instance;
177  mInstanceSymTab.get(inName, instance);
178  return instance;
179 }
180 
181 /**
182  * Remove the specified instance from the list of cells. If an empty pointer is passed, it returns
183  * without doing anything
184  *
185  * @param inInstance Pointer to an instance object.
186  *
187  * @exception Error Empty Instance name
188  * @exception Error Instance name not preset in collection.
189  */
190 void View::removeInstance(const std::string& inName) throw (Error) {
191  if(inName.empty()) {
192  Error e(eMessageIdErrorEmptyItemName, __FUNCTION__, __FILE__, __LINE__);
193  e.saveContextData("Instance name", inName);
194  throw e;
195  }
196  InstanceSharedPtr instance = findInstance(inName);
197  if(instance) {
198  std::vector<PortReferenceSharedPtr> refs;
199  instance->getPortReferences(refs);
200  for_each(refs.begin(), refs.end(),
201  boost::bind(boost::mem_fn(&Connectable::disconnect), _1));
202  if(false == mInstanceSymTab.remove(inName)) {
203  Error e(eMessageIdErrorItemNotFound, __FUNCTION__, __FILE__, __LINE__);
204  e.saveContextData("Instance name", inName);
205  throw e;
206  }
207  } else {
208  Error e(eMessageIdErrorItemNotFound, __FUNCTION__, __FILE__, __LINE__);
209  e.saveContextData("Instance name", inName);
210  throw e;
211  }
212 }
213 
214 /**
215  * Set the list of nets to this view.
216  *
217  * @param[in] inSource List of nets.
218  */
219 void View::setNets(const std::vector<NetSharedPtr>& inSource) throw (Error) {
220  std::vector<NetSharedPtr>::const_iterator net = inSource.begin();
221  std::vector<NetSharedPtr>::const_iterator end = inSource.end();
222  for(; net != end; ++net) {
223  try {
224  addNet(*net);
225  } catch(Error& e) {
226  e.setCurrentLocation(__FUNCTION__, __FILE__, __LINE__);
227  throw;
228  }
229  }
230 }
231 
232 /**
233  * Add a net to the list of nets. Empty pointer is ignored.
234  *
235  * @param[in] inNet Pointer to net to be added.
236  *
237  * @exception Error Could not add Net, because Net name is empty
238  * @exception Error Could not add Net, because Net name already exists
239  */
240 void View::addNet(const NetSharedPtr& inNet) throw (Error) {
241  if(!inNet) {
242  return;
243  }
244  std::string name = inNet->getName();
245  if(name.empty()) {
246  Error e(eMessageIdErrorEmptyItemName, __FUNCTION__, __FILE__, __LINE__);
247  e.saveContextData("Net name", name);
248  throw e;
249  }
250  if(false == mNetSymTab.set(name, inNet)) {
251  Error e(eMessageIdErrorItemAlreadyExists, __FUNCTION__, __FILE__, __LINE__);
252  e.saveContextData("Net name", name);
253  throw e;
254  }
255  inNet->setParent(getSharedThis());
256 }
257 
258 /**
259  * Find a net by name, in the list of net.
260  *
261  * @param[in] inName String inSource specifying the name of the Net
262  *
263  * @return A pointer to the net if found, an empty pointer otherwise.
264  * @exception Error Empty Net name
265  */
267  if(inName.empty()) {
268  Error e(eMessageIdErrorEmptyItemName, __FUNCTION__, __FILE__, __LINE__);
269  e.saveContextData("Net name not found", inName);
270  throw e;
271  }
272  NetSharedPtr net;
273  mNetSymTab.get(inName, net);
274  return net;
275 }
276 
277 /**
278  * Remove the specified net from the list of nets. If an empty pointer is passed, it returns
279  * without doing anything
280  *
281  * @param inNet Pointer to a net object.
282  *
283  * @exception Error Empty Net name
284  * @exception Error Net not preset in collection.
285  */
286 void View::removeNet(const std::string& inName) throw (Error) {
287  if(inName.empty()) {
288  Error e(eMessageIdErrorEmptyItemName, __FUNCTION__, __FILE__, __LINE__);
289  e.saveContextData("Net name", inName);
290  throw e;
291  }
292  if(false == mNetSymTab.remove(inName)) {
293  Error e(eMessageIdErrorItemNotFound, __FUNCTION__, __FILE__, __LINE__);
294  e.saveContextData("Net name", inName);
295  throw e;
296  }
297 }
298 
299 /**
300  * Set the list of ports to this view.
301  *
302  * @param[in] inSource List of ports
303  */
304 void View::setPorts(const std::vector<PortSharedPtr>& inSource) throw (Error) {
305  std::vector<PortSharedPtr>::const_iterator port = inSource.begin();
306  std::vector<PortSharedPtr>::const_iterator end = inSource.end();
307  for(; port != end; ++port) {
308  try {
309  addPort(*port);
310  } catch(Error& e) {
311  e.setCurrentLocation(__FUNCTION__, __FILE__, __LINE__);
312  throw;
313  }
314  }
315 
316 }
317 
318 /**
319  * Add a port to the list of ports. Empty pointer is ignored.
320  *
321  * @param[in] inPort Pointer to port to be added.
322  *
323  * @exception Error Could not add port, because Port name is empty
324  */
325 void View::addPort(const PortSharedPtr& inPort) throw (Error) {
326  if(!inPort) {
327  return;
328  }
329  std::string name = inPort->getName();
330  if(name.empty()) {
331  Error e(eMessageIdErrorEmptyItemName, __FUNCTION__, __FILE__, __LINE__);
332  e.saveContextData("Port name", name);
333  throw e;
334  }
335  if(false == mPortSymTab.set(name, inPort)) {
336  Error e(eMessageIdErrorItemAlreadyExists, __FUNCTION__, __FILE__, __LINE__);
337  e.saveContextData("Port name", name);
338  throw e;
339  }
340  inPort->setParent(getSharedThis());
341 }
342 
343 /**
344  * Find a port by name, in the list of ports.
345  *
346  * @param[in] inName String inSource specifying the name of the port.
347  *
348  * @return A pointer to the port if found, an empty pointer otherwise.
349  *
350  * @exception Error Empty Port name
351  */
353  if(inName.empty()) {
354  Error e(eMessageIdErrorEmptyItemName, __FUNCTION__, __FILE__, __LINE__);
355  e.saveContextData("Port name", inName);
356  throw e;
357  }
358  PortSharedPtr port;
359  mPortSymTab.get(inName, port);
360  return port;
361 }
362 
363 /**
364  * Remove the specified port from the list of ports. If an empty pointer is passed, it returns
365  * without doing anything
366  *
367  * @param inName Name of the port to be removed
368  *
369  * @exception Error Empty Port name
370  * @exception Error Port not preset in collection.
371  */
372 void View::removePort(const std::string& inName) throw (Error) {
373  if(inName.empty()) {
374  Error e(eMessageIdErrorEmptyItemName, __FUNCTION__, __FILE__, __LINE__);
375  e.saveContextData("Port name", inName);
376  throw e;
377  }
378  if(false == mPortSymTab.remove(inName)) {
379  Error e(eMessageIdErrorItemNotFound, __FUNCTION__, __FILE__, __LINE__);
380  e.saveContextData("Port name", inName);
381  throw e;
382  }
383 }
384 
386  mNonNetlistViewData = inData;
387 }
388 
389 /**
390  * Set the vector of permutables to this view. It will lead to a linear traversal on the list. So
391  * usage of this API is not recommended.
392  *
393  * @param[in] inSource Vector of permutables to this view.
394  * @exception Error Could not add permutable because pointer to the permutable does not exist
395  */
396 void View::setPermutables(const std::vector<PermutableSharedPtr>& inSource) throw (Error) {
397  std::vector<PermutableSharedPtr>::const_iterator entry = inSource.begin();
398  std::vector<PermutableSharedPtr>::const_iterator end = inSource.end();
399  for(; entry != end; ++entry) {
400  try {
401  addPermutable(*entry);
402  } catch(Error& e) {
403  e.setCurrentLocation(__FUNCTION__, __FILE__, __LINE__);
404  throw;
405  }
406  }
407 }
408 
409 /**
410  * Add a permutable to this view.
411  *
412  * @param[in] inPermutable Pointer to permutable to be added.
413  * @exception Error Could not add permutable because pointer to the permutable does not exist
414  */
415 bool View::addPermutable(const PermutableSharedPtr& inPermutable) throw (Error) {
416  if(!inPermutable) {
417  Error e(eMessageIdErrorPointerToItemDoesNotExist, __FUNCTION__, __FILE__, __LINE__);
418  e.saveContextData("Pointer to the permutable object does not exist", inPermutable);
419  throw e;
420  }
421  if(inPermutable) {
422  mPermutables.push_back(inPermutable);
423  return true;
424  } else {
425  return false;
426  }
427 }
428 
429 /**
430  * Set the vector of joined info for this view.
431  *
432  * @param[in] inSource Vector of joined info to this view.
433  * @exception Error Could not add joined info because pointer to the joined info does not exist
434  */
435 void View::setInterfaceJoinedInfos(const std::vector<InterfaceJoinedInfoSharedPtr> & inSource)
436  throw (Error) {
437  std::vector<InterfaceJoinedInfoSharedPtr>::const_iterator entry = inSource.begin();
438  std::vector<InterfaceJoinedInfoSharedPtr>::const_iterator end = inSource.end();
439  for(; entry != end; ++entry) {
440  try {
441  addInterfaceJoinedInfo(*entry);
442  } catch(Error& e) {
443  e.setCurrentLocation(__FUNCTION__, __FILE__, __LINE__);
444  throw;
445  }
446  }
447 }
448 
449 /**
450  * Add a joined info to this view.
451  *
452  * @param[in] inJoinedInfo Pointer to joined info to be added.
453  * @exception Error Could not add joined info because pointer to the joined info does not exist
454  */
456  if(!inJoinedInfo) {
457  Error e(eMessageIdErrorPointerToItemDoesNotExist, __FUNCTION__, __FILE__, __LINE__);
458  e.saveContextData("Pointer to the joined info object does not exist", inJoinedInfo);
459  throw e;
460  }
461  if(inJoinedInfo) {
462  mInterfaceJoinedInfos.push_back(inJoinedInfo);
463  return true;
464  } else {
465  return false;
466  }
467 }
468 
469 /**
470  * Set the attributes of a view interface.
471  * Attributes include designator, simulate, timing, comments, userdata etc.
472  * This will decompile within (contents ...) construct.
473  *
474  * @param[in] inSource Pointer to InterfaceAttributes object.
475  */
477  mAttributes = inSource;
478 }
479 
480 /**
481  * Set the pointer to the simulate.
482  *
483  * @param[in] inSource Pointer to the simulate
484  */
485 void View::setSimulate(const SimulateSharedPtr& inSource) {
486  mSimulate = inSource;
487 }
488 
489 /**
490  * Set the pointer to the timing object
491  *
492  * @param[in] inSource Pointer to the timing object
493  */
494 void View::setTiming(const TimingSharedPtr& inSource) {
495  mTiming = inSource;
496 }
497 
500  mParameters(new ParameterMap()), mMyContext(mParameters->getNewContext()), mInstanceSymTab(),
501  mNetSymTab(), mPortSymTab(), mType(eTypeNetlist), mPermutables(), mInterfaceJoinedInfos(),
502  mAttributes(), mSimulate(), mTiming() {}
503 
504 View::~View() throw () {
505  if(!getName().empty()) {
506  log("View %s is being destroyed.\n", getName().c_str());
507  }
508  mNetSymTab.applyOnAll(boost::bind(boost::mem_fn(&Net::disconnect), _1));
509  mNetSymTab.clear();
510  mPortSymTab.clear();
512  mPermutables.clear();
513  mInterfaceJoinedInfos.clear();
514 }
515 
516 #ifdef GENOM_SERIALIZATION
517 template <class Archive> void View::load(Archive& ar, unsigned int) {
518  ar & boost::serialization::base_object<Extern>(*this);
519  ar & boost::serialization::base_object<Nameable>(*this);
520  ar & boost::serialization::base_object<PropertyContainer>(*this);
521  ar & boost::serialization::base_object<Renamable>(*this);
522  ar & boost::serialization::base_object<SelfReferencing<View> >(*this);
523  ar & boost::serialization::base_object<Visitable>(*this);
524  ar & mInstanceSymTab;
525  ar & mNetSymTab;
526  ar & mPortSymTab;
527  ar & mType;
528  std::map<std::string, ParameterSharedPtr> params;
529  ar & params;
530  mParameters->registerContext(mMyContext);
531  std::map<std::string, ParameterSharedPtr>::iterator
532  it = params.begin();
533  std::map<std::string, ParameterSharedPtr>::iterator
534  end = params.end();
535  for(; it != end; ++it) {
536  mParameters->set(mMyContext, (*it).first, (*it).second);
537  }
538 }
539 
540 template <class Archive> void View::save(Archive& ar, unsigned int) const {
541  ar & boost::serialization::base_object<Extern>(*this);
542  ar & boost::serialization::base_object<Nameable>(*this);
543  ar & boost::serialization::base_object<PropertyContainer>(*this);
544  ar & boost::serialization::base_object<Renamable>(*this);
545  ar & boost::serialization::base_object<SelfReferencing<View> >(*this);
546  ar & boost::serialization::base_object<Visitable>(*this);
547  ar & mInstanceSymTab;
548  ar & mNetSymTab;
549  ar & mPortSymTab;
550  ar & mType;
551  std::map<std::string,ParameterSharedPtr> params;
552  mParameters->getAllParameters(mMyContext, params);
553  ar & params;
554 }
555 
556 void View::restoreActions() throw(Error) {
557  try {
558  mInstanceSymTab.applyOnAll(RestoredInstanceUpdater(getSharedThis()));
559  mInstanceSymTab.applyOnAll(boost::bind(boost::mem_fn(&Net::setParent), _1,
560  getSharedThis()));
561  mInstanceSymTab.applyOnAll(boost::bind(boost::mem_fn(&Port::setParent), _1,
562  getSharedThis()));
563  } catch(Error& e) {
564  e.setCurrentLocation(__FUNCTION__, __FILE__, __LINE__);
565  throw;
566  }
567 }
568 
569 //TO SATISFY THE LINKER
570 template void View::load<boost::archive::binary_iarchive>(boost::archive::binary_iarchive& ar,
571  const unsigned int);
572 
573 template void View::save<boost::archive::binary_oarchive>(boost::archive::binary_oarchive& ar,
574  const unsigned int) const;
575 
576 #endif //GENOM_SERIALIZATION
577 
578 }// namespace generic
579 } // namespace torc
void setNets(const std::vector< NetSharedPtr > &inSource)
Definition: View.cpp:219
ParameterContext mMyContext
Definition: View.hpp:608
void removeInstance(const std::string &inName)
Definition: View.cpp:190
Represents an EDIF cell.
Definition: Cell.hpp:55
void log(const char *fmt,...)
Definition: Log.cpp:89
boost::shared_ptr< Instance > InstanceSharedPtr
bool addPermutable(const PermutableSharedPtr &inPermutable)
Definition: View.cpp:415
ParameterMapSharedPtr getParameters()
Definition: View.cpp:98
An object that has a parent.
SymTab< std::string, NetSharedPtr > mNetSymTab
Definition: View.hpp:610
Represents objects that have properties.
void addNet(const NetSharedPtr &inNet)
Definition: View.cpp:240
void setTiming(const TimingSharedPtr &inSource)
Definition: View.cpp:494
Represents and EDIF View.
Definition: View.hpp:61
void addInstance(const InstanceSharedPtr &inInstance)
Definition: View.cpp:141
void setInstances(const std::vector< InstanceSharedPtr > &inSource)
Definition: View.cpp:119
boost::shared_ptr< Permutable > PermutableSharedPtr
void setType(const Type &inSource)
Definition: View.cpp:110
Represents all classes that can hold user comments.
Definition: Commentable.hpp:36
virtual ~View()
Definition: View.cpp:504
void removePort(const std::string &inName)
Definition: View.cpp:372
Represents class that can hold userData.
bool addInterfaceJoinedInfo(const InterfaceJoinedInfoSharedPtr &inJoinedInfo)
Definition: View.cpp:455
void setSimulate(const SimulateSharedPtr &inSource)
Definition: View.cpp:485
void applyOnAll(const _Action &action)
Definition: SymTab.hpp:192
void addPort(const PortSharedPtr &inPort)
Definition: View.cpp:325
std::vector< InterfaceJoinedInfoSharedPtr > mInterfaceJoinedInfos
Definition: View.hpp:615
boost::shared_ptr< Simulate > SimulateSharedPtr
void runVisitor(_Tp &inoutVisited, BaseVisitor &inoutVisitor)
Definition: VisitorType.hpp:78
std::string string
void setPorts(const std::vector< PortSharedPtr > &inSource)
Definition: View.cpp:304
The Error object thrown by different methods of EdifOM.
Definition: Error.hpp:41
void setNonNetlistViewData(const std::string &inData)
Definition: View.cpp:385
virtual void accept(BaseVisitor &inoutVisitor)
Definition: View.cpp:89
boost::shared_ptr< Net > NetSharedPtr
A base class for Visitor.
Definition: VisitorType.hpp:31
std::vector< PermutableSharedPtr > mPermutables
Definition: View.hpp:614
bool get(const KeyType &inKey, ValueType &outValue) const
Definition: SymTab.hpp:121
void saveContextData(const std::string &inName, const boost::any &inSource)
Definition: Error.cpp:79
SymTab< std::string, PortSharedPtr > mPortSymTab
Definition: View.hpp:611
ParameterMapSharedPtr mParameters
Definition: View.hpp:607
virtual void disconnect()
NetSharedPtr findNet(const std::string &inName)
Definition: View.cpp:266
boost::shared_ptr< InterfaceAttributes > InterfaceAttributesSharedPtr
InstanceSharedPtr findInstance(const std::string &inName)
Definition: View.cpp:170
void removeNet(const std::string &inName)
Definition: View.cpp:286
void setInterfaceJoinedInfos(const std::vector< InterfaceJoinedInfoSharedPtr > &inSource)
Definition: View.cpp:435
TimingSharedPtr mTiming
Definition: View.hpp:618
virtual const std::string getName() const
Definition: Nameable.hpp:89
boost::shared_ptr< View > ViewSharedPtr
boost::shared_ptr< Cell > CellSharedPtr
void setInterfaceAttributes(const InterfaceAttributesSharedPtr &inSource)
Definition: View.cpp:476
An object that has a name.
Definition: Nameable.hpp:34
boost::shared_ptr< InterfaceJoinedInfo > InterfaceJoinedInfoSharedPtr
boost::shared_ptr< Port > PortSharedPtr
virtual void setParent(const boost::shared_ptr< View > &inSource)
SymTab< std::string, InstanceSharedPtr > mInstanceSymTab
Definition: View.hpp:609
Represents objects that can be renamed.
std::string mNonNetlistViewData
Definition: View.hpp:612
Represents objects that have status.
boost::shared_ptr< Timing > TimingSharedPtr
SimulateSharedPtr mSimulate
Definition: View.hpp:617
void setPermutables(const std::vector< PermutableSharedPtr > &inSource)
Definition: View.cpp:396
InterfaceAttributesSharedPtr mAttributes
Definition: View.hpp:616
virtual ViewSharedPtr newViewPtr(const std::string &inName, const CellSharedPtr &inCellPtr, const View::Type &inViewType=View::eTypeNetlist, const std::string &inOriginalName=std::string())
Definition: View.cpp:72
boost::shared_ptr< ParameterMap > ParameterMapSharedPtr
An object that receives an inoutVisitor.
Definition: Visitable.hpp:38
PortSharedPtr findPort(const std::string &inName)
Definition: View.cpp:352
Used to implement external object referencing.
Definition: Extern.hpp:36
void setCurrentLocation(const std::string &inFunction, const std::string &inFile, uint32_t inLine)
Definition: Error.cpp:73