Skip to content

Commit

Permalink
Merge commit 'joeri/library'
Browse files Browse the repository at this point in the history
  • Loading branch information
treed committed Jul 27, 2009
2 parents 7a79754 + c0c2cc9 commit 0d96626
Show file tree
Hide file tree
Showing 11 changed files with 47 additions and 54 deletions.
4 changes: 2 additions & 2 deletions src/builtins/cmp.pir
Expand Up @@ -81,8 +81,8 @@ Swiped from Rakudo.
.param pmc a
.param pmc b
.local int i
$I1 = a.'elems'()
$I2 = b.'elems'()
$I1 = elements a
$I2 = elements b
ne $I1, $I2, fail
i = 0
loop:
Expand Down
57 changes: 26 additions & 31 deletions src/classes/Array.pir
Expand Up @@ -100,23 +100,31 @@ Doesnt work, but it should be close...
.sub 'fill' :method
.param pmc value
.param int offset :optional
.param int end_index :optional
.param int length :optional
.local int i, end_index

unless end_index goto set_index
unless offset goto set_offset
unless length goto set_length
goto do_fill

set_index:
end_index = self.'length'()
unless offset goto set_offset
goto do_fill
set_offset:
offset = 0
unless length goto set_length
goto do_fill
set_length:
length = elements self
length = length - offset
do_fill:
$P0 = new 'CardinalString'
$P0 = value
splice self, value, offset, end_index
i = offset
end_index = offset + length

loop:
if i == end_index goto done
self[i] = value

inc i
goto loop
done:
.return (self)
.end

Expand Down Expand Up @@ -161,18 +169,6 @@ match:
.return($P0)
.end


=item elems()

Return the number of elements in the list.

=cut

.sub 'elems' :method
$I0 = elements self
.return ($I0)
.end

=item

Return the class name
Expand All @@ -196,19 +192,18 @@ Return a sorted copy of the list
by = get_hll_global 'infix:cmp'
have_by:

.local pmc list, fpa
.local pmc fpa
.local int elems

list = self
elems = list.'elems'()
elems = elements self
fpa = new 'FixedPMCArray'
fpa = elems

.local int i
i = 0
fpa_loop:
unless i < elems goto fpa_end
$P0 = list[i]
$P0 = self[i]
fpa[i] = $P0
inc i
goto fpa_loop
Expand Down Expand Up @@ -242,7 +237,7 @@ Return a sorted copy of the list
hash = new 'CardinalHash'

i = 0
len = self.'elems'()
len = elements self

loop:
if i == len goto done
Expand Down Expand Up @@ -297,7 +292,7 @@ Return a sorted copy of the list
uarray = new 'CardinalArray'

i = 0
len = self.'elems'()
len = elements self

loop:
if i == len goto done
Expand Down Expand Up @@ -406,7 +401,7 @@ Return true is C<self> is of size 0
=cut
.sub 'empty?' :method
.local int len
len = self.'length'()
len = elements self
if len == 0 goto empty
goto not_empty
empty:
Expand Down Expand Up @@ -1150,7 +1145,7 @@ Concatenate the passed array onto C<self>
.local int i, len

i = 0
len = other.'size'()
len = elements other

loop:
if i == len goto done
Expand Down Expand Up @@ -1584,7 +1579,7 @@ Operator form for either repetition (when argument is an Integer), or as a short

array = new 'CardinalArray'
hash = new 'CardinalHash'
len = that.'size'()
len = elements that
i = 0

hash_loop:
Expand All @@ -1597,7 +1592,7 @@ Operator form for either repetition (when argument is an Integer), or as a short
goto hash_loop

hash_done:
len = this.'size'()
len = elements this
i = 0

diff_loop:
Expand Down
4 changes: 2 additions & 2 deletions t/03-return.t
Expand Up @@ -4,10 +4,10 @@ def noargs
return 1
end

puts "ok " + noargs()
puts "ok #{noargs()}"

def onearg(a)
return a
end

puts onearg("ok ") + onearg(2)
puts onearg("ok #{onearg(2)}")
8 changes: 4 additions & 4 deletions t/04-indexed.t
Expand Up @@ -2,11 +2,11 @@ puts "1..4"

a = [ 'ok ', 1 ]

puts a[0] + a[1]
puts a[0] + a[1].to_s

a = [ 'ok ', 2, 3, 4 ]
b = 1

puts a[0] + a[b]
puts a[0] + a[a[1]]
puts a[0] + a[a[a[1]]]
puts a[0] + a[b].to_s
puts a[0] + a[a[1]].to_s
puts a[0] + a[a[a[1]]].to_s
8 changes: 4 additions & 4 deletions t/08-class.t
Expand Up @@ -2,15 +2,15 @@ puts '1..7'

class OkayOnCreate
def initialize(a)
puts 'ok ' + a
puts "ok #{a}"
end
end

a = OkayOnCreate.new(1)

class OkaySayer
def speak
puts 'ok ' + @num
puts "ok " + @num.to_s
end

def setnum(n)
Expand Down Expand Up @@ -42,7 +42,7 @@ b.speak
b.inc
b.speak
b.num = b.num + 1
puts "ok " + b.num
puts "ok #{b.num}"

class StaticTester
def num()
Expand All @@ -52,7 +52,7 @@ class StaticTester
@@num = var
end
def speak()
puts "ok " + @@num
puts "ok #{@@num}"
end
end

Expand Down
2 changes: 1 addition & 1 deletion t/12-gather.t
Expand Up @@ -8,7 +8,7 @@ items = gather do
take 2
end

is items.elems, 3, "basic gather"
is items.length, 3, "basic gather"

items.each do |i|
ok i < 3, "basic gather"
Expand Down
2 changes: 1 addition & 1 deletion t/array/array.t
Expand Up @@ -7,7 +7,7 @@ a = [ 1, 2, 3, 4 ]
is a.first, 1
is a.first(2).last, 2
is a.last(2).first, 3
is a.elems, 4
is a.length, 4

a = [ 5, 6 ]

Expand Down
1 change: 0 additions & 1 deletion t/array/at.t
Expand Up @@ -16,4 +16,3 @@ is b, 3, 'at'

c = a.at(1) * 2
is c, 4, 'at'

9 changes: 4 additions & 5 deletions t/array/fill.t
Expand Up @@ -6,12 +6,11 @@ a = Array.new(2)

is a, [ nil, nil ], '.new on Array'

todo "Array.fill", "5", 3
#a = a.fill('-')
a = a.fill('-')
is a, [ '-', '-' ], '.fill on Array'

#a = a.fill(':-)', 1)
a = a.fill(':-)', 1)
is a, ['-', ':-)'], '.fill with start index'

#a = a.fill(':-o', 0, 1)
is a, [':-o', ':-)'], '.fill with start and end index'
a = a.fill(':-o', 0, 1)
is a, [':-o', ':-)'], '.fill with start and length'
2 changes: 1 addition & 1 deletion t/array/flatten.t
Expand Up @@ -11,7 +11,7 @@ c = c.flatten

if c.length == 8
c.each() do |x|
puts 'ok ' + x
puts "ok #{x}"
end
else
puts "nok 1..8"
Expand Down
4 changes: 2 additions & 2 deletions t/array/reverse.t
Expand Up @@ -11,7 +11,7 @@ a << 1
a = a.reverse
unless a[0] != 1
a.each() do |i|
puts 'ok ' + i
puts "ok #{i}"
end
end

Expand All @@ -20,6 +20,6 @@ unless a[0] != 6
a.reverse!
a.each() do |i|
i += 6
puts 'ok ' + i
puts "ok #{i}"
end
end

0 comments on commit 0d96626

Please sign in to comment.