mirror of https://github.com/KLayout/klayout.git
Use fuzzy compare for RDB#apply
This commit is contained in:
parent
daa406d518
commit
9619081f84
|
|
@ -174,6 +174,62 @@ template <> RDB_PUBLIC std::string Value<db::DText>::to_display_string () const
|
||||||
return to_string ();
|
return to_string ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// compare implementations
|
||||||
|
|
||||||
|
template <> RDB_PUBLIC bool Value<double>::compare (const ValueBase *o) const
|
||||||
|
{
|
||||||
|
const Value<double> *other = static_cast<const Value<double> *> (o);
|
||||||
|
return m_value < other->m_value - db::epsilon;
|
||||||
|
}
|
||||||
|
|
||||||
|
template <> RDB_PUBLIC bool Value<int>::compare (const ValueBase *o) const
|
||||||
|
{
|
||||||
|
const Value<int> *other = static_cast<const Value<int> *> (o);
|
||||||
|
return m_value < other->m_value;
|
||||||
|
}
|
||||||
|
|
||||||
|
template <> RDB_PUBLIC bool Value<std::string>::compare (const ValueBase *o) const
|
||||||
|
{
|
||||||
|
const Value<std::string> *other = static_cast<const Value<std::string> *> (o);
|
||||||
|
return m_value < other->m_value;
|
||||||
|
}
|
||||||
|
|
||||||
|
template <> RDB_PUBLIC bool Value<db::DPolygon>::compare (const ValueBase *o) const
|
||||||
|
{
|
||||||
|
const Value<db::DPolygon> *other = static_cast<const Value<db::DPolygon> *> (o);
|
||||||
|
return m_value.less (other->m_value);
|
||||||
|
}
|
||||||
|
|
||||||
|
template <> RDB_PUBLIC bool Value<db::DEdge>::compare (const ValueBase *o) const
|
||||||
|
{
|
||||||
|
const Value<db::DEdge> *other = static_cast<const Value<db::DEdge> *> (o);
|
||||||
|
return m_value.less (other->m_value);
|
||||||
|
}
|
||||||
|
|
||||||
|
template <> RDB_PUBLIC bool Value<db::DEdgePair>::compare (const ValueBase *o) const
|
||||||
|
{
|
||||||
|
const Value<db::DEdgePair> *other = static_cast<const Value<db::DEdgePair> *> (o);
|
||||||
|
return m_value.less (other->m_value);
|
||||||
|
}
|
||||||
|
|
||||||
|
template <> RDB_PUBLIC bool Value<db::DBox>::compare (const ValueBase *o) const
|
||||||
|
{
|
||||||
|
const Value<db::DBox> *other = static_cast<const Value<db::DBox> *> (o);
|
||||||
|
return m_value.less (other->m_value);
|
||||||
|
}
|
||||||
|
|
||||||
|
template <> RDB_PUBLIC bool Value<db::DPath>::compare (const ValueBase *o) const
|
||||||
|
{
|
||||||
|
const Value<db::DPath> *other = static_cast<const Value<db::DPath> *> (o);
|
||||||
|
return m_value.less (other->m_value);
|
||||||
|
}
|
||||||
|
|
||||||
|
template <> RDB_PUBLIC bool Value<db::DText>::compare (const ValueBase *o) const
|
||||||
|
{
|
||||||
|
const Value<db::DText> *other = static_cast<const Value<db::DText> *> (o);
|
||||||
|
return m_value.less (other->m_value);
|
||||||
|
}
|
||||||
|
|
||||||
// is_shape implementations
|
// is_shape implementations
|
||||||
|
|
||||||
template <> RDB_PUBLIC bool Value<double>::is_shape () const
|
template <> RDB_PUBLIC bool Value<double>::is_shape () const
|
||||||
|
|
@ -881,14 +937,14 @@ Tags::tag (const std::string &name, bool user_tag)
|
||||||
const Tag &
|
const Tag &
|
||||||
Tags::tag (id_type id) const
|
Tags::tag (id_type id) const
|
||||||
{
|
{
|
||||||
tl_assert (id - 1 < m_tags.size () && id > 0);
|
tl_assert (id < m_tags.size () + 1 && id > 0);
|
||||||
return m_tags [id - 1];
|
return m_tags [id - 1];
|
||||||
}
|
}
|
||||||
|
|
||||||
Tag &
|
Tag &
|
||||||
Tags::tag (id_type id)
|
Tags::tag (id_type id)
|
||||||
{
|
{
|
||||||
tl_assert (id - 1 < m_tags.size () && id > 0);
|
tl_assert (id < m_tags.size () + 1 && id > 0);
|
||||||
return m_tags [id - 1];
|
return m_tags [id - 1];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1830,7 +1886,7 @@ Database::apply (const rdb::Database &other)
|
||||||
}
|
}
|
||||||
|
|
||||||
for (auto c = other.categories ().begin (); c != other.categories ().end (); ++c) {
|
for (auto c = other.categories ().begin (); c != other.categories ().end (); ++c) {
|
||||||
const rdb::Category *this_cat = category_by_name (c->name ());
|
const rdb::Category *this_cat = category_by_name (c->path ());
|
||||||
if (this_cat) {
|
if (this_cat) {
|
||||||
cat2cat.insert (std::make_pair (this_cat->id (), c->id ()));
|
cat2cat.insert (std::make_pair (this_cat->id (), c->id ()));
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -506,10 +506,7 @@ public:
|
||||||
return type_index_of<C> ();
|
return type_index_of<C> ();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool compare (const ValueBase *other) const
|
bool compare (const ValueBase *other) const;
|
||||||
{
|
|
||||||
return m_value < static_cast<const Value<C> *> (other)->m_value;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool is_shape () const;
|
bool is_shape () const;
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue