forked from libresilicon/qtflow
-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathlefdata.h
91 lines (75 loc) · 2.09 KB
/
lefdata.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
#ifndef LEFDATA_H
#define LEFDATA_H
#include <istream>
#include <fstream>
#include <QString>
#include <QVector>
#include <QRect>
#include <QTextStream>
#include <QString>
#include <QTextStream>
#include <QGraphicsTextItem>
#include "lefmacro.h"
#include "lefvia.h"
#include "leflayerinfo.h"
namespace lef {
class LEFScanner;
class LEFParser;
class LEFData
{
public:
LEFData(QString);
void saveFile(QString);
LEFScanner *getLexer();
bool isDefinedMacro(QString name);
lef::LEFMacro *getMacro(QString);
QVector<LEFMacro*> getMacros();
QVector<LEFVia*> getVias();
void setBaseUnitMicrons(int);
int getBaseUnits();
bool isDefinedVia(QString name);
void addViaName(std::string s);
void addViaLayer(std::string s);
void addViaLayerRectangle(double x1, double y1, double x2, double y2);
void setMacroSize(double w, double h);
void addMacroName(std::string s);
void addMacroPinName(std::string s);
void addMacroPinPortLayer(std::string s);
void addMacroPinPortRectangle(double x1, double y1, double x2, double y2);
void addMacroPinObstructionLayer(std::string s);
void addMacroPinObstructionRectangle(double, double, double, double);
void setMacroPinDirection(std::string s);
void setMacroClass(std::string s);
void setMacroSite(std::string s);
void setSubBitChar(std::string s);
void setDivideChar(std::string s);
QString getSubBitChar();
QString getDivideChar();
void addLayer(std::string s);
void setLayerType(std::string s);
void setLayerPitch(double);
QVector<LEFLayerInfo*> getLayers();
private:
LEFScanner *lexer;
LEFParser* parser;
bool trace_parsing;
bool trace_scanning;
QString streamname;
// work variables:
QVector<LEFMacro*> m_macros;
QVector<LEFVia*> m_vias;
LEFMacro *m_recentMacro;
LEFVia *m_recentVia;
LEFLayerInfo *m_recentLayer;
QVector<LEFLayerInfo*> m_layers;
QString recentMacroName;
QString recentMacroPinName;
QString recentMacroPinPortLayer;
QString m_subBitChar;
QString m_divideChar;
QString recentMacroPinObstructionLayer;
bool baseUnitMicrons;
int m_baseUnitMicronsValue;
};
}
#endif // LEFDATA_H