[Moscow.pm] Вызов родительского деструктора из PerlXS

Nikita Aznauryan nikita-aznaourian на yandex.ru
Чт Июл 15 06:13:48 PDT 2010


Есть класс, который создается в XS:

class A {
..
};

MODULE = mod::XS     PACKAGE = mod::XS::split

A* A::new()
CODE:
   RETVAL = new A();
OUTPUT
   RETVAL

void A::DESTROY()
CODE:
   delete THIS;

И этот класс наследуется от пакета pac2

package mod::XS::split
use base qw(pac2);


В перле есть пакет, в котором кроме всего есть деструктор

package pac;

sub DESTROY {
  ...
}

И пакет, который от него наследуется:

package pac2;
use base qw(pac);

sub new {
return mod::XS::split->new();
}

При удалении этого объекта вызывается деструктор из XSUB, но не вызывается деструктор класса pac (то есть родительского).

Вопрос , как из XS-ного деструктора вызывать родительский деструктор. 

Почему-то функция - 

call_method("SUPER::DESTROY", G_DISCARD); _ не работает. Говорит , Can't call method...


Подробная информация о списке рассылки Moscow-pm