Bitstream Interpretation Library (BIL)  0.1
PrimitiveType.hpp
Go to the documentation of this file.
1 
6 #pragma once
7 #ifndef BIL_PRIMITIVETYPE_HPP
8 #define BIL_PRIMITIVETYPE_HPP
9 
11 #include <xdlrc/model/Element.hpp>
12 #include <xdlrc/model/Pin.hpp>
13 
14 
15 namespace bil {
16 
25  class PrimitiveType {
26  public:
27 
28  /**********************************************************************/
29  /* CONSTRUCTION / DESTRUCTION */
30  /**********************************************************************/
31 
35  PrimitiveType();
36 
37 
38  /**********************************************************************/
39  /* TYPE NAME */
40  /**********************************************************************/
41 
46  std::string& name();
47 
52  const std::string& name() const;
53 
54 
55  /**********************************************************************/
56  /* PINS */
57  /**********************************************************************/
58 
63  Pins& pins();
64 
69  const Pins& pins() const;
70 
71 
72  /**********************************************************************/
73  /* ELEMENTS */
74  /**********************************************************************/
75 
80  Elements& elements();
81 
86  const Elements& elements() const;
87 
88 
89  /**********************************************************************/
90  /* MULTI-PURPOSE-TAG */
91  /**********************************************************************/
92 
97  void tag(size_t t);
98 
103  size_t tag() const;
104 
105 
106  /**********************************************************************/
107  /* MODIFICATORS */
108  /**********************************************************************/
109 
113  void clear();
114 
115 
116  private:
117 
118  friend void writeBinary(const PrimitiveType& data, std::ostream& outputStream);
119  friend void readBinary(PrimitiveType& data, std::istream& inputStream);
120 
121  std::string m_name;
122  Pins m_pins;
123  Elements m_elements;
124  size_t m_tag;
125 
126  };
127 
129  typedef std::vector<PrimitiveType> PrimitiveTypes;
130 
131 }
132 
133 #endif