mirror of
https://github.com/KLayout/klayout.git
synced 2026-09-02 10:57:51 +02:00
WIP: implementation for GDS2 and OASIS, added tests.
This commit is contained in:
@@ -418,7 +418,7 @@ TEST(3_AdvancedMapping)
|
||||
|
||||
EXPECT_EQ (lm_read.to_string_file_format (),
|
||||
"1/10 : 1/0\n"
|
||||
"2/0-9,21-*\n"
|
||||
"2/0-1 : 2/0\n"
|
||||
"1/0 : 1/0\n"
|
||||
"1/1 : 1/1\n"
|
||||
"1/20 : 1/1020\n"
|
||||
@@ -427,16 +427,55 @@ TEST(3_AdvancedMapping)
|
||||
"2/11 : 2/11\n"
|
||||
"42/42 : 142/42\n"
|
||||
"100/0 : 200/0\n"
|
||||
"2/12-20 : */*\n"
|
||||
"1/22-30 : 1/*+1000\n"
|
||||
"1/2-9,11-19,31-* : */*\n"
|
||||
"0/*;3-41/*;42/0-41,43-*;43-99/*;100/1-*;101-*/* : *+100/*\n"
|
||||
);
|
||||
|
||||
std::string fn_au (tl::testsrc () + "/testdata/gds/alm_au.gds");
|
||||
db::compare_layouts (_this, layout, fn_au, db::WriteGDS2, 1);
|
||||
}
|
||||
|
||||
TEST(3_MultiMapping)
|
||||
{
|
||||
db::Manager m (false);
|
||||
db::Layout layout (&m);
|
||||
|
||||
db::LoadLayoutOptions options;
|
||||
db::LayerMap lm, lm_read;
|
||||
|
||||
unsigned int n = 0;
|
||||
lm.map_expr ("*/*: */*", n++);
|
||||
lm.unmap_expr ("1-2/10");
|
||||
lm.mmap_expr ("1-2/10: *+100/*", n++);
|
||||
lm.mmap_expr ("1/10;2/10: 12/1010", n++);
|
||||
lm.mmap_expr ("1/0-1: */*+1000", n++);
|
||||
options.get_options<db::CommonReaderOptions> ().layer_map = lm;
|
||||
|
||||
{
|
||||
tl::InputStream file (tl::testsrc () + "/testdata/gds/alm.gds");
|
||||
db::Reader reader (file);
|
||||
lm_read = reader.read (layout, options);
|
||||
}
|
||||
|
||||
EXPECT_EQ (lm_read.to_string_file_format (),
|
||||
"+1-2/10 : 12/1010\n"
|
||||
"+1/0 : 1/1000\n"
|
||||
"+1/0 : 1/0\n"
|
||||
"+1/1 : 1/1001\n"
|
||||
"+1/1 : 1/1\n"
|
||||
"+1/10 : 101/10\n"
|
||||
"1/20 : 1/20\n"
|
||||
"1/21 : 1/21\n"
|
||||
"2/0 : 2/0\n"
|
||||
"2/1 : 2/1\n"
|
||||
"+2/10 : 102/10\n"
|
||||
"2/11 : 2/11\n"
|
||||
"42/42 : 42/42\n"
|
||||
"100/0 : 100/0\n"
|
||||
);
|
||||
|
||||
std::string fn_au (tl::testsrc () + "/testdata/gds/alm_au2.gds");
|
||||
db::compare_layouts (_this, layout, fn_au, db::WriteGDS2, 1);
|
||||
}
|
||||
|
||||
TEST(4_CollectModeRename)
|
||||
{
|
||||
db::Manager m (false);
|
||||
|
||||
@@ -508,12 +508,7 @@ struct LNameJoinOp1
|
||||
{
|
||||
void operator() (std::string &a, const std::string &b)
|
||||
{
|
||||
if (a != b) {
|
||||
if (! a.empty ()) {
|
||||
a += ";";
|
||||
}
|
||||
a += b;
|
||||
}
|
||||
join_layer_names (a, b);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -987,19 +982,6 @@ OASISReader::do_read (db::Layout &layout)
|
||||
LNameJoinOp2 op2;
|
||||
layer_names ().add (l1, l2 + 1, dt_map, op2);
|
||||
|
||||
// rename layers created before if required
|
||||
for (std::set<unsigned int>::const_iterator i = layers_created ().begin (); i != layers_created ().end (); ++i) {
|
||||
const db::LayerProperties &lp = layout.get_properties (*i);
|
||||
if (lp.layer >= l1 && lp.layer <= l2 && lp.datatype >= dt1 && lp.datatype <= dt2 && lp.name != name) {
|
||||
// need to rename: add a new madding to m_layer_map and adjust the layout's layer properties
|
||||
db::LayerProperties lpp = lp;
|
||||
LNameJoinOp1 nj;
|
||||
nj (lpp.name, name);
|
||||
layout.set_properties (*i, lpp);
|
||||
layer_map ().map (LDPair (lp.layer, lp.datatype), *i, lpp);
|
||||
}
|
||||
}
|
||||
|
||||
reset_modal_variables ();
|
||||
|
||||
// ignore properties attached to this name item
|
||||
|
||||
Reference in New Issue
Block a user