torc-master
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Extern.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_EXTERN_HPP
17 #define TORC_GENERIC_EXTERN_HPP
18 
19 //BOOST
20 #ifdef GENOM_SERIALIZATION
21 #include <boost/serialization/access.hpp>
22 #endif //GENOM_SERIALIZATION
23 namespace torc {
24 namespace generic {
25 
26 /**
27  * @brief Used to implement external object referencing.
28  *
29  * The Extern interface is used by objects to create placeholders for objects that could not be
30  * found by the Linker. In itself, the class is pretty simple and uses a single boolean inSource to
31  * indicate whether an object is a real object or a place holder. Simplistically, extern objects
32  * are used to represent libraries, cells, views and ports declared using the EDIF (extern ...)
33  * syntax. However, in case of multifile parsing, the Linker will try to remove externs from the
34  * design hierarchy with newly discovered items.
35  */
36 class Extern {
37 #ifdef GENOM_SERIALIZATION
38  friend class boost::serialization::access;
39 #endif
40 
41 public:
42  /**
43  * Get whether the item is an extern(placeholder) or an actual item.
44  *
45  * @return True if extern, false otherwise
46  */
47  inline bool getIsExtern() const;
48 
49  /**
50  * Get whether the item is an extern(placeholder) or an actual item.
51  *
52  * @return True if extern, false otherwise
53  */
54  inline bool isExtern() const;
55 
56  /**
57  * Set whether an item is extern or not.
58  *
59  * @param[in] isExtern True if extern, false otherwise
60  */
61  void setIsExtern(bool inIsExtern);
62 
63 protected:
64  Extern();
65 
66 public:
67  virtual ~Extern() throw ();
68 
69 private:
70  Extern(const Extern& source);
71 
72  Extern& operator=(const Extern& source);
73 
74 private:
75 #ifdef GENOM_SERIALIZATION
76  template <class Archive> void serialize(Archive& ar, unsigned int);
77 #endif //GENOM_SERIALIZATION
78  bool mIsExtern;
79 };
80 
81 /**
82  * Get whether the item is an extern(placeholder) or an actual item.
83  *
84  * @return True if extern, false otherwise
85  */
86 inline bool Extern::getIsExtern() const {
87  return mIsExtern;
88 }
89 
90 /**
91  * Get whether the item is an extern(placeholder) or an actual item.
92  *
93  * @return True if extern, false otherwise
94  */
95 inline bool Extern::isExtern() const {
96  return mIsExtern;
97 }
98 
99 } // namespace generic
100 } // namespace torc
101 
102 #endif // TORC_GENERIC_EXTERN_HPP
bool isExtern() const
Definition: Extern.hpp:95
virtual ~Extern()
Definition: Extern.cpp:41
void setIsExtern(bool inIsExtern)
Definition: Extern.cpp:35
Extern & operator=(const Extern &source)
bool getIsExtern() const
Definition: Extern.hpp:86
Used to implement external object referencing.
Definition: Extern.hpp:36