2010-11-22

sab123: (Default)
2010-11-22 10:26 pm

юннатское

А вот такой вопрос, кто-нибудь тут Перл и Си скрещивал? Интересует вопрос о том, чтобы сделать на Си реализацию перловых объектов. Чего-то я маны читал, так и не нашел. Как минимум, чтоб конструктор мог вернуть некий токен (который содержит указатель), который нельзя было бы случайно испортить, и который потом можно было бы передавать другим методам. Пока что из манов вырисовывается перловая обертка над обычными сишными функциями, типа:

package  COjbect;
use cobject;

sub new # (class, args...)
{
	my $class = shift;
	my $self = \&cobject_new(@_);
	bless($self, $class);
	return $self;
};

sub DESTROY  # (self)
{
	my $self = shift;
	&cobject_destroy($$self);
};

sub method # (self, args...)
{
	my $self = shift;
	&cobject_method($$self, @_);
}


Для пущей надежности можно еще ссылку упрятать в closure, которое и возвращать в качестве self, но при дальнейшем размышлении оно выглядит как-то избыточным.

Но может как-то более напрямую можно сделать?