Hi Assaf.

Maybe you should try sending a tied array, so that
for my $rec (@array) {...}
will work. (hopefully Perl won't pre-fatch all the items...)

See the documentation for the 'tie' command to see which methods you 
need to implement, and Tie::Array for some shortcuts.

Shmuel.


Assaf Gordon wrote:
> Hello,
> 
> I've have an XS module that exports a C++ class.
> Following example EX7 in  Dean Roehrich's CookBookA [1], my class/package 
> compiles and works fine.
> 
> Now,
> In the XS/CPP class, I use an STL container to store some information.
> What would be the most perl-like way to allow the Perl programmer to iterate 
> over all the elements in my CPP class ?
> 
> For the sake of this argument,
> Let's assume the container is a simple "std::list<int>" - how do expose this 
> to the Perl programmer ?
> I couldn't find a perl typemap that would go with 
> std::list<int>::const_itearator, so exposing begin()/end() doesn't work 
> (perhaps I missed something, online examples are scarce with XS+CPP+STL).
> 
> Another complication:
> I can't return an perl list/array containing all the elements (there are too 
> many elements) - I need to iterate them in a perl loop.
> 
> I'd imagine something like:
> ===
>   my $obj = MyClass->new();
>   my $iter = $obj->begin();
>   while ( my $value = $obj->get_next($iter) ) {
>       # Do something with $value
>   }
> ===
> 
> I realize it's not a very perlish style, so any ideas and suggestion would be 
> appropriated.
> 
> 
> Thanks,
>   -gordon
> 
> 
> 
> [1]
> http://search.cpan.org/~dmr/CookBookA-19960430/
> _______________________________________________
> Perl mailing list
> Perl@perl.org.il
> http://mail.perl.org.il/mailman/listinfo/perl
> 

_______________________________________________
Perl mailing list
Perl@perl.org.il
http://mail.perl.org.il/mailman/listinfo/perl

Reply via email to