[Note: This a plain text repost. The original came across as HTML...] > [25]RFC 73: All Perl core functions should return objects [...] > I'm thinking that the solution is better abstract type support > for data values that happen to be represented internally by C > structs. We get bogged down when we try to translate a C > struct such a struct tm into an actual hash value. On the > other hand, it's rather efficient to translate a struct tm > to a struct tm, since it's a no-op. > > We can make such a struct look like a Perl object, and access it > efficiently with attribute methods as if it were a ``real'' > object. And the typology will (hopefully) mostly only impose an > abstract overhead. Neil Watkiss <[EMAIL PROTECTED]> and Brian Ingerson <[EMAIL PROTECTED]> have been roughing out ideas for a Inline::Struct module which sounds similar if not related to the this. It's primary objective is simplifying passing structured data between Perl and C/C++. It also makes a struct look like a Perl object. There is an unreleased module implementing a C++ interface which works quite well. A C version is planned as well. Others may follow. Right now, it works like this: use Inline CPP => <<'END', STRUCTS => ['Foo']; struct Foo { int inum; double dnum; char *str; }; typedef struct Foo Foo; END my $o = new Inline::Struct::Foo; $o->inum(10); $o->dnum(3.1415); $o->str('Wazzup?'); my %fields = %{$o->_HASH}; my @keys = @{$o->_KEYS}; my @fields = @{$o->_ARRAY}; package Inline::Struct::Foo; sub Print { my $o = shift; print "Foo {\n", (join "\n", map { $o->$_() } $o->_KEYS), "}\n"; } __END__ Anything that is typemap'd can be used. I'm hoping Inline::Struct will evolve into the compiled complement to Class::Struct. If Perl 6 could do this without requiring a compiler on hand, it would be the perfect replacement/evolution of Class::Struct. Garrett