torc-master
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
View.hpp
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 TORC_GENERIC_VIEW_HPP
17 #define TORC_GENERIC_VIEW_HPP
18 
20 
21 //BOOST
22 #ifdef GENOM_SERIALIZATION
23 #include <boost/serialization/access.hpp>
24 #include <boost/serialization/split_member.hpp>
25 #endif //GENOM_SERIALIZATION
27 #include "torc/generic/Error.hpp"
28 #include "torc/generic/Extern.hpp"
36 #include "torc/generic/SymTab.hpp"
41 
42 namespace torc { namespace generic { class BaseVisitor; } }
43 namespace torc { namespace generic { class Cell; } }
44 namespace torc { namespace generic { class Instance; } }
45 namespace torc { namespace generic { class Net; } }
46 namespace torc { namespace generic { class Port; } }
47 namespace torc { namespace generic { class Permutable; } }
48 namespace torc { namespace generic { class InterfaceAttributes; } }
49 namespace torc { namespace generic { class InterfaceJoinedInfo; } }
50 
51 namespace torc {
52 namespace generic {
53 
54 /**
55  * @brief Represents and EDIF View.
56  *
57  * The View class represents an EDIF view. A view can be conrete or extern (black-box).
58  *
59  * @note Only views of type NETLIST are supported.
60  */
61 class View : public Commentable, public Extern, public Nameable, public ParentedObject<Cell>,
62  public PropertyContainer, public Renamable, public SelfReferencing<View>, public Visitable,
63  public UserDataContainer, public StatusContainer {
64 
65 #ifdef GENOM_SERIALIZATION
66  friend class boost::serialization::access;
67  friend class RestoredViewUpdater;
68 #endif //GENOM_SERIALIZATION
69  friend class FactoryType<View> ;
70 
71 public:
72  /**
73  * @enum Type
74  * Type of the view
75  */
76  enum Type {
79  };
80 
81  /**
82  * Convenience
83  */
85 
86  /**
87  * Convenience class to create a view.
88  */
89  class Factory : public FactoryType<View> {
90  public:
92  /**
93  * Create a view
94  *
95  * @param[in] inName Name of the view to be created.
96  * @param[in] inCellPtr Pointer to parented(Cell) object.
97  * @param[in] inViewType View Type.
98  * @param[in] inOriginalName Original name of the view [optional].
99  *
100  * @return Pointer to created view.
101  **/
102  virtual ViewSharedPtr newViewPtr(const std::string& inName, const CellSharedPtr& inCellPtr,
103  const View::Type& inViewType = View::eTypeNetlist, const std::string& inOriginalName =
104  std::string()) throw (Error);
105  };
106 
107  virtual void accept(BaseVisitor& inoutVisitor) throw (Error);
108 
109  /**
110  * Returns the context that will be used to get parameters from
111  * the parameter map. For an unbound instance,
112  * this will return an invalid value
113  */
114  inline ParameterContext getParameterContext() const;
115 
116  /**
117  * Get the ParameterMap corresponding to this cell
118  *
119  * @return A ParameterMap consisiting of only the overridden parameters.
120  */
122 
123  void setParameters(const ParameterMapSharedPtr& inSource);
124 
125  /**
126  * Get the type of view.
127  *
128  * @return Type of view
129  */
130  inline const Type getType() const;
131 
132  /**
133  * Set the type of view
134  *
135  * @param[in] inSource Type of view
136  */
137  void setType(const Type& inSource);
138 
139  /**
140  * Get the list of instances for this view.
141  *
142  * @param[out] outInstances List of instances to be appended to
143  */
144  inline void getInstances(std::vector<InstanceSharedPtr>& outInstances) const;
145 
146  /**
147  * Set the list of instances to this view. It will lead to a linear traversal on the list. So
148  * usage of this API is not recommended.
149  *
150  * @param[in] inSource List of instances.
151  */
152  void setInstances(const std::vector<InstanceSharedPtr>& inSource) throw (Error);
153 
154  /**
155  * Add an instance to the list of instances. Empty pointer is ignored.
156  *
157  * @param[in] inInstance Pointer to instance to be added.
158  *
159  * @exception Error Could not add instance because pointer to the Instance does not exist
160  * <ul>
161  * <li>
162  * Id : eMessageIdErrorPointerToItemDoesNotExist
163  * </li>
164  * <li> Context Data
165  * <ul>
166  * <li>Pointer to Instance - <i>boost::shared_ptr</i></li>
167  * </ul>
168  * </li>
169  * </ul>
170  *
171  * @exception Error Could not add instance because Instance name is empty
172  * <ul>
173  * <li>
174  * Id : eMessageIdErrorEmptyItemName
175  * </li>
176  * <li> Context Data
177  * <ul>
178  * <li>Instance name - <i>String</i></li>
179  * </ul>
180  * </li>
181  * </ul>
182  *
183  * @exception Error Could not add instance because Instance name already exists
184  * <ul>
185  * <li>
186  * Id : eMessageIdErrorItemAlreadyExists
187  * </li>
188  * <li> Context Data
189  * <ul>
190  * <li>Instance name - <i>String</i></li>
191  * </ul>
192  * </li>
193  * </ul>
194  *
195  */
196  void addInstance(const InstanceSharedPtr& inInstance) throw (Error);
197 
198  /**
199  * Find an instance by name, in the list of instances.
200  *
201  * @param[in] inName String inSource specifying the name of the instance.
202  *
203  * @return A pointer to the instance if found, an empty pointer otherwise.
204  *
205  * @exception Error Empty Instance name
206  * <ul>
207  * <li>
208  * Id : eMessageIdErrorEmptyItemName
209  * </li>
210  * <li> Context Data
211  * <ul>
212  * <li>Instance name - <i>String</i></li>
213  * </ul>
214  * </li>
215  * </ul>
216  *
217  */
218  InstanceSharedPtr findInstance(const std::string& inName);
219 
220  /**
221  * Remove the specified instance from the list of cells.
222  *
223  * @param inName Name of the object to be delete
224  *
225  * @exception Error Empty Instance name
226  * <ul>
227  * <li>
228  * Id : eMessageIdErrorEmptyItemName
229  * </li>
230  * <li> Context Data
231  * <ul>
232  * <li>Instance name - <i>String</i></li>
233  * </ul>
234  * </li>
235  * </ul>
236  *
237  * @exception Error Instance name not preset in collection.
238  * <ul>
239  * <li>
240  * Id : eMessageIdErrorItemNotFound
241  * </li>
242  * <li> Context Data
243  * <ul>
244  * <li>Instance name - <i>String</i></li>
245  * </ul>
246  * </li>
247  * </ul>
248  *
249  */
250  void removeInstance(const std::string& inName) throw (Error);
251 
252  /**
253  * Apply action on all Instances.
254  * @param[in] action Action to be applied
255  *
256  */
257  template <typename _Action> inline void applyOnAllInstances(const _Action& action)
258  throw (Error);
259 
260  /**
261  * Get the list of nets for this view.
262  *
263  * @param[out] outNets List of nets to be appended to
264  */
265  inline void getNets(std::vector<NetSharedPtr>& outNets) const;
266 
267  /**
268  * Set the list of nets to this view. It will lead to a linear traversal on the list. So usage
269  * of this API is not recommended.
270  *
271  * @param[in] inSource List of nets.
272  */
273  void setNets(const std::vector<NetSharedPtr>& inSource) throw (Error);
274 
275  /**
276  * Add a net to the list of nets. Empty pointer is ignored.
277  *
278  * @param[in] inNet Pointer to net to be added.
279  *
280  * @exception Error Could not add Net, because Net name is empty
281  * <ul>
282  * <li>
283  * Id : eMessageIdErrorEmptyItemName
284  * </li>
285  * <li> Context Data
286  * <ul>
287  * <li>Net name - <i>String</i></li>
288  * </ul>
289  * </li>
290  * </ul>
291  *
292  * @exception Error Could not add Net, because Net name already exists
293  * <ul>
294  * <li>
295  * Id : eMessageIdErrorItemAlreadyExists
296  * </li>
297  * <li> Context Data
298  * <ul>
299  * <li>Net name - <i>String</i></li>
300  * </ul>
301  * </li>
302  * </ul>
303  *
304  */
305  void addNet(const NetSharedPtr& inNet) throw (Error);
306 
307  /**
308  * Find a net by name, in the list of net.
309  *
310  * @param[in] inName String inSource specifying the name of the Net
311  *
312  * @return A pointer to the net if found, an empty pointer otherwise.
313  *
314  * @exception Error Empty Net name
315  * <ul>
316  * <li>
317  * Id : eMessageIdErrorEmptyItemName
318  * </li>
319  * <li> Context Data
320  * <ul>
321  * <li>Net name - <i>String</i></li>
322  * </ul>
323  * </li>
324  * </ul>
325  *
326  */
327  NetSharedPtr findNet(const std::string& inName);
328 
329  /**
330  * Remove the specified net from the list of nets. If an empty pointer is passed, it returns
331  * without doing anything
332  *
333  * @param inName Name of the object to be delete
334  *
335  * @exception Error Empty Net name
336  * <ul>
337  * <li>
338  * Id : eMessageIdErrorEmptyItemName
339  * </li>
340  * <li> Context Data
341  * <ul>
342  * <li>Net name - <i>String</i></li>
343  * </ul>
344  * </li>
345  * </ul>
346  *
347  * @exception Error Net not preset in collection.
348  * <ul>
349  * <li>
350  * Id : eMessageIdErrorItemNotFound
351  * </li>
352  * <li> Context Data
353  * <ul>
354  * <li>Net name - <i>String</i></li>
355  * </ul>
356  * </li>
357  * </ul>
358  *
359  */
360  void removeNet(const std::string& inName) throw (Error);
361 
362  /**
363  * Apply action on all Nets.
364  * @param[in] action Action to be applied
365  *
366  */
367  template <typename _Action> inline void applyOnAllNets(const _Action& action) throw (Error);
368 
369  /**
370  * Get the list of ports for this view.
371  *
372  * @param[out] outPorts List of ports to be appended to
373  */
374  inline void getPorts(std::vector<PortSharedPtr>& outPorts) const;
375 
376  /**
377  * Set the list of ports to this view. It will lead to a linear traversal on the list. So usage
378  * of this API is not recommended.
379  *
380  * @param[in] inSource List of ports
381  */
382  void setPorts(const std::vector<PortSharedPtr>& inSource) throw (Error);
383 
384  /**
385  * Add a port to the list of ports. Empty pointer is ignored.
386  *
387  * @param[in] inPort Pointer to port to be added.
388  *
389  * @exception Error Could not add port, because Port name is empty
390  * <ul>
391  * <li>
392  * Id : eMessageIdErrorEmptyItemName
393  * </li>
394  * <li> Context Data
395  * <ul>
396  * <li>Port name - <i>String</i></li>
397  * </ul>
398  * </li>
399  * </ul>
400  *
401  * @exception Error Could not add port, because Port name already exists
402  * <ul>
403  * <li>
404  * Id : eMessageIdErrorItemAlreadyExists
405  * </li>
406  * <li> Context Data
407  * <ul>
408  * <li>Port name - <i>View</i></li>
409  * </ul>
410  * </li>
411  * </ul>
412  *
413  */
414 
415  void addPort(const PortSharedPtr& inPort) throw (Error);
416 
417  /**
418  * Find a port by name, in the list of ports.
419  *
420  * @param[in] inName String inSource specifying the name of the port.
421  *
422  * @return A pointer to the port if found, an empty pointer otherwise.
423  *
424  * @exception Error Empty Port name
425  * <ul>
426  * <li>
427  * Id : eMessageIdErrorEmptyItemName
428  * </li>
429  * <li> Context Data
430  * <ul>
431  * <li>Port Name - <i>String</i></li>
432  * </ul>
433  * </li>
434  * </ul>
435  *
436  */
437 
438  PortSharedPtr findPort(const std::string& inName);
439 
440  /**
441  * Remove the specified port from the list of ports.
442  *
443  * @param inName Name of the port to be removed
444  *
445  * @exception Error Empty Port name
446  * <ul>
447  * <li>
448  * Id : eMessageIdErrorEmptyItemName
449  * </li>
450  * <li> Context Data
451  * <ul>
452  * <li>Port name - <i>String</i></li>
453  * </ul>
454  * </li>
455  * </ul>
456  *
457  * @exception Error Port not preset in collection.
458  * <ul>
459  * <li>
460  * Id : eMessageIdErrorItemNotFound
461  * </li>
462  * <li> Context Data
463  * <ul>
464  * <li>Port name - <i>String</i></li>
465  * </ul>
466  * </li>
467  * </ul>
468  *
469  */
470  void removePort(const std::string& inName) throw (Error);
471 
472  /**
473  * Apply action on all Ports.
474  * @param[in] action Action to be applied
475  *
476  */
477  template <typename _Action> inline void applyOnAllPorts(const _Action& action) throw (Error);
478 
479  /**
480  * Get the vector of permutables for this view.
481  *
482  * @param[out] outPermutables Vector of permutable to be appended to
483  */
484  inline void getPermutables(std::vector<PermutableSharedPtr>& outPermutables) const;
485 
486  /**
487  * Set the vector of permutables to this view. It will lead to a linear traversal on the list.
488  *
489  * @param[in] inSource Vector of permutables to this view.
490  * @exception Error Could not add permutable because pointer to the permutable does not exist
491  */
492  void setPermutables(const std::vector<PermutableSharedPtr> & inSource) throw (Error);
493  /**
494  * Add a permutable to this view.
495  *
496  * @param[in] inPermutable Pointer to permutable to be added.
497  * @exception Error Could not add permutable because pointer to the permutable does not exist
498  */
499  bool addPermutable(const PermutableSharedPtr& inPermutable) throw (Error);
500 
501  /**
502  * Apply action on all Permutables.
503  * @param[in] action Action to be applied
504  *
505  */
506  template <typename _Action> inline void applyOnAllPermutables(const _Action& action)
507  throw (Error);
508 
509  /**
510  * Get the vector of joined info for this view.
511  *
512  * @param[out] outJoinedInfos Vector of joined info to be appended to
513  */
514  inline void getInterfaceJoinedInfos(
515  std::vector<InterfaceJoinedInfoSharedPtr>& outJoinedInfos) const;
516 
517  /**
518  * Set the vector of joined info for this view.
519  *
520  * @param[in] inSource Vector of joined info to this view.
521  * @exception Error Could not add joined info because pointer to the joined info does not exist
522  */
523  void setInterfaceJoinedInfos(const std::vector<InterfaceJoinedInfoSharedPtr> & inSource)
524  throw (Error);
525  /**
526  * Add a joined info to this view.
527  *
528  * @param[in] inJoinedInfo Pointer to joined info to be added.
529  * @exception Error Could not add joined info because pointer to the joined info does not exist
530  */
531  bool addInterfaceJoinedInfo(const InterfaceJoinedInfoSharedPtr& inJoinedInfo) throw (Error);
532 
533  /**
534  * Apply action on all joined info.
535  * @param[in] action Action to be applied
536  *
537  */
538  template <typename _Action> inline void applyOnAllInterfaceJoinedInfos(const _Action& action)
539  throw (Error);
540 
541  /**
542  * Get the attributes of a view interface.
543  * Attributes include designator, simulate, timing, comments, userdata etc.
544  * This will decompile within (contents ...) construct.
545  *
546  * @return Pointer to InterfaceAttributes object.
547  */
549 
550  /**
551  * Set the attributes of a view interface.
552  * Attributes include designator, simulate, timing, comments, userdata etc.
553  * This will decompile within (contents ...) construct.
554  *
555  * @param[in] inSource Pointer to InterfaceAttributes object.
556  */
558 
559  inline const std::string& getNonNetlistViewData() const;
560 
561  void setNonNetlistViewData(const std::string& inData);
562 
563  /**
564  * Get the pointer to the simulate.
565  *
566  * @return Pointer to the simulatie
567  */
568  inline const SimulateSharedPtr
569  getSimulate() const;
570 
571  /**
572  * Set the pointer to the simulate.
573  *
574  * @param[in] inSource Pointer to the simulate
575  */
576  void setSimulate(const SimulateSharedPtr& inSource);
577 
578  /**
579  * Get the pointer to the timing object
580  *
581  * @return Pointer to the timing object
582  */
583  inline const TimingSharedPtr getTiming() const;
584 
585  /**
586  * Set the pointer to the timing object
587  *
588  * @param[in] inSource Pointer to the timing object
589  */
590  void setTiming(const TimingSharedPtr& inSource);
591 
592  virtual ~View() throw ();
593 
594 protected:
595  View();
596 
597 private:
598 #ifdef GENOM_SERIALIZATION
599  template <class Archive> void load(Archive& ar, unsigned int);
600 
601  template <class Archive> void save(Archive& ar, unsigned int) const;
602 
603  BOOST_SERIALIZATION_SPLIT_MEMBER()
604 
605  void restoreActions() throw(Error);
606 #endif //GENOM_SERIALIZATION
614  std::vector<PermutableSharedPtr> mPermutables;
615  std::vector<InterfaceJoinedInfoSharedPtr> mInterfaceJoinedInfos;
619 };
620 
622  return mMyContext;
623 }
624 
625 /**
626  * Get the type of view.
627  *
628  * @return Type of view
629  */
630 inline const View::Type View::getType() const {
631  return mType;
632 }
633 
634 inline void View::getInstances(std::vector<InstanceSharedPtr>& outInstances) const {
635  mInstanceSymTab.getValues(outInstances);
636 }
637 
638 template <typename _Action> inline void View::applyOnAllInstances(const _Action& action)
639  throw (Error) {
640  try {
641  mInstanceSymTab.applyOnAll(action);
642  } catch(Error& e) {
643  e.setCurrentLocation(__FUNCTION__, __FILE__, __LINE__);
644  throw;
645  }
646 }
647 
648 inline void View::getNets(std::vector<NetSharedPtr>& outNets) const {
649  mNetSymTab.getValues(outNets);
650 }
651 
652 template <typename _Action> inline void View::applyOnAllNets(const _Action& action) throw (Error) {
653  try {
654  mNetSymTab.applyOnAll(action);
655  } catch(Error& e) {
656  e.setCurrentLocation(__FUNCTION__, __FILE__, __LINE__);
657  throw;
658  }
659 }
660 
661 inline void View::getPorts(std::vector<PortSharedPtr>& outPorts) const {
662  mPortSymTab.getValues(outPorts);
663 }
664 
665 template <typename _Action> inline void View::applyOnAllPorts(const _Action& action) throw (Error) {
666  try {
667  mPortSymTab.applyOnAll(action);
668  } catch(Error& e) {
669  e.setCurrentLocation(__FUNCTION__, __FILE__, __LINE__);
670  throw;
671  }
672 }
673 
675  return mNonNetlistViewData;
676 }
677 
678 /**
679  * Get the vector of permutables for this view.
680  *
681  * @param[out] outPermutables Vector of permutable to be appended to
682  */
683 
684 inline void View::getPermutables(std::vector<PermutableSharedPtr>& outPermutables) const {
685  outPermutables.insert(outPermutables.end(), mPermutables.begin(), mPermutables.end());
686 }
687 
688 /**
689  * Apply action on all children.
690  * @param[in] action Action to be applied
691  *
692  */
693 template <typename _Action> inline void View::applyOnAllPermutables(const _Action& action)
694  throw (Error) {
695  try {
696  std::vector<PermutableSharedPtr>::iterator it = mPermutables.begin();
697  for(; it != mPermutables.end(); ++it) {
698  action(*it);
699  }
700  } catch(Error& e) {
701  e.setCurrentLocation(__FUNCTION__, __FILE__, __LINE__);
702  throw;
703  }
704 }
705 
706 /**
707  * Get the vector of joined info for this view.
708  *
709  * @param[out] outJoinedInfos Vector of joined info to be appended to
710  */
712  std::vector<InterfaceJoinedInfoSharedPtr>& outJoinedInfos) const {
713  outJoinedInfos.insert(outJoinedInfos.end(), mInterfaceJoinedInfos.begin(),
714  mInterfaceJoinedInfos.end());
715 }
716 
717 /**
718  * Apply action on all joined info.
719  * @param[in] action Action to be applied
720  *
721  */
722 template <typename _Action> inline void View::applyOnAllInterfaceJoinedInfos(const _Action& action)
723  throw (Error) {
724  try {
725  std::vector<InterfaceJoinedInfoSharedPtr>::iterator it = mInterfaceJoinedInfos.begin();
726  for(; it != mInterfaceJoinedInfos.end(); ++it) {
727  action(*it);
728  }
729  } catch(Error& e) {
730  e.setCurrentLocation(__FUNCTION__, __FILE__, __LINE__);
731  throw;
732  }
733 }
734 
735 /**
736  * Get the attributes of a view interface. Attributes include designator, comments, userdata etc.
737  *
738  * @return Pointer to InterfaceAttributes object.
739  */
741  return mAttributes;
742 }
743 
744 /**
745  * Get the pointer to the simulate.
746  *
747  * @return Pointer to the simulatie
748  */
749 inline const SimulateSharedPtr View::getSimulate() const {
750  return mSimulate;
751 }
752 
753 /**
754  * Get the pointer to the timing object
755  *
756  * @return Pointer to the timing object
757  */
758 inline const TimingSharedPtr View::getTiming() const {
759  return mTiming;
760 }
761 
762 } // namespace generic
763 } // namespace torc
764 #endif // TORC_GENERIC_VIEW_HPP
void getValues(std::vector< ValueType > &outValues) const
Definition: SymTab.hpp:158
An acyclic inoutVisitor implementation.
Definition: VisitorType.hpp:57
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
boost::shared_ptr< Instance > InstanceSharedPtr
VisitorType< View > Visitor
Definition: View.hpp:84
bool addPermutable(const PermutableSharedPtr &inPermutable)
Definition: View.cpp:415
void applyOnAllNets(const _Action &action)
Definition: View.hpp:652
ParameterMapSharedPtr getParameters()
Definition: View.cpp:98
An object that has a parent.
SymTab< std::string, NetSharedPtr > mNetSymTab
Definition: View.hpp:610
void setParameters(const ParameterMapSharedPtr &inSource)
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 applyOnAllPorts(const _Action &action)
Definition: View.hpp:665
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
void removePort(const std::string &inName)
Definition: View.cpp:372
void getPorts(std::vector< PortSharedPtr > &outPorts) const
Definition: View.hpp:661
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 addPort(const PortSharedPtr &inPort)
Definition: View.cpp:325
std::vector< InterfaceJoinedInfoSharedPtr > mInterfaceJoinedInfos
Definition: View.hpp:615
boost::shared_ptr< Simulate > SimulateSharedPtr
std::string string
void applyOnAllInstances(const _Action &action)
Definition: View.hpp:638
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
ParameterContext getParameterContext() const
Definition: View.hpp:621
A base class for Visitor.
Definition: VisitorType.hpp:31
std::vector< PermutableSharedPtr > mPermutables
Definition: View.hpp:614
const std::string & getNonNetlistViewData() const
Definition: View.hpp:674
SymTab< std::string, PortSharedPtr > mPortSymTab
Definition: View.hpp:611
ParameterMapSharedPtr mParameters
Definition: View.hpp:607
void applyOnAllPermutables(const _Action &action)
Definition: View.hpp:693
void getInstances(std::vector< InstanceSharedPtr > &outInstances) const
Definition: View.hpp:634
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
const Type getType() const
Definition: View.hpp:630
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
const InterfaceAttributesSharedPtr getInterfaceAttributes() const
Definition: View.hpp:740
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
void getNets(std::vector< NetSharedPtr > &outNets) const
Definition: View.hpp:648
boost::shared_ptr< InterfaceJoinedInfo > InterfaceJoinedInfoSharedPtr
const SimulateSharedPtr getSimulate() const
Definition: View.hpp:749
boost::shared_ptr< Port > PortSharedPtr
SymTab< std::string, InstanceSharedPtr > mInstanceSymTab
Definition: View.hpp:609
Represents objects that can be renamed.
std::string mNonNetlistViewData
Definition: View.hpp:612
void getInterfaceJoinedInfos(std::vector< InterfaceJoinedInfoSharedPtr > &outJoinedInfos) const
Definition: View.hpp:711
Represents objects that have status.
void getPermutables(std::vector< PermutableSharedPtr > &outPermutables) const
Definition: View.hpp:684
boost::shared_ptr< Timing > TimingSharedPtr
SimulateSharedPtr mSimulate
Definition: View.hpp:617
void applyOnAllInterfaceJoinedInfos(const _Action &action)
Definition: View.hpp:722
A placeholder for a factory method.
Definition: FactoryType.hpp:35
void setPermutables(const std::vector< PermutableSharedPtr > &inSource)
Definition: View.cpp:396
const TimingSharedPtr getTiming() const
Definition: View.hpp:758
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