diff --git a/scripts/mkqtdecl4/mkqtdecl.conf b/scripts/mkqtdecl4/mkqtdecl.conf index edf48aeb6..e157cacfa 100644 --- a/scripts/mkqtdecl4/mkqtdecl.conf +++ b/scripts/mkqtdecl4/mkqtdecl.conf @@ -1361,6 +1361,7 @@ drop_method "QXmlAttributes", /QXmlAttributes::index\(\s*const\s+QLatin1String/ drop_method "QXmlInputSource", /QXmlInputSource::setData\(.*QByteArray/ # clashes with QString version drop_method "QXmlEntityResolver", /QXmlEntityResolver::resolveEntity/ # requires pointer return value drop_method "QXmlDefaultHandler", /QXmlDefaultHandler::resolveEntity/ # requires pointer return value +drop_method "QXmlSimpleReader", /QXmlSimpleReader::parse\(.*QXmlInputSource\s*&/ # clashes with QXmlInputSource * version rename "QDomElement", /QDomElement::setAttribute\(.*qulonglong/, "setAttribute_ull|attribute_ull=" rename "QDomElement", /QDomElement::setAttribute\(.*qlonglong/, "setAttribute_ll|attribute_ll=" rename "QDomElement", /QDomElement::setAttribute\(.*unsigned int/, "setAttribute_ui|attribute_ui=" diff --git a/scripts/mkqtdecl5/mkqtdecl.conf b/scripts/mkqtdecl5/mkqtdecl.conf index d2fd2e598..cbc0b77ea 100644 --- a/scripts/mkqtdecl5/mkqtdecl.conf +++ b/scripts/mkqtdecl5/mkqtdecl.conf @@ -1499,6 +1499,7 @@ no_imports "QXmlStreamAttributes" # base class is a template. drop_method "QXmlStreamAttributes", /QXmlStreamAttributes::append\(const\s+QVector/ # QVector is a template drop_method "QXmlStreamAttributes", /QXmlStreamAttributes::hasAttribute\(\s*QLatin1String/ # QLatin1String is not available drop_method "QXmlStreamAttributes", /QXmlStreamAttributes::value\(.*QLatin1String/ # QLatin1String is not available +drop_method "QXmlSimpleReader", /QXmlSimpleReader::parse\(.*QXmlInputSource\s*&/ # clashes with QXmlInputSource * version drop_method "QAbstractXmlNodeModel", /QAbstractXmlNodeModel::sequencedTypedValue/ # QExplicitlySharedDataPointer template not available drop_method "QAbstractXmlNodeModel", /QAbstractXmlNodeModel::type/ # QExplicitlySharedDataPointer template not available drop_method "QAbstractXmlNodeModel", /QAbstractXmlNodeModel::iterate/ # QExplicitlySharedDataPointer template not available diff --git a/src/db/db/dbEdgePairRelations.cc b/src/db/db/dbEdgePairRelations.cc index 64d23cc43..345e04066 100644 --- a/src/db/db/dbEdgePairRelations.cc +++ b/src/db/db/dbEdgePairRelations.cc @@ -113,7 +113,7 @@ bool euclidian_near_part_of_edge (bool include_zero, db::Coord d, const db::Edge // handle the parallel case if (e.parallel (g)) { - if (abs (e.distance (g.p1 ())) >= d) { + if (std::abs (e.distance (g.p1 ())) >= d) { return false; } } else { @@ -243,7 +243,7 @@ static bool var_near_part_of_edge (bool include_zero, db::Coord d, db::Coord dd, // handle the parallel case if (e.parallel (g)) { - if (abs (e.distance (g.p1 ())) >= d) { + if (std::abs (e.distance (g.p1 ())) >= d) { return false; } } else { diff --git a/src/db/db/dbPolygonTools.cc b/src/db/db/dbPolygonTools.cc index 641184eeb..18d850929 100644 --- a/src/db/db/dbPolygonTools.cc +++ b/src/db/db/dbPolygonTools.cc @@ -26,6 +26,7 @@ #include "dbPolygonTools.h" #include "dbPolygonGenerators.h" #include "tlLog.h" +#include "tlInt128Support.h" #include #include @@ -706,7 +707,7 @@ smooth_contour (db::Polygon::polygon_contour_iterator from, db::Polygon::polygon } for (size_t j = pi0; can_drop; ) { - if (abs (db::Edge (p0, p2).distance (org_points [j])) > d) { + if (std::abs (db::Edge (p0, p2).distance (org_points [j])) > d) { can_drop = false; } if (j == pi2) { diff --git a/src/db/db/dbRegion.cc b/src/db/db/dbRegion.cc index 9377d1f3a..d80c205c0 100644 --- a/src/db/db/dbRegion.cc +++ b/src/db/db/dbRegion.cc @@ -828,8 +828,13 @@ Region::selected_interacting_generic (const Region &other, int mode, bool touchi db::EdgeProcessor ep (m_report_progress, m_progress_desc); // shortcut - if (empty () || other.empty ()) { - if (mode <= 0) { + if (empty ()) { + return *this; + } else if (other.empty ()) { + // clear, if b is empty and + // * mode is inside or interacting and inverse is false ("inside" or "interacting") + // * mode is outside and inverse is true ("not outside") + if ((mode <= 0) != inverse) { return Region (); } else { return *this; @@ -879,8 +884,13 @@ void Region::select_interacting_generic (const Region &other, int mode, bool touching, bool inverse) { // shortcut - if (empty () || other.empty ()) { - if (mode <= 0) { + if (empty ()) { + return; + } else if (other.empty ()) { + // clear, if b is empty and + // * mode is inside or interacting and inverse is false ("inside" or "interacting") + // * mode is outside and inverse is true ("not outside") + if ((mode <= 0) != inverse) { clear (); } return; diff --git a/src/db/unit_tests/dbGDS2Writer.cc b/src/db/unit_tests/dbGDS2Writer.cc index a6cd5cd07..7e714514e 100644 --- a/src/db/unit_tests/dbGDS2Writer.cc +++ b/src/db/unit_tests/dbGDS2Writer.cc @@ -176,7 +176,7 @@ TEST(3) layout_read, top_read, j, top_org.shapes (xor_layer), db::BooleanOp::Xor, true, false); EXPECT_EQ (top_org.shapes (xor_layer).size () > 210, true); - sp.size (layout_org, top_org, xor_layer, top_org.shapes (xor_layer), -1, -1); + sp.size (layout_org, top_org, xor_layer, top_org.shapes (xor_layer), db::Coord (-1), db::Coord (-1)); EXPECT_EQ (top_org.shapes (xor_layer).size () == 0, true); } } @@ -236,7 +236,7 @@ TEST(4) sp.boolean (layout_org, top_org, i, layout_read, top_read, j, top_org.shapes (xor_layer), db::BooleanOp::Xor, true, false); - sp.size (layout_org, top_org, xor_layer, top_org.shapes (xor_layer), -1, -1); + sp.size (layout_org, top_org, xor_layer, top_org.shapes (xor_layer), db::Coord (-1), db::Coord (-1)); EXPECT_EQ (top_org.shapes (xor_layer).size () == 0, true); } } diff --git a/src/db/unit_tests/dbOASISWriter2.cc b/src/db/unit_tests/dbOASISWriter2.cc index b3d86c528..ccbdc0e5e 100644 --- a/src/db/unit_tests/dbOASISWriter2.cc +++ b/src/db/unit_tests/dbOASISWriter2.cc @@ -81,7 +81,7 @@ TEST(1) sp.boolean (layout_org, top_org, i, layout_read, top_read, j, top_org.shapes (xor_layer), db::BooleanOp::Xor, true, false); - sp.size (layout_org, top_org, xor_layer, top_org.shapes (xor_layer), -1, -1); + sp.size (layout_org, top_org, xor_layer, top_org.shapes (xor_layer), db::Coord (-1), db::Coord (-1)); EXPECT_EQ (top_org.shapes (xor_layer).size () == 0, true); } } diff --git a/src/db/unit_tests/dbPolygon.cc b/src/db/unit_tests/dbPolygon.cc index 5d087b21d..7248bb7b1 100644 --- a/src/db/unit_tests/dbPolygon.cc +++ b/src/db/unit_tests/dbPolygon.cc @@ -1026,19 +1026,19 @@ TEST(20) EXPECT_EQ (poly.to_string (), "(100,100;200,100;200,400;100,400;100,300;400,300;400,400;300,400;300,100;400,100;400,200;100,200)"); poly.assign_hull (pts, pts + sizeof (pts) / sizeof (pts[0])); - poly.size (100, 0); + poly.size (db::Coord (100), db::Coord (0)); EXPECT_EQ (poly.to_string (), "(0,100;0,400;500,400;500,100)"); poly.assign_hull (pts, pts + sizeof (pts) / sizeof (pts[0])); - poly.size (0, 100); + poly.size (db::Coord (0), db::Coord (100)); EXPECT_EQ (poly.to_string (), "(100,0;100,500;400,500;400,0)"); poly.assign_hull (pts, pts + sizeof (pts) / sizeof (pts[0])); - poly.size (-100, 0); + poly.size (db::Coord (-100), db::Coord (0)); EXPECT_EQ (poly.to_string (), "(100,100;200,100;200,400;100,400;400,400;300,400;300,100;400,100)"); poly.assign_hull (pts, pts + sizeof (pts) / sizeof (pts[0])); - poly.size (0, -100); + poly.size (db::Coord (0), db::Coord (-100)); EXPECT_EQ (poly.to_string (), "(100,100;100,400;100,300;400,300;400,400;400,100;400,200;100,200)"); poly.assign_hull (pts, pts + sizeof (pts) / sizeof (pts[0])); diff --git a/src/db/unit_tests/dbRegion.cc b/src/db/unit_tests/dbRegion.cc index 2eeed72d6..8700ece97 100644 --- a/src/db/unit_tests/dbRegion.cc +++ b/src/db/unit_tests/dbRegion.cc @@ -122,7 +122,7 @@ TEST(1) r.set_merged_semantics (false); EXPECT_EQ (r.sized (10).to_string (), "(-10,-10;-10,60;60,60;60,-10);(40,40;40,110;110,110;110,40)"); - EXPECT_EQ (r.sized (10, 20).to_string (), "(-10,-20;-10,70;60,70;60,-20);(40,30;40,120;110,120;110,30)"); + EXPECT_EQ (r.sized (db::Coord (10), db::Coord (20)).to_string (), "(-10,-20;-10,70;60,70;60,-20);(40,30;40,120;110,120;110,30)"); EXPECT_EQ (r.sized (10, 20, 0).to_string (), "(0,-20;-10,0;-10,50;0,70;50,70;60,50;60,0;50,-20);(50,30;40,50;40,100;50,120;100,120;110,100;110,50;100,30)"); r.size (10, 20, 2); EXPECT_EQ (r.to_string (), "(-10,-20;-10,70;60,70;60,-20);(40,30;40,120;110,120;110,30)"); @@ -289,13 +289,13 @@ TEST(8) EXPECT_EQ (r.sized (10).to_string (), "(-10,-10;-10,210;110,210;110,-10)"); EXPECT_EQ (r.sized (10).is_box (), true); EXPECT_EQ (r.sized (10).is_merged (), true); - EXPECT_EQ (r.sized (10, 20).to_string (), "(-10,-20;-10,220;110,220;110,-20)"); - EXPECT_EQ (r.sized (10, 20).is_box (), true); - EXPECT_EQ (r.sized (10, 20).is_merged (), true); + EXPECT_EQ (r.sized (db::Coord (10), db::Coord (20)).to_string (), "(-10,-20;-10,220;110,220;110,-20)"); + EXPECT_EQ (r.sized (db::Coord (10), db::Coord (20)).is_box (), true); + EXPECT_EQ (r.sized (db::Coord (10), db::Coord (20)).is_merged (), true); r.size (10); EXPECT_EQ (r.to_string (), "(-10,-10;-10,210;110,210;110,-10)"); - r.size (10, 20); + r.size (db::Coord (10), db::Coord (20)); EXPECT_EQ (r.to_string (), "(-20,-30;-20,230;120,230;120,-30)"); } @@ -307,9 +307,9 @@ TEST(9) EXPECT_EQ (r.sized (10).to_string (), "(-110,-110;-110,410;210,410;210,-110)"); EXPECT_EQ (r.sized (10).is_box (), true); EXPECT_EQ (r.sized (10).is_merged (), false); - EXPECT_EQ (r.sized (10, 20).to_string (), "(-110,-120;-110,420;210,420;210,-120)"); - EXPECT_EQ (r.sized (10, 20).is_box (), true); - EXPECT_EQ (r.sized (10, 20).is_merged (), false); + EXPECT_EQ (r.sized (db::Coord (10), db::Coord (20)).to_string (), "(-110,-120;-110,420;210,420;210,-120)"); + EXPECT_EQ (r.sized (db::Coord (10), db::Coord (20)).is_box (), true); + EXPECT_EQ (r.sized (db::Coord (10), db::Coord (20)).is_merged (), false); } TEST(10a) @@ -1141,12 +1141,12 @@ TEST(27) db::Region r; r.insert (db::Box (db::Point (0, 0), db::Point (100, 200))); - EXPECT_EQ (r.sized (-10, -20).to_string (), "(10,20;10,180;90,180;90,20)"); - EXPECT_EQ (r.sized (-50, -20).to_string (), ""); - EXPECT_EQ (r.sized (-50, -100).to_string (), ""); - EXPECT_EQ (r.sized (-55, -20).to_string (), ""); - EXPECT_EQ (r.sized (-10, -105).to_string (), ""); - EXPECT_EQ (r.sized (-55, -105).to_string (), ""); + EXPECT_EQ (r.sized (db::Coord (-10), db::Coord (-20)).to_string (), "(10,20;10,180;90,180;90,20)"); + EXPECT_EQ (r.sized (db::Coord (-50), db::Coord (-20)).to_string (), ""); + EXPECT_EQ (r.sized (db::Coord (-50), db::Coord (-100)).to_string (), ""); + EXPECT_EQ (r.sized (db::Coord (-55), db::Coord (-20)).to_string (), ""); + EXPECT_EQ (r.sized (db::Coord (-10), db::Coord (-105)).to_string (), ""); + EXPECT_EQ (r.sized (db::Coord (-55), db::Coord (-105)).to_string (), ""); } TEST(28) @@ -1159,7 +1159,7 @@ TEST(28) r2.insert (db::Box (db::Point (100, 100), db::Point (200, 300))); EXPECT_EQ ((r1 & r2).to_string (), ""); - EXPECT_EQ ((r1 & r2.sized (5, 5)).to_string (), "(95,95;95,200;100,200;100,95)"); + EXPECT_EQ ((r1 & r2.sized (db::Coord (5), db::Coord (5))).to_string (), "(95,95;95,200;100,200;100,95)"); } TEST(29) diff --git a/src/db/unit_tests/dbTrans.cc b/src/db/unit_tests/dbTrans.cc index 399bfadb8..839b06aad 100644 --- a/src/db/unit_tests/dbTrans.cc +++ b/src/db/unit_tests/dbTrans.cc @@ -184,7 +184,7 @@ TEST(10) EXPECT_EQ (t.is_ortho (), true); EXPECT_EQ (t.to_string (), recomposed (t).to_string ()); - t = db::DCplxTrans (db::ICplxTrans (db::disp_trans (db::Vector (100, -256)))); + t = db::DCplxTrans (db::ICplxTrans (db::disp_trans (db::Vector (100, -256)))); EXPECT_EQ (t.is_unity (), false); EXPECT_EQ (t.to_string (), "r0 *1 100,-256"); EXPECT_EQ (t.is_ortho (), true); @@ -202,7 +202,7 @@ TEST(10) EXPECT_EQ (t.to_string (), "r0 *1 -0.5,1.25"); EXPECT_EQ (t.to_string (), recomposed (t).to_string ()); - t = db::DCplxTrans (db::DTrans (db::simple_trans (db::FTrans::m135, db::Vector (128, -256)))); + t = db::DCplxTrans (db::DTrans (db::simple_trans (db::FTrans::m135, db::Vector (128, -256)))); EXPECT_EQ (t.is_unity (), false); EXPECT_EQ (t.to_string (), "m135 *1 128,-256"); EXPECT_EQ (t.to_string (), recomposed (t).to_string ()); diff --git a/src/drc/unit_tests/drcBasicTests.cc b/src/drc/unit_tests/drcBasicTests.cc index ac6c9a550..5e0626a0c 100644 --- a/src/drc/unit_tests/drcBasicTests.cc +++ b/src/drc/unit_tests/drcBasicTests.cc @@ -30,7 +30,7 @@ TEST(1) std::string input = tl::testsrc (); input += "/testdata/drc/drctest.gds"; std::string au = tl::testsrc (); - au += "/testdata/drc/drcBasicTests_au.gds"; + au += "/testdata/drc/drcBasicTests_au.oas"; std::string output = this->tmp_file ("tmp.gds"); diff --git a/src/drc/unit_tests/drcSimpleTests.cc b/src/drc/unit_tests/drcSimpleTests.cc index 06c4fd22c..d038e18f0 100644 --- a/src/drc/unit_tests/drcSimpleTests.cc +++ b/src/drc/unit_tests/drcSimpleTests.cc @@ -31,7 +31,7 @@ TEST(1) rs += "/testdata/drc/drcSimpleTests_1.drc"; std::string au = tl::testsrc (); - au += "/testdata/drc/drcSimpleTests_au1.gds"; + au += "/testdata/drc/drcSimpleTests_au1.oas"; std::string output = this->tmp_file ("tmp.gds"); @@ -71,7 +71,7 @@ TEST(2) input += "/testdata/drc/drctest.gds"; std::string au = tl::testsrc (); - au += "/testdata/drc/drcSimpleTests_au2.gds"; + au += "/testdata/drc/drcSimpleTests_au2.oas"; std::string output = this->tmp_file ("tmp.gds"); @@ -111,7 +111,7 @@ TEST(3) input += "/testdata/drc/drctest.gds"; std::string au = tl::testsrc (); - au += "/testdata/drc/drcSimpleTests_au3.gds"; + au += "/testdata/drc/drcSimpleTests_au3.oas"; std::string output = this->tmp_file ("tmp.gds"); diff --git a/src/drc/unit_tests/drcSuiteTests.cc b/src/drc/unit_tests/drcSuiteTests.cc index 535afbaa2..c977af56e 100644 --- a/src/drc/unit_tests/drcSuiteTests.cc +++ b/src/drc/unit_tests/drcSuiteTests.cc @@ -36,7 +36,7 @@ void runtest (tl::TestBase *_this, int mode) std::string au = tl::testsrc (); au += "/testdata/drc/drcSuiteTests_au"; au += tl::to_string (mode); - au += ".gds"; + au += ".oas"; std::string output = _this->tmp_file ("tmp.gds"); diff --git a/src/gsi/gsi/gsiTypes.cc b/src/gsi/gsi/gsiTypes.cc index cf5d62f38..bffc48eb4 100644 --- a/src/gsi/gsi/gsiTypes.cc +++ b/src/gsi/gsi/gsiTypes.cc @@ -66,6 +66,10 @@ ArgType::to_string () const s += "long long"; break; case T_ulonglong: s += "unsigned long long"; break; +#if defined(HAVE_64BIT_COORD) + case T_int128: + s += "int128"; break; +#endif case T_double: s += "double"; break; case T_float: diff --git a/src/gsiqt4/gsiDeclQXmlSimpleReader.cc b/src/gsiqt4/gsiDeclQXmlSimpleReader.cc index 9945c535d..cf9b472cf 100644 --- a/src/gsiqt4/gsiDeclQXmlSimpleReader.cc +++ b/src/gsiqt4/gsiDeclQXmlSimpleReader.cc @@ -193,25 +193,6 @@ static void _call_f_lexicalHandler_c0 (const qt_gsi::GenericMethod * /*decl*/, v } -// (const QXmlInputSource &) - - -static void _init_f_parse_2852 (qt_gsi::GenericMethod *decl) -{ - static gsi::ArgSpecBase argspec_0 ("input"); - decl->add_arg (argspec_0); - decl->set_return (); -} - -static void _call_f_parse_2852 (const qt_gsi::GenericMethod * /*decl*/, void *cls, gsi::SerialArgs &args, gsi::SerialArgs &ret) -{ - __SUPPRESS_UNUSED_WARNING(args); - tl::Heap heap; - const QXmlInputSource &arg1 = args.read (heap); - ret.write ((bool)((QXmlSimpleReader *)cls)->parse (arg1)); -} - - // (const QXmlInputSource *) @@ -470,7 +451,6 @@ static gsi::Methods methods_QXmlSimpleReader () { methods += new qt_gsi::GenericMethod ("hasFeature", "@brief Method (const QString &) const\nThis is a reimplementation of QXmlReader::hasFeature", true, &_init_f_hasFeature_c2025, &_call_f_hasFeature_c2025); methods += new qt_gsi::GenericMethod ("hasProperty", "@brief Method (const QString &) const\nThis is a reimplementation of QXmlReader::hasProperty", true, &_init_f_hasProperty_c2025, &_call_f_hasProperty_c2025); methods += new qt_gsi::GenericMethod (":lexicalHandler", "@brief Method () const\nThis is a reimplementation of QXmlReader::lexicalHandler", true, &_init_f_lexicalHandler_c0, &_call_f_lexicalHandler_c0); - methods += new qt_gsi::GenericMethod ("parse", "@brief Method (const QXmlInputSource &)\nThis is a reimplementation of QXmlReader::parse", false, &_init_f_parse_2852, &_call_f_parse_2852); methods += new qt_gsi::GenericMethod ("parse", "@brief Method (const QXmlInputSource *)\nThis is a reimplementation of QXmlReader::parse", false, &_init_f_parse_2856, &_call_f_parse_2856); methods += new qt_gsi::GenericMethod ("parse", "@brief Method (const QXmlInputSource *, bool)\n", false, &_init_f_parse_3612, &_call_f_parse_3612); methods += new qt_gsi::GenericMethod ("parseContinue", "@brief Method bool QXmlSimpleReader::parseContinue()\n", false, &_init_f_parseContinue_0, &_call_f_parseContinue_0); @@ -644,21 +624,6 @@ public: } } - // [adaptor impl] bool QXmlSimpleReader::parse(const QXmlInputSource &input) - bool cbs_parse_2852_0(const QXmlInputSource &input) - { - return QXmlSimpleReader::parse(input); - } - - virtual bool parse(const QXmlInputSource &input) - { - if (cb_parse_2852_0.can_issue()) { - return cb_parse_2852_0.issue(&QXmlSimpleReader_Adaptor::cbs_parse_2852_0, input); - } else { - return QXmlSimpleReader::parse(input); - } - } - // [adaptor impl] bool QXmlSimpleReader::parse(const QXmlInputSource *input) bool cbs_parse_2856_0(const QXmlInputSource *input) { @@ -848,7 +813,6 @@ public: gsi::Callback cb_hasFeature_c2025_0; gsi::Callback cb_hasProperty_c2025_0; gsi::Callback cb_lexicalHandler_c0_0; - gsi::Callback cb_parse_2852_0; gsi::Callback cb_parse_2856_0; gsi::Callback cb_parse_3612_0; gsi::Callback cb_parseContinue_0_0; @@ -1065,29 +1029,6 @@ static void _set_callback_cbs_lexicalHandler_c0_0 (void *cls, const gsi::Callbac } -// bool QXmlSimpleReader::parse(const QXmlInputSource &input) - -static void _init_cbs_parse_2852_0 (qt_gsi::GenericMethod *decl) -{ - static gsi::ArgSpecBase argspec_0 ("input"); - decl->add_arg (argspec_0); - decl->set_return (); -} - -static void _call_cbs_parse_2852_0 (const qt_gsi::GenericMethod * /*decl*/, void *cls, gsi::SerialArgs &args, gsi::SerialArgs &ret) -{ - __SUPPRESS_UNUSED_WARNING(args); - tl::Heap heap; - const QXmlInputSource &arg1 = args.read (heap); - ret.write ((bool)((QXmlSimpleReader_Adaptor *)cls)->cbs_parse_2852_0 (arg1)); -} - -static void _set_callback_cbs_parse_2852_0 (void *cls, const gsi::Callback &cb) -{ - ((QXmlSimpleReader_Adaptor *)cls)->cb_parse_2852_0 = cb; -} - - // bool QXmlSimpleReader::parse(const QXmlInputSource *input) static void _init_cbs_parse_2856_0 (qt_gsi::GenericMethod *decl) @@ -1406,8 +1347,6 @@ static gsi::Methods methods_QXmlSimpleReader_Adaptor () { methods += new qt_gsi::GenericMethod ("hasProperty", "@brief Virtual method bool QXmlSimpleReader::hasProperty(const QString &name)\nThis method can be reimplemented in a derived class.", true, &_init_cbs_hasProperty_c2025_0, &_call_cbs_hasProperty_c2025_0, &_set_callback_cbs_hasProperty_c2025_0); methods += new qt_gsi::GenericMethod ("lexicalHandler", "@hide", true, &_init_cbs_lexicalHandler_c0_0, &_call_cbs_lexicalHandler_c0_0); methods += new qt_gsi::GenericMethod ("lexicalHandler", "@brief Virtual method QXmlLexicalHandler *QXmlSimpleReader::lexicalHandler()\nThis method can be reimplemented in a derived class.", true, &_init_cbs_lexicalHandler_c0_0, &_call_cbs_lexicalHandler_c0_0, &_set_callback_cbs_lexicalHandler_c0_0); - methods += new qt_gsi::GenericMethod ("parse", "@hide", false, &_init_cbs_parse_2852_0, &_call_cbs_parse_2852_0); - methods += new qt_gsi::GenericMethod ("parse", "@brief Virtual method bool QXmlSimpleReader::parse(const QXmlInputSource &input)\nThis method can be reimplemented in a derived class.", false, &_init_cbs_parse_2852_0, &_call_cbs_parse_2852_0, &_set_callback_cbs_parse_2852_0); methods += new qt_gsi::GenericMethod ("parse", "@hide", false, &_init_cbs_parse_2856_0, &_call_cbs_parse_2856_0); methods += new qt_gsi::GenericMethod ("parse", "@brief Virtual method bool QXmlSimpleReader::parse(const QXmlInputSource *input)\nThis method can be reimplemented in a derived class.", false, &_init_cbs_parse_2856_0, &_call_cbs_parse_2856_0, &_set_callback_cbs_parse_2856_0); methods += new qt_gsi::GenericMethod ("parse", "@hide", false, &_init_cbs_parse_3612_0, &_call_cbs_parse_3612_0); diff --git a/src/gsiqt5/gsiDeclQXmlSimpleReader.cc b/src/gsiqt5/gsiDeclQXmlSimpleReader.cc index 9945c535d..cf9b472cf 100644 --- a/src/gsiqt5/gsiDeclQXmlSimpleReader.cc +++ b/src/gsiqt5/gsiDeclQXmlSimpleReader.cc @@ -193,25 +193,6 @@ static void _call_f_lexicalHandler_c0 (const qt_gsi::GenericMethod * /*decl*/, v } -// (const QXmlInputSource &) - - -static void _init_f_parse_2852 (qt_gsi::GenericMethod *decl) -{ - static gsi::ArgSpecBase argspec_0 ("input"); - decl->add_arg (argspec_0); - decl->set_return (); -} - -static void _call_f_parse_2852 (const qt_gsi::GenericMethod * /*decl*/, void *cls, gsi::SerialArgs &args, gsi::SerialArgs &ret) -{ - __SUPPRESS_UNUSED_WARNING(args); - tl::Heap heap; - const QXmlInputSource &arg1 = args.read (heap); - ret.write ((bool)((QXmlSimpleReader *)cls)->parse (arg1)); -} - - // (const QXmlInputSource *) @@ -470,7 +451,6 @@ static gsi::Methods methods_QXmlSimpleReader () { methods += new qt_gsi::GenericMethod ("hasFeature", "@brief Method (const QString &) const\nThis is a reimplementation of QXmlReader::hasFeature", true, &_init_f_hasFeature_c2025, &_call_f_hasFeature_c2025); methods += new qt_gsi::GenericMethod ("hasProperty", "@brief Method (const QString &) const\nThis is a reimplementation of QXmlReader::hasProperty", true, &_init_f_hasProperty_c2025, &_call_f_hasProperty_c2025); methods += new qt_gsi::GenericMethod (":lexicalHandler", "@brief Method () const\nThis is a reimplementation of QXmlReader::lexicalHandler", true, &_init_f_lexicalHandler_c0, &_call_f_lexicalHandler_c0); - methods += new qt_gsi::GenericMethod ("parse", "@brief Method (const QXmlInputSource &)\nThis is a reimplementation of QXmlReader::parse", false, &_init_f_parse_2852, &_call_f_parse_2852); methods += new qt_gsi::GenericMethod ("parse", "@brief Method (const QXmlInputSource *)\nThis is a reimplementation of QXmlReader::parse", false, &_init_f_parse_2856, &_call_f_parse_2856); methods += new qt_gsi::GenericMethod ("parse", "@brief Method (const QXmlInputSource *, bool)\n", false, &_init_f_parse_3612, &_call_f_parse_3612); methods += new qt_gsi::GenericMethod ("parseContinue", "@brief Method bool QXmlSimpleReader::parseContinue()\n", false, &_init_f_parseContinue_0, &_call_f_parseContinue_0); @@ -644,21 +624,6 @@ public: } } - // [adaptor impl] bool QXmlSimpleReader::parse(const QXmlInputSource &input) - bool cbs_parse_2852_0(const QXmlInputSource &input) - { - return QXmlSimpleReader::parse(input); - } - - virtual bool parse(const QXmlInputSource &input) - { - if (cb_parse_2852_0.can_issue()) { - return cb_parse_2852_0.issue(&QXmlSimpleReader_Adaptor::cbs_parse_2852_0, input); - } else { - return QXmlSimpleReader::parse(input); - } - } - // [adaptor impl] bool QXmlSimpleReader::parse(const QXmlInputSource *input) bool cbs_parse_2856_0(const QXmlInputSource *input) { @@ -848,7 +813,6 @@ public: gsi::Callback cb_hasFeature_c2025_0; gsi::Callback cb_hasProperty_c2025_0; gsi::Callback cb_lexicalHandler_c0_0; - gsi::Callback cb_parse_2852_0; gsi::Callback cb_parse_2856_0; gsi::Callback cb_parse_3612_0; gsi::Callback cb_parseContinue_0_0; @@ -1065,29 +1029,6 @@ static void _set_callback_cbs_lexicalHandler_c0_0 (void *cls, const gsi::Callbac } -// bool QXmlSimpleReader::parse(const QXmlInputSource &input) - -static void _init_cbs_parse_2852_0 (qt_gsi::GenericMethod *decl) -{ - static gsi::ArgSpecBase argspec_0 ("input"); - decl->add_arg (argspec_0); - decl->set_return (); -} - -static void _call_cbs_parse_2852_0 (const qt_gsi::GenericMethod * /*decl*/, void *cls, gsi::SerialArgs &args, gsi::SerialArgs &ret) -{ - __SUPPRESS_UNUSED_WARNING(args); - tl::Heap heap; - const QXmlInputSource &arg1 = args.read (heap); - ret.write ((bool)((QXmlSimpleReader_Adaptor *)cls)->cbs_parse_2852_0 (arg1)); -} - -static void _set_callback_cbs_parse_2852_0 (void *cls, const gsi::Callback &cb) -{ - ((QXmlSimpleReader_Adaptor *)cls)->cb_parse_2852_0 = cb; -} - - // bool QXmlSimpleReader::parse(const QXmlInputSource *input) static void _init_cbs_parse_2856_0 (qt_gsi::GenericMethod *decl) @@ -1406,8 +1347,6 @@ static gsi::Methods methods_QXmlSimpleReader_Adaptor () { methods += new qt_gsi::GenericMethod ("hasProperty", "@brief Virtual method bool QXmlSimpleReader::hasProperty(const QString &name)\nThis method can be reimplemented in a derived class.", true, &_init_cbs_hasProperty_c2025_0, &_call_cbs_hasProperty_c2025_0, &_set_callback_cbs_hasProperty_c2025_0); methods += new qt_gsi::GenericMethod ("lexicalHandler", "@hide", true, &_init_cbs_lexicalHandler_c0_0, &_call_cbs_lexicalHandler_c0_0); methods += new qt_gsi::GenericMethod ("lexicalHandler", "@brief Virtual method QXmlLexicalHandler *QXmlSimpleReader::lexicalHandler()\nThis method can be reimplemented in a derived class.", true, &_init_cbs_lexicalHandler_c0_0, &_call_cbs_lexicalHandler_c0_0, &_set_callback_cbs_lexicalHandler_c0_0); - methods += new qt_gsi::GenericMethod ("parse", "@hide", false, &_init_cbs_parse_2852_0, &_call_cbs_parse_2852_0); - methods += new qt_gsi::GenericMethod ("parse", "@brief Virtual method bool QXmlSimpleReader::parse(const QXmlInputSource &input)\nThis method can be reimplemented in a derived class.", false, &_init_cbs_parse_2852_0, &_call_cbs_parse_2852_0, &_set_callback_cbs_parse_2852_0); methods += new qt_gsi::GenericMethod ("parse", "@hide", false, &_init_cbs_parse_2856_0, &_call_cbs_parse_2856_0); methods += new qt_gsi::GenericMethod ("parse", "@brief Virtual method bool QXmlSimpleReader::parse(const QXmlInputSource *input)\nThis method can be reimplemented in a derived class.", false, &_init_cbs_parse_2856_0, &_call_cbs_parse_2856_0, &_set_callback_cbs_parse_2856_0); methods += new qt_gsi::GenericMethod ("parse", "@hide", false, &_init_cbs_parse_3612_0, &_call_cbs_parse_3612_0); diff --git a/src/lay/lay/layGSIHelpProvider.cc b/src/lay/lay/layGSIHelpProvider.cc index 697a8c092..9a49c26db 100644 --- a/src/lay/lay/layGSIHelpProvider.cc +++ b/src/lay/lay/layGSIHelpProvider.cc @@ -577,6 +577,10 @@ type_to_s (const gsi::ArgType &a, bool linked, bool for_return) s += "unsigned short"; break; case gsi::T_int: s += "int"; break; +#if defined(HAVE_64BIT_COORD) + case gsi::T_int128: + s += "int128"; break; +#endif case gsi::T_uint: s += "unsigned int"; break; case gsi::T_long: diff --git a/src/laybasic/laybasic/layCellView.cc b/src/laybasic/laybasic/layCellView.cc index a2473fc7e..065b8a345 100644 --- a/src/laybasic/laybasic/layCellView.cc +++ b/src/laybasic/laybasic/layCellView.cc @@ -145,6 +145,10 @@ LayoutHandle::rename (const std::string &name, bool force) throw (tl::Exception) tl::info << "Renamed layout from " << m_name << " to " << n; } + if (find (m_name) == this) { + ms_dict.erase (m_name); + } + m_name = n; ms_dict.insert (std::make_pair (n, this)); return; diff --git a/src/tl/tl/tl.pro b/src/tl/tl/tl.pro index c71087b8e..48595c33c 100644 --- a/src/tl/tl/tl.pro +++ b/src/tl/tl/tl.pro @@ -42,7 +42,8 @@ SOURCES = \ tlWebDAV.cc \ tlArch.cc \ tlCommandLineParser.cc \ - tlUnitTest.cc + tlUnitTest.cc \ + tlInt128Support.cc HEADERS = \ tlAlgorithm.h \ @@ -90,7 +91,8 @@ HEADERS = \ tlWebDAV.h \ tlArch.h \ tlCommandLineParser.h \ - tlUnitTest.h + tlUnitTest.h \ + tlInt128Support.h INCLUDEPATH = DEPENDPATH = diff --git a/src/tl/tl/tlInt128Support.cc b/src/tl/tl/tlInt128Support.cc new file mode 100644 index 000000000..c6f4bd007 --- /dev/null +++ b/src/tl/tl/tlInt128Support.cc @@ -0,0 +1,29 @@ + +/* + + KLayout Layout Viewer + Copyright (C) 2006-2018 Matthias Koefferlein + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +*/ + +#if defined(HAVE_64BIT_COORD) + +#include "tlInt128Support.h" + +// .. nothing yet .. + +#endif diff --git a/src/tl/tl/tlInt128Support.h b/src/tl/tl/tlInt128Support.h new file mode 100644 index 000000000..1ead22cc6 --- /dev/null +++ b/src/tl/tl/tlInt128Support.h @@ -0,0 +1,58 @@ + +/* + + KLayout Layout Viewer + Copyright (C) 2006-2018 Matthias Koefferlein + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +*/ + +#ifndef HDR_tlInt128Support +#define HDR_tlInt128Support + +#if defined(HAVE_64BIT_COORD) + +#include "tlCommon.h" +#include "tlString.h" +#include +#include + +namespace std +{ + +#if !defined(__GLIBCXX_BITSIZE_INT_N_0) || __GLIBCXX_BITSIZE_INT_N_0 != 128 + + // Provide an implementation for abs(__int128_t) if there isn't one + inline __int128 abs (__int128 x) + { + return x < 0 ? -x : x; + } + +#endif + + // Provide ostream serialization for 128bit values + inline std::ostream &operator<< (std::ostream &os, __int128 x) + { + os << tl::to_string (x); + return os; + } + +} + +#endif + +#endif + diff --git a/src/tl/tl/tlString.cc b/src/tl/tl/tlString.cc index 95ae2cea4..52d7f6715 100644 --- a/src/tl/tl/tlString.cc +++ b/src/tl/tl/tlString.cc @@ -232,29 +232,52 @@ tl::to_string (const unsigned long long &d) } #if defined(HAVE_64BIT_COORD) + template <> std::string tl::to_string (const __int128 &d) { if (d < 0 ) { - return "-" + tl::to_string(static_cast(-d)); + return "-" + tl::to_string(static_cast (-d)); } else { - return tl::to_string(static_cast(d)); + return tl::to_string(static_cast (d)); } } template <> std::string -tl::to_string (const unsigned __int128 &d) +tl::to_string (const unsigned __int128 &_x) { - if (static_cast(d) == d) { - return tl::to_string(static_cast(d)); + std::string r; + unsigned __int128 x = _x; + + // this is the max. power of 10 that can be represented with __int128 + unsigned __int128 m = (unsigned long long) 0x4b3b4ca85a86c47a; + m <<= 64; + m |= (unsigned long long) 0x98a224000000000; + + if (x == 0) { + return "0"; } - std::ostringstream os; - os.imbue (c_locale); - os << "0x" << std::hex << static_cast (d>>64) << static_cast (d); - return os.str (); + + bool first = true; + while (m > 1) { + int d = 0; + while (x >= m) { + d += 1; + x -= m; + } + if (d > 0 || !first) { + r += char ('0' + d); + first = false; + } + m /= 10; + } + + r += char('0' + int(x)); + return r; } + #endif template <> diff --git a/src/tl/tl/tlUnitTest.h b/src/tl/tl/tlUnitTest.h index 7c1d149bb..66aea9fde 100644 --- a/src/tl/tl/tlUnitTest.h +++ b/src/tl/tl/tlUnitTest.h @@ -27,6 +27,7 @@ #include "tlLog.h" #include "tlException.h" #include "tlString.h" +#include "tlInt128Support.h" #include #include diff --git a/src/tl/unit_tests/tlInt128Support.cc b/src/tl/unit_tests/tlInt128Support.cc new file mode 100644 index 000000000..bca43995e --- /dev/null +++ b/src/tl/unit_tests/tlInt128Support.cc @@ -0,0 +1,62 @@ + +/* + + KLayout Layout Viewer + Copyright (C) 2006-2018 Matthias Koefferlein + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +*/ + +#if defined(HAVE_64BIT_COORD) + +#include "tlInt128Support.h" +#include "tlUnitTest.h" + +#include + +TEST(1) +{ + EXPECT_EQ (tl::to_string (__int128 (0)), "0"); + EXPECT_EQ (tl::to_string (__int128 (42)), "42"); + EXPECT_EQ (tl::to_string (__int128 (-42)), "-42"); + + __int128 x = 1; + for (int i = 0; i < 30; ++i) { + x *= 10; + } + + EXPECT_EQ (tl::to_string (x), "1000000000000000000000000000000"); + EXPECT_EQ (tl::to_string (-x), "-1000000000000000000000000000000"); + EXPECT_EQ (tl::to_string (x + 1), "1000000000000000000000000000001"); + EXPECT_EQ (tl::to_string (x - 1), "999999999999999999999999999999"); +} + +TEST(2) +{ + EXPECT_EQ (tl::to_string ((unsigned __int128) 0), "0"); + EXPECT_EQ (tl::to_string ((unsigned __int128) 42), "42"); + + unsigned __int128 x = 1; + for (int i = 0; i < 30; ++i) { + x *= 10; + } + + EXPECT_EQ (tl::to_string (x), "1000000000000000000000000000000"); + EXPECT_EQ (tl::to_string (x + 1), "1000000000000000000000000000001"); + EXPECT_EQ (tl::to_string (x - 1), "999999999999999999999999999999"); +} + +#endif diff --git a/src/tl/unit_tests/unit_tests.pro b/src/tl/unit_tests/unit_tests.pro index 59bcb5b09..1984e3fa0 100644 --- a/src/tl/unit_tests/unit_tests.pro +++ b/src/tl/unit_tests/unit_tests.pro @@ -32,6 +32,7 @@ SOURCES = \ tlVariant.cc \ tlWebDAV.cc \ tlXMLParser.cc \ + tlInt128Support.cc INCLUDEPATH += $$TL_INC DEPENDPATH += $$TL_INC diff --git a/testdata/drc/drcBasicTests_au.gds b/testdata/drc/drcBasicTests_au.oas similarity index 100% rename from testdata/drc/drcBasicTests_au.gds rename to testdata/drc/drcBasicTests_au.oas diff --git a/testdata/drc/drcSimpleTests_au1.gds b/testdata/drc/drcSimpleTests_au1.oas similarity index 100% rename from testdata/drc/drcSimpleTests_au1.gds rename to testdata/drc/drcSimpleTests_au1.oas diff --git a/testdata/drc/drcSimpleTests_au2.gds b/testdata/drc/drcSimpleTests_au2.oas similarity index 100% rename from testdata/drc/drcSimpleTests_au2.gds rename to testdata/drc/drcSimpleTests_au2.oas diff --git a/testdata/drc/drcSimpleTests_au3.gds b/testdata/drc/drcSimpleTests_au3.oas similarity index 100% rename from testdata/drc/drcSimpleTests_au3.gds rename to testdata/drc/drcSimpleTests_au3.oas diff --git a/testdata/drc/drcSuiteTests.drc b/testdata/drc/drcSuiteTests.drc index 3602a6ca4..58aed5e23 100644 --- a/testdata/drc/drcSuiteTests.drc +++ b/testdata/drc/drcSuiteTests.drc @@ -13,6 +13,7 @@ def run_testsuite(dm, ic, tiled = false) c = input(3) x = input(10) y = input(11) + empty = input(1000) h = {} layers.each { |l| h[l] = true } @@ -123,6 +124,9 @@ def run_testsuite(dm, ic, tiled = false) message "--- interacting, in, not_in #{lb}" b.interacting(a).output(lb, dm) + b.not_interacting(a).output(lb, dm + 1) + b.interacting(empty).output(lb, dm + 2) + b.not_interacting(empty).output(lb, dm + 3) b.interacting(a).in(b).output(lb + 1, dm) (b|a).not_in(b).output(lb + 2, dm) x.in(b).output(lb + 3, dm) @@ -132,21 +136,73 @@ def run_testsuite(dm, ic, tiled = false) message "--- inside, outside, overlapping, interacting #{lb}" b.inside(c).output(lb, dm) + b.not_inside(c).output(lb, dm + 1) + b.inside(empty).output(lb, dm + 2) + b.not_inside(empty).output(lb, dm + 3) b.outside(c).output(lb + 1, dm) + b.not_outside(c).output(lb + 1, dm + 1) + b.outside(empty).output(lb + 1, dm + 2) + b.not_outside(empty).output(lb + 1, dm + 3) b.overlapping(c).output(lb + 2, dm) + b.not_overlapping(c).output(lb + 2, dm + 1) + b.overlapping(empty).output(lb + 2, dm + 2) + b.not_overlapping(empty).output(lb + 2, dm + 3) b.interacting(c).output(lb + 3, dm) + b.not_interacting(c).output(lb + 3, dm + 1) + b.interacting(empty).output(lb + 3, dm + 2) + b.not_interacting(empty).output(lb + 3, dm + 3) bdup = b.dup bdup.select_inside(c) bdup.xor(b.inside(c)).output(lb + 4, dm) bdup = b.dup + bdup.select_not_inside(c) + bdup.output(lb + 4, dm + 1) + bdup = b.dup + bdup.select_inside(empty) + bdup.output(lb + 4, dm + 2) + bdup = b.dup + bdup.select_not_inside(empty) + bdup.output(lb + 4, dm + 3) + bdup = b.dup bdup.select_outside(c) bdup.xor(b.outside(c)).output(lb + 5, dm) bdup = b.dup + bdup.select_not_outside(c) + bdup.output(lb + 5, dm + 1) + bdup = b.dup + bdup.select_outside(empty) + bdup.output(lb + 5, dm + 2) + bdup = b.dup + bdup.select_not_outside(empty) + bdup.output(lb + 5, dm + 3) + bdup = b.dup bdup.select_overlapping(c) bdup.xor(b.overlapping(c)).output(lb + 6, dm) bdup = b.dup + bdup.select_not_overlapping(c) + bdup.output(lb + 6, dm + 1) + bdup = b.dup + bdup.select_overlapping(empty) + bdup.output(lb + 6, dm + 2) + bdup = b.dup + bdup.select_not_overlapping(empty) + bdup.output(lb + 6, dm + 3) + bdup = b.dup bdup.select_interacting(c) bdup.xor(b.interacting(c)).output(lb + 7, dm) + bdup = b.dup + bdup.select_not_interacting(c) + bdup.output(lb + 7, dm + 1) + bdup = b.dup + bdup.select_interacting(empty) + bdup.output(lb + 7, dm + 2) + bdup = b.dup + bdup.select_not_interacting(empty) + bdup.output(lb + 7, dm + 3) + b.inside(empty).output(lb + 8, dm) + b.not_inside(empty).output(lb + 8, dm + 1) + b.outside(empty).output(lb + 9, dm) + b.not_outside(empty).output(lb + 9, dm + 1) lb += 10 message "--- merge #{lb}" diff --git a/testdata/drc/drcSuiteTests_au1.gds b/testdata/drc/drcSuiteTests_au1.oas similarity index 78% rename from testdata/drc/drcSuiteTests_au1.gds rename to testdata/drc/drcSuiteTests_au1.oas index 5cb92178e..dfb17aa77 100644 Binary files a/testdata/drc/drcSuiteTests_au1.gds and b/testdata/drc/drcSuiteTests_au1.oas differ diff --git a/testdata/drc/drcSuiteTests_au2.gds b/testdata/drc/drcSuiteTests_au2.oas similarity index 76% rename from testdata/drc/drcSuiteTests_au2.gds rename to testdata/drc/drcSuiteTests_au2.oas index e59e510e5..6394194da 100644 Binary files a/testdata/drc/drcSuiteTests_au2.gds and b/testdata/drc/drcSuiteTests_au2.oas differ diff --git a/testdata/drc/drcSuiteTests_au3.gds b/testdata/drc/drcSuiteTests_au3.oas similarity index 72% rename from testdata/drc/drcSuiteTests_au3.gds rename to testdata/drc/drcSuiteTests_au3.oas index 9a4beda7e..e2c1b8960 100644 Binary files a/testdata/drc/drcSuiteTests_au3.gds and b/testdata/drc/drcSuiteTests_au3.oas differ diff --git a/testdata/drc/drcSuiteTests_au4.gds b/testdata/drc/drcSuiteTests_au4.oas similarity index 76% rename from testdata/drc/drcSuiteTests_au4.gds rename to testdata/drc/drcSuiteTests_au4.oas index e59e510e5..6394194da 100644 Binary files a/testdata/drc/drcSuiteTests_au4.gds and b/testdata/drc/drcSuiteTests_au4.oas differ