# This file is part of NIT ( http://www.nitlanguage.org ).
#
-# Copyright 2011-2013 Alexis Laferrière <alexis.laf@xymus.net>
+# Copyright 2011-2014 Alexis Laferrière <alexis.laf@xymus.net>
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
return new_A( s + o );
`}
+ fun +: A import value, A `{
+ int s = A_value(recv);
+ return new_A(+s);
+ `}
+
fun -( other : A ) : A import value, A `{
int s = A_value( recv );
int o = A_value( other );
return new_A( s - o );
`}
+ fun -: A import value, A `{
+ int s = A_value(recv);
+ return new_A(-s);
+ `}
+
fun *( by : Int ) : A import value, A `{
int s = A_value( recv );
return new_A( s / by );
`}
- redef fun ==( other ) import value, nullable Object as(A) `{
+ redef fun ==( other ) import value, nullable Object.as(A) `{
if ( nullable_Object_is_a_A( other ) &&
A_value( nullable_Object_as_A(other) ) == A_value( recv ) )
return 1;
return A_value( recv ) <= A_value( other );
`}
- fun >>( other : A ) import value, value=, A `{
+ fun >>( other : A ): A import value, value=, A `{
int new_val = A_value( recv ) >> A_value( other );
A_value__assign( recv, new_val );
+ return recv;
`}
- fun <<( other : A ) import value, A `{
+ fun <<( other : A ): A import value, A `{
int new_val = A_value( recv ) << A_value( other );
A_value__assign( recv, new_val );
+ return recv;
`}
fun []( index : Int ) : A import A `{
print new A( 100 ) >= new A( 100 ) # true
print new A( 100 ) >= new A( 1 ) # true
-#var x = new A( 1 )
-#x << new A( 5 )
-#print x # 16
+var x = new A( 1 )
+x = x << new A( 5 )
+print x # 32
-#var y = new A( 32 )
-#y >> new A( 2 )
-#print y # 8
+var y = new A( 32 )
+y = y >> new A( 2 )
+print y # 8
var a = new A( 456 )
print a[ 52 ] # 52
a[ 74 ] = new A( 96 )
print a # 96
+print(+(new A(123)))
+print(-(new A(123)))