| # file: runme.pl |
| |
| # This file illustrates the cross language polymorphism using directors. |
| |
| use example; |
| |
| |
| { |
| package PlCallback; |
| use base 'example::Callback'; |
| sub run { |
| print "PlCallback->run()\n"; |
| } |
| } |
| |
| # Create an Caller instance |
| |
| $caller = example::Caller->new(); |
| |
| # Add a simple C++ callback (caller owns the callback, so |
| # we disown it first by clearing the .thisown flag). |
| |
| print "Adding and calling a normal C++ callback\n"; |
| print "----------------------------------------\n"; |
| |
| $callback = example::Callback->new(); |
| $callback->DISOWN(); |
| $caller->setCallback($callback); |
| $caller->call(); |
| $caller->delCallback(); |
| |
| print "\n"; |
| print "Adding and calling a Perl callback\n"; |
| print "----------------------------------\n"; |
| |
| # Add a Perl callback (caller owns the callback, so we |
| # disown it first by calling DISOWN). |
| |
| $callback = PlCallback->new(); |
| $callback->DISOWN(); |
| $caller->setCallback($callback); |
| $caller->call(); |
| $caller->delCallback(); |
| |
| # All done. |
| |
| print "\n"; |
| print "perl exit\n"; |