# New Ticket Created by "Olivier Mengué"
# Please include the string: [perl #55872]
# in the subject line of all future correspondence about this issue.
# <URL: http://rt.perl.org/rt3/Ticket/Display.html?id=55872 >
Improvments in Complex.pir:
- class registration (not sure about it: I'm still a newbie)
- .perl() method
Olivier Mengué (dolmen on CPAN/IRC)
Index: src/classes/Complex.pir
===================================================================
--- src/classes/Complex.pir (révision 28404)
+++ src/classes/Complex.pir (copie de travail)
@@ -4,23 +4,71 @@
Complex - Perl 6 complex numbers
+
+
=head1 SUBROUTINES
=over 4
-=item infix:+
+=item onload
+Implementation is a bit different from other basic objects (Int...) because
+'Complex' is also the name of the builtin Parrot PMC.
+
=cut
+.namespace [ 'Complex' ]
+
+.sub 'onload' :anon :init :load
+ .local pmc p6meta, complexproto
+ p6meta = get_hll_global ['Perl6Object'], '$!P6META'
+ #If we use this, "2i.WHAT" gives "Perl6Complex"
+ #complexproto = p6meta.'new_class'('Perl6Complex', 'parent'=>'Complex Any')
+ complexproto = get_hll_global ['Complex'], '$!P6META'
+ p6meta.'register'('Complex', 'parent'=>complexproto, 'protoobject'=>complexproto)
+.end
+
+
+# TODO ACCEPTS()
+
+
+=item perl()
+
+Returns a Perl representation of the Complex.
+
+=cut
+
+.sub 'perl' :method
+ $S0 = self
+ .return ($S0)
+.end
+
+
+=back
+
+=head1 OPERATORS
+
+=over 4
+
+=item postfix:i
+
+=cut
+
.namespace []
.sub 'postfix:i' :multi(_)
.param num a
+ .local pmc proto
$P0 = new 'Complex'
$P0[1] = a
.return ($P0)
.end
+
+=item infix:+
+
+=cut
+
.sub 'infix:+' :multi('Complex', _)
.param pmc a
.param pmc b
@@ -37,6 +85,11 @@
.return ($P0)
.end
+
+=item infix:-
+
+=cut
+
.sub 'infix:-' :multi('Complex', _)
.param pmc a
.param pmc b
@@ -53,6 +106,11 @@
.return ($P0)
.end
+
+=item infix:*
+
+=cut
+
.sub 'infix:*' :multi('Complex', _)
.param pmc a
.param pmc b
@@ -69,6 +127,11 @@
.return ($P0)
.end
+
+=item infix:/
+
+=cut
+
.sub 'infix:/' :multi('Complex', _)
.param pmc a
.param pmc b