mirror of https://github.com/KLayout/klayout.git
Fixed #39 (Action cannot be reassigned)
This commit is contained in:
parent
ad741d0eb7
commit
21e42788e6
|
|
@ -60,10 +60,18 @@ A::A (const A &a)
|
||||||
: gsi::ObjectBase (a)
|
: gsi::ObjectBase (a)
|
||||||
{
|
{
|
||||||
++a_count;
|
++a_count;
|
||||||
e = a.e;
|
operator= (a);
|
||||||
m_d = a.m_d;
|
}
|
||||||
n = a.n;
|
|
||||||
f = a.f;
|
A &A::operator= (const A &a)
|
||||||
|
{
|
||||||
|
if (this != &a) {
|
||||||
|
e = a.e;
|
||||||
|
m_d = a.m_d;
|
||||||
|
n = a.n;
|
||||||
|
f = a.f;
|
||||||
|
}
|
||||||
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
int A::a0 ()
|
int A::a0 ()
|
||||||
|
|
|
||||||
|
|
@ -81,6 +81,11 @@ struct A
|
||||||
*/
|
*/
|
||||||
~A ();
|
~A ();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Assignment
|
||||||
|
*/
|
||||||
|
A &operator= (const A &a);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief A static method
|
* @brief A static method
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -764,7 +764,7 @@ object_assign (PyObject *self, PyObject *args)
|
||||||
tl_assert (cls_decl_self != 0);
|
tl_assert (cls_decl_self != 0);
|
||||||
|
|
||||||
PyObject *src = NULL;
|
PyObject *src = NULL;
|
||||||
if (! PyArg_ParseTuple (args, "o", &src)) {
|
if (! PyArg_ParseTuple (args, "O", &src)) {
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -778,7 +778,7 @@ object_assign (PyObject *self, PyObject *args)
|
||||||
throw tl::Exception (tl::to_string (QObject::tr ("No assignment provided for class '%s'")), cls_decl_self->name ());
|
throw tl::Exception (tl::to_string (QObject::tr ("No assignment provided for class '%s'")), cls_decl_self->name ());
|
||||||
}
|
}
|
||||||
|
|
||||||
cls_decl_self->assign (((PYAObjectBase *) self)->obj (), ((PYAObjectBase *) args)->obj ());
|
cls_decl_self->assign (((PYAObjectBase *) self)->obj (), ((PYAObjectBase *) src)->obj ());
|
||||||
|
|
||||||
Py_INCREF (self);
|
Py_INCREF (self);
|
||||||
return self;
|
return self;
|
||||||
|
|
|
||||||
|
|
@ -118,6 +118,11 @@ class BasicTest(unittest.TestCase):
|
||||||
a = pya.A.new_a(100)
|
a = pya.A.new_a(100)
|
||||||
self.assertEqual( pya.A.a0(), ac0 + 1 )
|
self.assertEqual( pya.A.a0(), ac0 + 1 )
|
||||||
|
|
||||||
|
a = pya.A()
|
||||||
|
self.assertEqual(a.a1(), 17)
|
||||||
|
a.assign(pya.A(110))
|
||||||
|
self.assertEqual(a.a1(), 110)
|
||||||
|
|
||||||
a = None
|
a = None
|
||||||
self.assertEqual( pya.A.a0(), ac0 )
|
self.assertEqual( pya.A.a0(), ac0 )
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,10 @@
|
||||||
# extend A
|
# extend A
|
||||||
class RBA::A
|
class RBA::A
|
||||||
|
|
||||||
def initialize
|
alias_method :org_initialize, :initialize
|
||||||
|
|
||||||
|
def initialize(*args)
|
||||||
|
org_initialize(*args)
|
||||||
@offset = nil
|
@offset = nil
|
||||||
end
|
end
|
||||||
def s( o )
|
def s( o )
|
||||||
|
|
@ -90,6 +93,11 @@ class Basic_TestClass < TestBase
|
||||||
a = RBA::A.new_a(100)
|
a = RBA::A.new_a(100)
|
||||||
assert_equal( RBA::A::a0, ac0 + 1 )
|
assert_equal( RBA::A::a0, ac0 + 1 )
|
||||||
|
|
||||||
|
a = RBA::A.new
|
||||||
|
assert_equal(a.a1, 17)
|
||||||
|
a.assign(RBA::A.new(110))
|
||||||
|
assert_equal(a.a1, 110)
|
||||||
|
|
||||||
a = nil
|
a = nil
|
||||||
GC.start
|
GC.start
|
||||||
assert_equal( RBA::A::a0, ac0 )
|
assert_equal( RBA::A::a0, ac0 )
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue