Limbo
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
GdsIO.h
Go to the documentation of this file.
1 
8 #ifndef LIMBO_PARSERS_GDSII_GDSDB_GDSIO_H
9 #define LIMBO_PARSERS_GDSII_GDSDB_GDSIO_H
10 
11 #include <fstream>
12 #include <limits>
15 
17 
19 namespace GdsParser
20 {
22 namespace GdsDB
23 {
24 
27 {
28  public:
30  typedef GdsDB gdsdb_type;
31  typedef gdsdb_type::coordinate_type coordinate_type;
32  typedef gdsdb_type::point_type point_type;
34 
37  GdsReader(gdsdb_type& db) : m_db(db) {}
38 
41  bool operator() (std::string const& filename);
42 
48  virtual void bit_array_cbk(::GdsParser::GdsRecords::EnumType record_type, ::GdsParser::GdsData::EnumType data_type, std::vector<int> const& vBitArray);
52  virtual void integer_2_cbk(::GdsParser::GdsRecords::EnumType record_type, ::GdsParser::GdsData::EnumType data_type, std::vector<int> const& vInteger);
56  virtual void integer_4_cbk(::GdsParser::GdsRecords::EnumType record_type, ::GdsParser::GdsData::EnumType data_type, std::vector<int> const& vInteger);
60  virtual void real_4_cbk(::GdsParser::GdsRecords::EnumType record_type, ::GdsParser::GdsData::EnumType data_type, std::vector<double> const& vFloat);
64  virtual void real_8_cbk(::GdsParser::GdsRecords::EnumType record_type, ::GdsParser::GdsData::EnumType data_type, std::vector<double> const& vFloat);
68  virtual void string_cbk(::GdsParser::GdsRecords::EnumType record_type, ::GdsParser::GdsData::EnumType data_type, std::string const& str);
70  virtual void begin_end_cbk(::GdsParser::GdsRecords::EnumType record_type);
72 
79  void integer_cbk(::GdsParser::GdsRecords::EnumType record_type, ::GdsParser::GdsData::EnumType data_type, std::vector<int> const& vData);
84  void float_cbk(::GdsParser::GdsRecords::EnumType record_type, ::GdsParser::GdsData::EnumType data_type, std::vector<double> const& vData);
86 
87  protected:
89  void reset();
91  void printUnsupportRecords() const;
92 
93  // temporary data
94  std::string m_string;
95  std::string m_sname;
96  int m_layer;
97  int m_datatype;
98  int m_pathtype;
99  int m_texttype;
100  int m_spacing[2];
101  int m_width;
102  int m_columns;
103  int m_rows;
104  double m_angle;
106  int m_strans;
108  std::vector<point_type> m_vPoint;
109 
112  gdsdb_type& m_db;
113 
114  std::vector<unsigned int> m_vUnsupportRecord;
115 };
116 
119 {
120  public:
122  typedef GdsDB gdsdb_type;
124 
127  GdsWriter(gdsdb_type const& db) : m_db(db) {}
128 
131  void operator() (std::string const& filename) const;
132 
135  // there is no need to use different name, since we pass different parameters
138  void write(::GdsParser::GdsWriter& gw, GdsCell const& cell) const;
141  void write(::GdsParser::GdsWriter& gw, GdsPolygon const& object) const;
144  void write(::GdsParser::GdsWriter& gw, GdsPath const& object) const;
147  void write(::GdsParser::GdsWriter& gw, GdsText const& object) const;
150  void write(::GdsParser::GdsWriter& gw, GdsCellReference const& object) const;
153  void write(::GdsParser::GdsWriter& gw, GdsCellArray const& object) const;
155 
156  protected:
157  gdsdb_type const& m_db;
158 };
159 
160 } // namespace GdsDB
161 } // namespace GdsParser
162 
163 #endif
void float_cbk(::GdsParser::GdsRecords::EnumType record_type,::GdsParser::GdsData::EnumType data_type, std::vector< double > const &vData)
callbacks for floating point number
double m_angle
ANGLE.
Definition: GdsIO.h:104
gdsdb_type & m_db
reference to GDSII database
Definition: GdsIO.h:112
virtual void integer_4_cbk(::GdsParser::GdsRecords::EnumType record_type,::GdsParser::GdsData::EnumType data_type, std::vector< int > const &vInteger)
double m_magnification
MAG.
Definition: GdsIO.h:105
EnumType
enum type of data type
Definition: GdsRecords.h:222
int m_strans
STRANS.
Definition: GdsIO.h:106
GdsWriter(gdsdb_type const &db)
constructor
Definition: GdsIO.h:127
int m_fileSize
file size in bytes
Definition: GdsIO.h:111
int m_datatype
DATATYPE.
Definition: GdsIO.h:97
bool operator()(std::string const &filename)
API to read GDSII file.
int m_texttype
TEXTTYPE.
Definition: GdsIO.h:99
std::string m_string
STRING.
Definition: GdsIO.h:94
write GDSII file
virtual void begin_end_cbk(::GdsParser::GdsRecords::EnumType record_type)
virtual void real_8_cbk(::GdsParser::GdsRecords::EnumType record_type,::GdsParser::GdsData::EnumType data_type, std::vector< double > const &vFloat)
virtual void integer_2_cbk(::GdsParser::GdsRecords::EnumType record_type,::GdsParser::GdsData::EnumType data_type, std::vector< int > const &vInteger)
::GdsParser::GdsRecords::EnumType m_status
current record status
Definition: GdsIO.h:110
read GDSII file with GDSII database GdsParser::GdsDB::GdsDB
Definition: GdsIO.h:26
void operator()(std::string const &filename) const
API to write GDSII file.
void write(::GdsParser::GdsWriter &gw, GdsCell const &cell) const
virtual void real_4_cbk(::GdsParser::GdsRecords::EnumType record_type,::GdsParser::GdsData::EnumType data_type, std::vector< double > const &vFloat)
int m_presentation
PRESENTATION.
Definition: GdsIO.h:107
std::vector< unsigned int > m_vUnsupportRecord
try to be clean at screen output, record the times of unsupported records
Definition: GdsIO.h:114
int m_rows
COLROW, number of rows.
Definition: GdsIO.h:103
namespace for Limbo.GdsParser
Definition: GdsIO.h:19
GdsReader(gdsdb_type &db)
constructor
Definition: GdsIO.h:37
int m_spacing[2]
SPACING.
Definition: GdsIO.h:100
int m_pathtype
PATHTYPE.
Definition: GdsIO.h:98
void reset()
reset all temporary data to default values
int m_columns
COLROW, number of columns.
Definition: GdsIO.h:102
Kernel callbacks for GdsReader. These callbacks use enum for record_type and data_type, which is faster than ascii callbacks.
Definition: GdsReader.h:39
std::string m_sname
SNAME.
Definition: GdsIO.h:95
write GDSII file with GDSII database GdsParser::GdsDB::GdsDB
Definition: GdsIO.h:118
gdsdb_type const & m_db
reference to GDSII database
Definition: GdsIO.h:157
read GDSII file
EnumType
enum type of GDSII records
Definition: GdsRecords.h:23
void printUnsupportRecords() const
warn unsupported records
virtual void string_cbk(::GdsParser::GdsRecords::EnumType record_type,::GdsParser::GdsData::EnumType data_type, std::string const &str)
std::vector< point_type > m_vPoint
XY.
Definition: GdsIO.h:108
Various GDSII objects and a top GDSII database.
int coordinate_type
coordinate types
Definition: GdsObjects.h:40