00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037 #ifndef FPCOMMON
00038 #define FPCOMMON
00039
00040 #include <string>
00041 #include <iostream>
00042 #include <iomanip>
00043 #include <fstream>
00044 #include <vector>
00045 #include <algorithm>
00046 #include <math.h>
00047 #include <stdlib.h>
00048 #include <time.h>
00049 #include "ABKCommon/abktimer.h"
00050
00051 using namespace std;
00052
00053 namespace parquetfp
00054 {
00055 enum ORIENT {N, E, S, W, FN, FE, FS, FW};
00056
00057 ostream& operator<<(ostream&, const ORIENT&);
00058
00059 struct ltstr
00060 {
00061 bool operator()(const char* s1, const char* s2) const
00062 {
00063 return strcmp(s1, s2) < 0;
00064 }
00065 };
00066
00067 struct Point
00068 {
00069 Point() {}
00070 Point(double x_, double y_)
00071 : x(x_), y(y_) {}
00072 double x;
00073 double y;
00074 };
00075
00076 struct IntPoint
00077 {
00078 IntPoint(int x_, int y_)
00079 : x(x_), y(y_) {}
00080 int x;
00081 int y;
00082 };
00083
00084 class BBox
00085 {
00086 private:
00087 double _minX;
00088 double _maxX;
00089 double _minY;
00090 double _maxY;
00091
00092 bool _valid;
00093
00094 public:
00095
00096 BBox();
00097 BBox(double minX, double minY,
00098 double maxX, double maxY)
00099 : _minX(minX), _maxX(maxX),
00100 _minY(minY), _maxY(maxY) {}
00101
00102 void put(Point& point);
00103 void clear(void);
00104 double getHPWL(void);
00105 double getXSize(void);
00106 double getYSize(void);
00107 bool isValid(void);
00108 };
00109
00110
00111 void eatblank(ifstream& i);
00112
00113 void skiptoeol(ifstream& i);
00114
00115 void eathash(ifstream& i);
00116
00117 bool needCaseChar(ifstream& i, char character);
00118
00119
00120 ORIENT toOrient(char* orient);
00121 char* toChar(ORIENT orient);
00122 }
00123
00124
00125
00126 #endif
00127
00128
00129