home *** CD-ROM | disk | FTP | other *** search
- # $Id: WOPerl.PPM,v 1.2 1996/08/06 07:37:36 pedja Exp $ -*-perl-*-
- # Copyright 1995-6 TipTop Software
-
- # $Id: ObjPerl.PPM,v 1.2 1996/08/06 06:37:06 pedja Exp $ -*-perl-*-
- # Copyright 1995-6 TipTop Software
- #############################################################################
- package ObjPerl;
-
- require 5.001;
-
- require Exporter;
- require DynaLoader;
- require AutoLoader;
-
- $VERSION = "3.1";
-
- $VERSION=$VERSION;
-
- @ISA = qw(Exporter DynaLoader AutoLoader);
-
- @EXPORT = qw(
- msg_send msg_send_super class_lookup class
- nil object_is_bad
- ivar_get ivar_set ivar
- pl obj
-
- );
-
- @EXPORT_OK = qw($interp %CONTROL);
-
- sub EVAL { my @r=eval $_[0]; if($@) { my($err)=$@; $@=""; die $err; }; @r; };
- sub SOURCE { my @r=do $_[0]; if($@) { my($err)=$@; $@=""; die $err; }; @r; };
-
- ############################################################################
- package ObjPerl::Object;
-
- %OVERLOAD = (
- 'fallback' => TRUE,
- '""' => \&Id_2_String,
- '0+' => \&Id_2_Number,
- 'bool' => \&Id_2_Boolean,
- '==' => \&Id_Is_Same,
- '!=' => \&Id_Is_Not_Same,
- 'eq' => \&Id_Is_Equal,
- 'ne' => \&Id_Is_Not_Equal,
-
- # Incr/Decr kludge (Perl 5.001, 5.002):
- '++' => sub { $_[0]=&Id_2_Number($_[0])+1; },
- # '++' => sub { $_[0]=ObjPerl::obj(&Id_2_Number($_[0])+1); },
- '--' => sub { $_[0]=&Id_2_Number($_[0])-1; },
- # '--' => sub { $_[0]=ObjPerl::obj(&Id_2_Number($_[0])-1); },
- '=' => sub { return $_[0]; },
-
- # Perl 5.001 neg kludge:
- 'neg' => sub { return -&Id_2_Number($_[0]); },
-
- );
-
- sub DESCR {
- my($self)=shift;
- my($bad)=ObjPerl::object_is_bad($self);
- return "<BAD OBJECT: $bad>" if $bad;
- return "nil" if ObjPerl::nil($self);
- if($self==$self->class() && $self->respondsTo_('name')) {
- return $self->name if $self==ObjPerl::class_lookup($self->name); # class
- return "#" . $self->name; # meta-class
- };
- if($self->respondsTo_('description')) {
- my $pool=class('NSAutoreleasePool')->alloc->init;
- my $r=$self->description->cString;
- $pool->release;
- return $r;
- }
- return sprintf("<%s:0x%s>",$self->name,$$self);
- }
-
- # EOF
-
- #############################################################################
- package WOPerl;
- require Exporter;
- require DynaLoader;
-
- import ObjPerl qw(:DEFAULT $interp %CONTROL);
-
- @ISA = qw(Exporter DynaLoader);
-
- $VERSION = "1.0" ;
- @EXPORT = @ObjPerl::EXPORT; push @EXPORT, qw($WOApp);
- @EXPORT_OK = @ObjPerl::EXPORT_OK;
-
- bootstrap WOPerl $VERSION;
-
- 1;
- __END__
-