Limbo 3.5.4
Loading...
Searching...
No Matches
GdsIO.h
Go to the documentation of this file.
1
7
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
19namespace GdsParser
20{
22namespace 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);
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;
100 int m_spacing[2];
103 int m_rows;
106 double m_angle;
110 std::vector<point_type> m_vPoint;
111
114 gdsdb_type& m_db;
115
116 std::vector<unsigned int> m_vUnsupportRecord;
117};
118
121{
122 public:
124 typedef GdsDB gdsdb_type;
126
129 GdsWriter(gdsdb_type const& db) : m_db(db) {}
130
133 void operator() (std::string const& filename) const;
134
137 // there is no need to use different name, since we pass different parameters
140 void write(::GdsParser::GdsWriter& gw, GdsCell const& cell) const;
143 void write(::GdsParser::GdsWriter& gw, GdsPolygon const& object) const;
146 void write(::GdsParser::GdsWriter& gw, GdsPath const& object) const;
149 void write(::GdsParser::GdsWriter& gw, GdsText const& object) const;
152 void write(::GdsParser::GdsWriter& gw, GdsCellReference const& object) const;
155 void write(::GdsParser::GdsWriter& gw, GdsCellArray const& object) const;
157
158 protected:
159 gdsdb_type const& m_db;
160};
161
162} // namespace GdsDB
163} // namespace GdsParser
164
165#endif
Various GDSII objects and a top GDSII database.
read GDSII file
write GDSII file
int coordinate_type
coordinate types
Definition GdsObjects.h:40
gtl::point_data< coordinate_type > point_type
Definition GdsObjects.h:44
virtual void real_4_cbk(::GdsParser::GdsRecords::EnumType record_type, ::GdsParser::GdsData::EnumType data_type, std::vector< double > const &vFloat)
void reset()
reset all temporary data to default values
void printUnsupportRecords() const
warn unsupported records
std::vector< point_type > m_vPoint
XY.
Definition GdsIO.h:110
void integer_cbk(::GdsParser::GdsRecords::EnumType record_type, ::GdsParser::GdsData::EnumType data_type, std::vector< int > const &vData)
callbacks for integer
virtual void string_cbk(::GdsParser::GdsRecords::EnumType record_type, ::GdsParser::GdsData::EnumType data_type, std::string const &str)
virtual void bit_array_cbk(::GdsParser::GdsRecords::EnumType record_type, ::GdsParser::GdsData::EnumType data_type, std::vector< int > const &vBitArray)
virtual void integer_2_cbk(::GdsParser::GdsRecords::EnumType record_type, ::GdsParser::GdsData::EnumType data_type, std::vector< int > const &vInteger)
virtual void begin_end_cbk(::GdsParser::GdsRecords::EnumType record_type)
bool operator()(std::string const &filename)
API to read GDSII file.
std::vector< unsigned int > m_vUnsupportRecord
try to be clean at screen output, record the times of unsupported records
Definition GdsIO.h:116
::GdsParser::GdsRecords::EnumType m_status
current record status
Definition GdsIO.h:112
virtual void real_8_cbk(::GdsParser::GdsRecords::EnumType record_type, ::GdsParser::GdsData::EnumType data_type, std::vector< double > const &vFloat)
gdsdb_type & m_db
reference to GDSII database
Definition GdsIO.h:114
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_magnification
MAG.
Definition GdsIO.h:107
std::string m_string
STRING.
Definition GdsIO.h:94
std::string m_sname
SNAME.
Definition GdsIO.h:95
int m_presentation
PRESENTATION.
Definition GdsIO.h:109
int m_texttype
TEXTTYPE.
Definition GdsIO.h:99
int m_datatype
DATATYPE.
Definition GdsIO.h:97
int m_spacing[2]
SPACING.
Definition GdsIO.h:100
virtual void integer_4_cbk(::GdsParser::GdsRecords::EnumType record_type, ::GdsParser::GdsData::EnumType data_type, std::vector< int > const &vInteger)
GdsReader(gdsdb_type &db)
constructor
Definition GdsIO.h:37
int m_fileSize
file size in bytes
Definition GdsIO.h:113
int m_columns
COLROW, number of columns.
Definition GdsIO.h:102
int m_pathtype
PATHTYPE.
Definition GdsIO.h:98
int m_rows
COLROW, number of rows.
Definition GdsIO.h:103
void write(::GdsParser::GdsWriter &gw, GdsPath const &object) const
void operator()(std::string const &filename) const
API to write GDSII file.
void write(::GdsParser::GdsWriter &gw, GdsCell const &cell) const
GdsWriter(gdsdb_type const &db)
constructor
Definition GdsIO.h:129
void write(::GdsParser::GdsWriter &gw, GdsCellReference const &object) const
void write(::GdsParser::GdsWriter &gw, GdsPolygon const &object) const
void write(::GdsParser::GdsWriter &gw, GdsCellArray const &object) const
gdsdb_type const & m_db
reference to GDSII database
Definition GdsIO.h:159
void write(::GdsParser::GdsWriter &gw, GdsText const &object) const
Kernel callbacks for GdsReader. These callbacks use enum for record_type and data_type,...
Definition GdsReader.h:40
namespace for Limbo.GdsParser
Definition GdsIO.h:20
EnumType
enum type of data type
Definition GdsRecords.h:222
EnumType
enum type of GDSII records
Definition GdsRecords.h:23