# New Ticket Created by  Vasily Chekalkin 
# Please include the string:  [perl #56630]
# in the subject line of all future correspondence about this issue. 
# <URL: http://rt.perl.org/rt3/Ticket/Display.html?id=56630 >


Hello.

Current Junction.pir contains a lot of code for creating operator 
overrides. Proposed patch replaces all this code with simple macro 
substitutions.

-- 
Bacek.
commit c7406e1ef7ce485200718ac880c880373f29d016
Author: Vasily Chekalkin <[EMAIL PROTECTED](none)>
Date:   Sun Jul 6 11:31:27 2008 +1000

    Use macros for generate overrides

diff --git a/languages/perl6/src/classes/Junction.pir b/languages/perl6/src/classes/Junction.pir
index 5efcd6f..96bb31d 100644
--- a/languages/perl6/src/classes/Junction.pir
+++ b/languages/perl6/src/classes/Junction.pir
@@ -412,1017 +412,129 @@ call_loop_end:
 .end
 
 
-=item C<postfix:++(...)>
+=item C<MAKE_UNARY(OP)>
 
-Override postfix increment for junctions.
+Macro for creating override unary ops for junctions.
 
 =cut
 
-.sub 'postfix:++' :multi('Junction')
+.macro MAKE_UNARY(OP)
+.sub .OP :multi('Junction')
     .param pmc j
-    $P0 = find_global 'postfix:++'
-    .return unary_junction_helper($P0, j)
+    $P0 = find_global .OP
+    .return '!unary_junction_helper'($P0, j)
 .end
+.endm
 
+.MAKE_UNARY('postfix:++')
+.MAKE_UNARY('postfix:--')
+.MAKE_UNARY('prefix:++')
+.MAKE_UNARY('prefix:--')
+.MAKE_UNARY('prefix:!')
+.MAKE_UNARY('prefix:+')
+.MAKE_UNARY('prefix:-')
+.MAKE_UNARY('prefix:~')
+.MAKE_UNARY('prefix:?')
+.MAKE_UNARY('prefix:=')
+.MAKE_UNARY('prefix:~^')
+.MAKE_UNARY('prefix:+^')
+.MAKE_UNARY('prefix:?^')
 
-=item C<postfix:--(...)>
 
-Override postfix decrement for junctions.
+=item C<MAKE_BINARY(OP)>
 
-=cut
-
-.sub 'postfix:--' :multi('Junction')
-    .param pmc j
-    $P0 = find_global 'postfix:--'
-    .return unary_junction_helper($P0, j)
-.end
-
-
-=item C<prefix:++(...)>
-
-Override prefix increment for junctions.
-
-=cut
-
-.sub 'prefix:++' :multi('Junction')
-    .param pmc j
-    $P0 = find_global 'prefix:++'
-    .return unary_junction_helper($P0, j)
-.end
-
-
-=item C<prefix:--(...)>
-
-Override prefix decrement for junctions.
-
-=cut
-
-.sub 'prefix:--' :multi('Junction')
-    .param pmc j
-    $P0 = find_global 'prefix:--'
-    .return unary_junction_helper($P0, j)
-.end
-
-
-=item C<prefix:!(...)>
-
-Override not for junctions.
-
-=cut
-
-.sub 'prefix:!' :multi('Junction')
-    .param pmc j
-    $P0 = find_global 'prefix:!'
-    .return unary_junction_helper($P0, j)
-.end
-
-
-=item C<prefix:+(...)>
-
-Override numification for junctions.
-
-=cut
-
-.sub 'prefix:+' :multi('Junction')
-    .param pmc j
-    $P0 = find_global 'prefix:+'
-    .return unary_junction_helper($P0, j)
-.end
-
-
-=item C<prefix:-(...)>
-
-Override negation for junctions.
-
-=cut
-
-.sub 'prefix:-' :multi('Junction')
-    .param pmc j
-    $P0 = find_global 'prefix:-'
-    .return unary_junction_helper($P0, j)
-.end
-
-
-=item C<prefix:~(...)>
-
-Override stringification for junctions.
-
-=cut
-
-.sub 'prefix:~' :multi('Junction')
-    .param pmc j
-    $P0 = find_global 'prefix:~'
-    .return unary_junction_helper($P0, j)
-.end
-
-
-=item C<prefix:?(...)>
-
-Override boolification for junctions.
-
-=cut
-
-.sub 'prefix:?' :multi('Junction')
-    .param pmc j
-    $P0 = find_global 'prefix:?'
-    .return unary_junction_helper($P0, j)
-.end
-
-
-=item C<prefix:=(...)>
-
-Override iteration for junctions.
+Macro for creating override binary ops for junctions.
 
 =cut
 
-.sub 'prefix:=' :multi('Junction')
-    .param pmc j
-    $P0 = find_global 'prefix:='
-    .return unary_junction_helper($P0, j)
-.end
-
-
-=item C<prefix:~^(...)>
-
-Override string bitwise negation for junctions.
-
-=cut
-
-.sub 'prefix:~^' :multi('Junction')
-    .param pmc j
-    $P0 = find_global 'prefix:~^'
-    .return unary_junction_helper($P0, j)
-.end
-
-
-=item C<prefix:+^(...)>
-
-Override numeric bitwise negation for junctions.
-
-=cut
-
-.sub 'prefix:+^' :multi('Junction')
-    .param pmc j
-    $P0 = find_global 'prefix:+^'
-    .return unary_junction_helper($P0, j)
-.end
-
-
-=item C<prefix:?^(...)>
-
-Override boolean bitwise negation for junctions.
-
-=cut
-
-.sub 'prefix:?^' :multi('Junction')
-    .param pmc j
-    $P0 = find_global 'prefix:?^'
-    .return unary_junction_helper($P0, j)
-.end
-
-
-=item C<infix:**(...)>
-
-Override exponentiation for junctions.
-
-=cut
-
-.sub 'infix:**' :multi('Junction','Junction')
+.macro MAKE_BINARY(OP)
+.sub .OP :multi('Junction','Junction')
     .param pmc j1
     .param pmc j2
-    $P0 = find_global 'infix:**'
-    .return infix_junction_helper($P0, j1, j2)
+    $P0 = find_global .OP
+    .return '!binary_junction_helper'($P0, j1, j2)
 .end
 
-.sub 'infix:**' :multi('Junction',_)
+.sub .OP :multi('Junction',_)
     .param pmc j
     .param pmc x
-    $P0 = find_global 'infix:**'
-    .return infix_junction_helper($P0, j, x)
+    $P0 = find_global .OP
+    .return '!binary_junction_helper'($P0, j, x)
 .end
 
-.sub 'infix:**' :multi(_,'Junction')
+.sub .OP :multi(_,'Junction')
     .param pmc x
     .param pmc j
-    $P0 = find_global 'infix:**'
-    .return infix_junction_helper($P0, j, x, 1)
+    $P0 = find_global .OP
+    .return '!binary_junction_helper'($P0, j, x, 1)
 .end
+.endm
 
+.MAKE_BINARY('infix:**')
+.MAKE_BINARY('infix:%')
+.MAKE_BINARY('infix:/')
+.MAKE_BINARY('infix:*')
+.MAKE_BINARY('infix:+&')
+.MAKE_BINARY('infix:+<')
+.MAKE_BINARY('infix:+>')
+.MAKE_BINARY('infix:div')
+.MAKE_BINARY('infix:mod')
+.MAKE_BINARY('infix:~&')
+.MAKE_BINARY('infix:~<')
+.MAKE_BINARY('infix:~>')
+.MAKE_BINARY('infix:?&')
+.MAKE_BINARY('infix:+')
+.MAKE_BINARY('infix:-')
+.MAKE_BINARY('infix:x')
+.MAKE_BINARY('infix:xx')
+.MAKE_BINARY('infix:~')
 
-=item C<infix:%(...)>
-
-Override modulo for junctions.
-
-=cut
-
-.sub 'infix:%' :multi('Junction','Junction')
-    .param pmc j1
-    .param pmc j2
-    $P0 = find_global 'infix:%'
-    .return infix_junction_helper($P0, j1, j2)
-.end
 
-.sub 'infix:%' :multi('Junction',_)
-    .param pmc j
-    .param pmc x
-    $P0 = find_global 'infix:%'
-    .return infix_junction_helper($P0, j, x)
-.end
+=item C<MAKE_COMPARRISION(OP)>
 
-.sub 'infix:%' :multi(_,'Junction')
-    .param pmc x
-    .param pmc j
-    $P0 = find_global 'infix:%'
-    .return infix_junction_helper($P0, j, x, 1)
-.end
-
-
-=item C<infix:/(...)>
-
-Override division for junctions.
+Macro for creating comparrision override for junctions.
 
 =cut
 
-.sub 'infix:/' :multi('Junction','Junction')
+.macro MAKE_COMPARRISION(OP)
+.sub .OP :multi('Junction','Junction')
     .param pmc j1
     .param pmc j2
-    $P0 = find_global 'infix:/'
-    .return infix_junction_helper($P0, j1, j2)
+    $P0 = find_global .OP
+    .return '!comparrision_junction_helper'($P0, j1, j2, 0)
 .end
 
-.sub 'infix:/' :multi('Junction',_)
+.sub .OP :multi('Junction',_)
     .param pmc j
     .param pmc x
-    $P0 = find_global 'infix:/'
-    .return infix_junction_helper($P0, j, x)
+    $P0 = find_global .OP
+    .return '!comparrision_junction_helper'($P0, j, x, 0)
 .end
 
-.sub 'infix:/' :multi(_,'Junction')
+.sub .OP :multi(_,'Junction')
     .param pmc x
     .param pmc j
-    $P0 = find_global 'infix:/'
-    .return infix_junction_helper($P0, j, x, 1)
-.end
-
-
-=item C<infix:*(...)>
-
-Override multiply for junctions.
-
-=cut
-
-.sub 'infix:*' :multi('Junction','Junction')
-    .param pmc j1
-    .param pmc j2
-    $P0 = find_global 'infix:*'
-    .return infix_junction_helper($P0, j1, j2)
-.end
-
-.sub 'infix:*' :multi('Junction',_)
-    .param pmc j
-    .param pmc x
-    $P0 = find_global 'infix:*'
-    .return infix_junction_helper($P0, j, x)
+    $P0 = find_global .OP
+    .return '!comparrision_junction_helper'($P0, j, x, 1)
 .end
+.endm
 
-.sub 'infix:*' :multi(_,'Junction')
-    .param pmc x
-    .param pmc j
-    $P0 = find_global 'infix:*'
-    .return infix_junction_helper($P0, j, x, 1)
-.end
-
-
-=item C<infix:+&(...)>
-
-Override numeric bitwise and for junctions.
-
-=cut
-
-.sub 'infix:+&' :multi('Junction','Junction')
-    .param pmc j1
-    .param pmc j2
-    $P0 = find_global 'infix:+&'
-    .return infix_junction_helper($P0, j1, j2)
-.end
-
-.sub 'infix:+&' :multi('Junction',_)
-    .param pmc j
-    .param pmc x
-    $P0 = find_global 'infix:+&'
-    .return infix_junction_helper($P0, j, x)
-.end
-
-.sub 'infix:+&' :multi(_,'Junction')
-    .param pmc x
-    .param pmc j
-    $P0 = find_global 'infix:+&'
-    .return infix_junction_helper($P0, j, x, 1)
-.end
-
-
-=item C<infix:+<(...)>
-
-Override numeric left shift for junctions.
-
-=cut
-
-.sub 'infix:+<' :multi('Junction','Junction')
-    .param pmc j1
-    .param pmc j2
-    $P0 = find_global 'infix:+<'
-    .return infix_junction_helper($P0, j1, j2)
-.end
-
-.sub 'infix:+<' :multi('Junction',_)
-    .param pmc j
-    .param pmc x
-    $P0 = find_global 'infix:+<'
-    .return infix_junction_helper($P0, j, x)
-.end
-
-.sub 'infix:+<' :multi(_,'Junction')
-    .param pmc x
-    .param pmc j
-    $P0 = find_global 'infix:+<'
-    .return infix_junction_helper($P0, j, x, 1)
-.end
-
-
-=item C<infix:+>(...)>
-
-Override numeric right shift for junctions.
-
-=cut
-
-.sub 'infix:+>' :multi('Junction','Junction')
-    .param pmc j1
-    .param pmc j2
-    $P0 = find_global 'infix:+>'
-    .return infix_junction_helper($P0, j1, j2)
-.end
-
-.sub 'infix:+>' :multi('Junction',_)
-    .param pmc j
-    .param pmc x
-    $P0 = find_global 'infix:+>'
-    .return infix_junction_helper($P0, j, x)
-.end
-
-.sub 'infix:+>' :multi(_,'Junction')
-    .param pmc x
-    .param pmc j
-    $P0 = find_global 'infix:+>'
-    .return infix_junction_helper($P0, j, x, 1)
-.end
-
-
-=item C<infix:div(...)>
-
-Override div for junctions.
-
-=cut
-
-.sub 'infix:div' :multi('Junction','Junction')
-    .param pmc j1
-    .param pmc j2
-    $P0 = find_global 'infix:div'
-    .return infix_junction_helper($P0, j1, j2)
-.end
-
-.sub 'infix:div' :multi('Junction',_)
-    .param pmc j
-    .param pmc x
-    $P0 = find_global 'infix:div'
-    .return infix_junction_helper($P0, j, x)
-.end
-
-.sub 'infix:div' :multi(_,'Junction')
-    .param pmc x
-    .param pmc j
-    $P0 = find_global 'infix:div'
-    .return infix_junction_helper($P0, j, x, 1)
-.end
-
-
-=item C<infix:mod(...)>
-
-Override mod for junctions.
-
-=cut
-
-.sub 'infix:mod' :multi('Junction','Junction')
-    .param pmc j1
-    .param pmc j2
-    $P0 = find_global 'infix:mod'
-    .return infix_junction_helper($P0, j1, j2)
-.end
-
-.sub 'infix:mod' :multi('Junction',_)
-    .param pmc j
-    .param pmc x
-    $P0 = find_global 'infix:mod'
-    .return infix_junction_helper($P0, j, x)
-.end
-
-.sub 'infix:mod' :multi(_,'Junction')
-    .param pmc x
-    .param pmc j
-    $P0 = find_global 'infix:mod'
-    .return infix_junction_helper($P0, j, x, 1)
-.end
-
-
-=item C<infix:~&(...)>
-
-Override buffer bitwise and for junctions.
-
-=cut
-
-.sub 'infix:~&' :multi('Junction','Junction')
-    .param pmc j1
-    .param pmc j2
-    $P0 = find_global 'infix:~&'
-    .return infix_junction_helper($P0, j1, j2)
-.end
-
-.sub 'infix:~&' :multi('Junction',_)
-    .param pmc j
-    .param pmc x
-    $P0 = find_global 'infix:~&'
-    .return infix_junction_helper($P0, j, x)
-.end
-
-.sub 'infix:~&' :multi(_,'Junction')
-    .param pmc x
-    .param pmc j
-    $P0 = find_global 'infix:~&'
-    .return infix_junction_helper($P0, j, x, 1)
-.end
-
-
-=item C<infix:~<(...)>
-
-Override buffer bitwise left shift for junctions.
-
-=cut
-
-.sub 'infix:~<' :multi('Junction','Junction')
-    .param pmc j1
-    .param pmc j2
-    $P0 = find_global 'infix:~<'
-    .return infix_junction_helper($P0, j1, j2)
-.end
-
-.sub 'infix:~<' :multi('Junction',_)
-    .param pmc j
-    .param pmc x
-    $P0 = find_global 'infix:~<'
-    .return infix_junction_helper($P0, j, x)
-.end
-
-.sub 'infix:~<' :multi(_,'Junction')
-    .param pmc x
-    .param pmc j
-    $P0 = find_global 'infix:~<'
-    .return infix_junction_helper($P0, j, x, 1)
-.end
-
-
-=item C<infix:~>(...)>
-
-Override buffer bitwise right shift for junctions.
-
-=cut
-
-.sub 'infix:~>' :multi('Junction','Junction')
-    .param pmc j1
-    .param pmc j2
-    $P0 = find_global 'infix:~>'
-    .return infix_junction_helper($P0, j1, j2)
-.end
-
-.sub 'infix:~>' :multi('Junction',_)
-    .param pmc j
-    .param pmc x
-    $P0 = find_global 'infix:~>'
-    .return infix_junction_helper($P0, j, x)
-.end
-
-.sub 'infix:~>' :multi(_,'Junction')
-    .param pmc x
-    .param pmc j
-    $P0 = find_global 'infix:~>'
-    .return infix_junction_helper($P0, j, x, 1)
-.end
-
-
-=item C<infix:?&(...)>
-
-Override boolean bitwise and for junctions.
-
-=cut
-
-.sub 'infix:?&' :multi('Junction','Junction')
-    .param pmc j1
-    .param pmc j2
-    $P0 = find_global 'infix:?&'
-    .return infix_junction_helper($P0, j1, j2)
-.end
-
-.sub 'infix:?&' :multi('Junction',_)
-    .param pmc j
-    .param pmc x
-    $P0 = find_global 'infix:?&'
-    .return infix_junction_helper($P0, j, x)
-.end
-
-.sub 'infix:?&' :multi(_,'Junction')
-    .param pmc x
-    .param pmc j
-    $P0 = find_global 'infix:?&'
-    .return infix_junction_helper($P0, j, x, 1)
-.end
-
-
-=item C<infix:+(...)>
-
-Override addition for junctions.
-
-=cut
-
-.sub 'infix:+' :multi('Junction','Junction')
-    .param pmc j1
-    .param pmc j2
-    $P0 = find_global 'infix:+'
-    .return infix_junction_helper($P0, j1, j2)
-.end
-
-.sub 'infix:+' :multi('Junction',_)
-    .param pmc j
-    .param pmc x
-    $P0 = find_global 'infix:+'
-    .return infix_junction_helper($P0, j, x)
-.end
-
-.sub 'infix:+' :multi(_,'Junction')
-    .param pmc x
-    .param pmc j
-    $P0 = find_global 'infix:+'
-    .return infix_junction_helper($P0, j, x, 1)
-.end
-
-
-=item C<infix:-(...)>
-
-Override subtraction for junctions.
-
-=cut
-
-.sub 'infix:-' :multi('Junction','Junction')
-    .param pmc j1
-    .param pmc j2
-    $P0 = find_global 'infix:-'
-    .return infix_junction_helper($P0, j1, j2)
-.end
-
-.sub 'infix:-' :multi('Junction',_)
-    .param pmc j
-    .param pmc x
-    $P0 = find_global 'infix:-'
-    .return infix_junction_helper($P0, j, x)
-.end
-
-.sub 'infix:-' :multi(_,'Junction')
-    .param pmc x
-    .param pmc j
-    $P0 = find_global 'infix:-'
-    .return infix_junction_helper($P0, j, x, 1)
-.end
-
-
-=item C<infix:x(...)>
-
-Override repeat for junctions.
-
-=cut
-
-.sub 'infix:x' :multi('Junction','Junction')
-    .param pmc j1
-    .param pmc j2
-    $P0 = find_global 'infix:x'
-    .return infix_junction_helper($P0, j1, j2)
-.end
-
-.sub 'infix:x' :multi('Junction',_)
-    .param pmc j
-    .param pmc x
-    $P0 = find_global 'infix:x'
-    .return infix_junction_helper($P0, j, x)
-.end
-
-.sub 'infix:x' :multi(_,'Junction')
-    .param pmc x
-    .param pmc j
-    $P0 = find_global 'infix:x'
-    .return infix_junction_helper($P0, j, x, 1)
-.end
-
-
-=item C<infix:xx(...)>
-
-Override array repeat for junctions.
-
-=cut
-
-.sub 'infix:xx' :multi('Junction','Junction')
-    .param pmc j1
-    .param pmc j2
-    $P0 = find_global 'infix:xx'
-    .return infix_junction_helper($P0, j1, j2)
-.end
-
-.sub 'infix:xx' :multi('Junction',_)
-    .param pmc j
-    .param pmc x
-    $P0 = find_global 'infix:xx'
-    .return infix_junction_helper($P0, j, x)
-.end
-
-.sub 'infix:xx' :multi(_,'Junction')
-    .param pmc x
-    .param pmc j
-    $P0 = find_global 'infix:xx'
-    .return infix_junction_helper($P0, j, x, 1)
-.end
-
-
-=item C<infix:~(...)>
-
-Override concatenation for junctions.
-
-=cut
-
-.sub 'infix:~' :multi('Junction','Junction')
-    .param pmc j1
-    .param pmc j2
-    $P0 = find_global 'infix:~'
-    .return infix_junction_helper($P0, j1, j2)
-.end
-
-.sub 'infix:~' :multi('Junction',_)
-    .param pmc j
-    .param pmc x
-    $P0 = find_global 'infix:~'
-    .return infix_junction_helper($P0, j, x)
-.end
-
-.sub 'infix:~' :multi(_,'Junction')
-    .param pmc x
-    .param pmc j
-    $P0 = find_global 'infix:~'
-    .return infix_junction_helper($P0, j, x, 1)
-.end
-
-
-=item C<infix:==(...)>
-
-Override numerical equality for junctions.
-
-=cut
-
-.sub 'infix:==' :multi('Junction','Junction')
-    .param pmc j1
-    .param pmc j2
-    $P0 = find_global "infix:=="
-    .return junction_comparrison_helper($P0, j1, j2, 0)
-.end
-
-.sub 'infix:==' :multi('Junction',_)
-    .param pmc j
-    .param pmc x
-    $P0 = find_global "infix:=="
-    .return junction_comparrison_helper($P0, j, x, 0)
-.end
-
-.sub 'infix:==' :multi(_,'Junction')
-    .param pmc x
-    .param pmc j
-    $P0 = find_global "infix:=="
-    .return junction_comparrison_helper($P0, j, x, 1)
-.end
-
-
-=item C<infix:!=(...)>
-
-Override numerical inequality for junctions.
-
-=cut
-
-.sub 'infix:!=' :multi('Junction','Junction')
-    .param pmc j1
-    .param pmc j2
-    $P0 = find_global "infix:!="
-    .return junction_comparrison_helper($P0, j1, j2, 0)
-.end
-
-.sub 'infix:!=' :multi('Junction',_)
-    .param pmc j
-    .param pmc x
-    $P0 = find_global "infix:!="
-    .return junction_comparrison_helper($P0, j, x, 0)
-.end
-
-.sub 'infix:!=' :multi(_,'Junction')
-    .param pmc x
-    .param pmc j
-    $P0 = find_global "infix:!="
-    .return junction_comparrison_helper($P0, j, x, 1)
-.end
-
-
-=item C<infix:>(...)>
-
-Override numerical greater than for junctions.
-
-=cut
-
-.sub 'infix:>' :multi('Junction','Junction')
-    .param pmc j1
-    .param pmc j2
-    $P0 = find_global "infix:>"
-    .return junction_comparrison_helper($P0, j1, j2, 0)
-.end
-
-.sub 'infix:>' :multi('Junction',_)
-    .param pmc j
-    .param pmc x
-    $P0 = find_global "infix:>"
-    .return junction_comparrison_helper($P0, j, x, 0)
-.end
-
-.sub 'infix:>' :multi(_,'Junction')
-    .param pmc x
-    .param pmc j
-    $P0 = find_global "infix:>"
-    .return junction_comparrison_helper($P0, j, x, 1)
-.end
-
-
-=item C<infix:<(...)>
-
-Override numerical less than for junctions.
-
-=cut
-
-.sub 'infix:<' :multi('Junction','Junction')
-    .param pmc j1
-    .param pmc j2
-    $P0 = find_global "infix:<"
-    .return junction_comparrison_helper($P0, j1, j2, 0)
-.end
-
-.sub 'infix:<' :multi('Junction',_)
-    .param pmc j
-    .param pmc x
-    $P0 = find_global "infix:<"
-    .return junction_comparrison_helper($P0, j, x, 0)
-.end
-
-.sub 'infix:<' :multi(_,'Junction')
-    .param pmc x
-    .param pmc j
-    $P0 = find_global "infix:<"
-    .return junction_comparrison_helper($P0, j, x, 1)
-.end
-
-
-=item C<infix:>=(...)>
-
-Override numerical greater than or equal to for junctions.
-
-=cut
-
-.sub 'infix:>=' :multi('Junction','Junction')
-    .param pmc j1
-    .param pmc j2
-    $P0 = find_global "infix:>="
-    .return junction_comparrison_helper($P0, j1, j2, 0)
-.end
-
-.sub 'infix:>=' :multi('Junction',_)
-    .param pmc j
-    .param pmc x
-    $P0 = find_global "infix:>="
-    .return junction_comparrison_helper($P0, j, x, 0)
-.end
-
-.sub 'infix:>=' :multi(_,'Junction')
-    .param pmc x
-    .param pmc j
-    $P0 = find_global "infix:>="
-    .return junction_comparrison_helper($P0, j, x, 1)
-.end
-
-
-=item C<infix:<=(...)>
-
-Override numerical less than or equal to for junctions.
-
-=cut
-
-.sub 'infix:<=' :multi('Junction','Junction')
-    .param pmc j1
-    .param pmc j2
-    $P0 = find_global "infix:<="
-    .return junction_comparrison_helper($P0, j1, j2, 0)
-.end
-
-.sub 'infix:<=' :multi('Junction',_)
-    .param pmc j
-    .param pmc x
-    $P0 = find_global "infix:<="
-    .return junction_comparrison_helper($P0, j, x, 0)
-.end
-
-.sub 'infix:<=' :multi(_,'Junction')
-    .param pmc x
-    .param pmc j
-    $P0 = find_global "infix:<="
-    .return junction_comparrison_helper($P0, j, x, 1)
-.end
-
-
-=item C<infix:eq(...)>
-
-Override string equality for junctions.
-
-=cut
-
-.sub 'infix:eq' :multi('Junction','Junction')
-    .param pmc j1
-    .param pmc j2
-    $P0 = find_global "infix:eq"
-    .return junction_comparrison_helper($P0, j1, j2, 0)
-.end
-
-.sub 'infix:eq' :multi('Junction',_)
-    .param pmc j
-    .param pmc x
-    $P0 = find_global "infix:eq"
-    .return junction_comparrison_helper($P0, j, x, 0)
-.end
-
-.sub 'infix:eq' :multi(_,'Junction')
-    .param pmc x
-    .param pmc j
-    $P0 = find_global "infix:eq"
-    .return junction_comparrison_helper($P0, j, x, 1)
-.end
-
-
-=item C<infix:ne(...)>
-
-Override string inequality for junctions.
-
-=cut
-
-.sub 'infix:ne' :multi('Junction','Junction')
-    .param pmc j1
-    .param pmc j2
-    $P0 = find_global "infix:ne"
-    .return junction_comparrison_helper($P0, j1, j2, 0)
-.end
-
-.sub 'infix:ne' :multi('Junction',_)
-    .param pmc j
-    .param pmc x
-    $P0 = find_global "infix:ne"
-    .return junction_comparrison_helper($P0, j, x, 0)
-.end
-
-.sub 'infix:ne' :multi(_,'Junction')
-    .param pmc x
-    .param pmc j
-    $P0 = find_global "infix:ne"
-    .return junction_comparrison_helper($P0, j, x, 1)
-.end
-
-
-=item C<infix:lt(...)>
-
-Override string less than for junctions.
-
-=cut
-
-.sub 'infix:lt' :multi('Junction','Junction')
-    .param pmc j1
-    .param pmc j2
-    $P0 = find_global "infix:lt"
-    .return junction_comparrison_helper($P0, j1, j2, 0)
-.end
-
-.sub 'infix:lt' :multi('Junction',_)
-    .param pmc j
-    .param pmc x
-    $P0 = find_global "infix:lt"
-    .return junction_comparrison_helper($P0, j, x, 0)
-.end
-
-.sub 'infix:lt' :multi(_,'Junction')
-    .param pmc x
-    .param pmc j
-    $P0 = find_global "infix:lt"
-    .return junction_comparrison_helper($P0, j, x, 1)
-.end
-
-
-=item C<infix:gt(...)>
-
-Override string greater than for junctions.
-
-=cut
-
-.sub 'infix:gt' :multi('Junction','Junction')
-    .param pmc j1
-    .param pmc j2
-    $P0 = find_global "infix:gt"
-    .return junction_comparrison_helper($P0, j1, j2, 0)
-.end
-
-.sub 'infix:gt' :multi('Junction',_)
-    .param pmc j
-    .param pmc x
-    $P0 = find_global "infix:gt"
-    .return junction_comparrison_helper($P0, j, x, 0)
-.end
-
-.sub 'infix:gt' :multi(_,'Junction')
-    .param pmc x
-    .param pmc j
-    $P0 = find_global "infix:gt"
-    .return junction_comparrison_helper($P0, j, x, 1)
-.end
-
-
-=item C<infix:le(...)>
-
-Override string less than or equal for junctions.
-
-=cut
-
-.sub 'infix:le' :multi('Junction','Junction')
-    .param pmc j1
-    .param pmc j2
-    $P0 = find_global "infix:le"
-    .return junction_comparrison_helper($P0, j1, j2, 0)
-.end
-
-.sub 'infix:le' :multi('Junction',_)
-    .param pmc j
-    .param pmc x
-    $P0 = find_global "infix:le"
-    .return junction_comparrison_helper($P0, j, x, 0)
-.end
-
-.sub 'infix:le' :multi(_,'Junction')
-    .param pmc x
-    .param pmc j
-    $P0 = find_global "infix:le"
-    .return junction_comparrison_helper($P0, j, x, 1)
-.end
-
-
-=item C<infix:ge(...)>
-
-Override string greater than or equal for junctions.
-
-=cut
-
-.sub 'infix:ge' :multi('Junction','Junction')
-    .param pmc j1
-    .param pmc j2
-    $P0 = find_global "infix:ge"
-    .return junction_comparrison_helper($P0, j1, j2, 0)
-.end
-
-.sub 'infix:ge' :multi('Junction',_)
-    .param pmc j
-    .param pmc x
-    $P0 = find_global "infix:ge"
-    .return junction_comparrison_helper($P0, j, x, 0)
-.end
-
-.sub 'infix:ge' :multi(_,'Junction')
-    .param pmc x
-    .param pmc j
-    $P0 = find_global "infix:ge"
-    .return junction_comparrison_helper($P0, j, x, 1)
-.end
+.MAKE_COMPARRISION('infix:==')
+.MAKE_COMPARRISION('infix:!=')
+.MAKE_COMPARRISION('infix:>')
+.MAKE_COMPARRISION('infix:<')
+.MAKE_COMPARRISION('infix:>=')
+.MAKE_COMPARRISION('infix:<=')
+.MAKE_COMPARRISION('infix:eq')
+.MAKE_COMPARRISION('infix:ne')
+.MAKE_COMPARRISION('infix:lt')
+.MAKE_COMPARRISION('infix:gt')
+.MAKE_COMPARRISION('infix:le')
+.MAKE_COMPARRISION('infix:ge')
 
 
 # Helper sub for applying non-comparative infixes to junctions.
-.sub infix_junction_helper :anon
+.sub '!binary_junction_helper'
     .param pmc op_sub
     .param pmc j
     .param pmc x
@@ -1480,7 +592,7 @@ nv_loop_end:
 .end
 
 # Helper sub for junction comparrisons.
-.sub junction_comparrison_helper :anon
+.sub '!comparrision_junction_helper' 
     .param pmc op_func
     .param pmc j
     .param pmc x
@@ -1540,7 +652,7 @@ ret_false:
 
 
 # Helper sub for implementing unary operators.
-.sub unary_junction_helper :anon
+.sub '!unary_junction_helper'
     .param pmc op_sub
     .param pmc j
 

Reply via email to