get binary code to work
This commit is contained in:
@ -10,5 +10,17 @@ module Parfait
|
||||
# obviously not a "Word" but a ByteArray , but no such class yet
|
||||
# As on the other hand has no encoding (yet) it is close enough
|
||||
class BinaryCode < Word
|
||||
def initialize name
|
||||
super(0)
|
||||
@name = name
|
||||
end
|
||||
# this is a sof check if there are instance variables or "structure"
|
||||
# have to override false, as word answers true
|
||||
def is_value?
|
||||
false
|
||||
end
|
||||
def to_s
|
||||
"BinaryCode #{@name}"
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -24,7 +24,7 @@ module Parfait
|
||||
raise "No class #{name}" unless clazz
|
||||
@for_class = clazz
|
||||
@name = name
|
||||
@code = BinaryCode.new_object 0
|
||||
@code = BinaryCode.new_object name
|
||||
@arg_names = arg_names
|
||||
@locals = []
|
||||
@tmps = []
|
||||
|
@ -41,6 +41,21 @@ module Parfait
|
||||
return obj_len
|
||||
end
|
||||
|
||||
# make every char equal the given one
|
||||
def fill_with char
|
||||
fill_from_with(0 , char)
|
||||
end
|
||||
|
||||
def fill_from_with from , char
|
||||
len = self.length()
|
||||
return if from <= 0
|
||||
while( from <= len)
|
||||
set_char( from , char)
|
||||
from = from + 1
|
||||
end
|
||||
from
|
||||
end
|
||||
|
||||
# true if no characters
|
||||
def empty?
|
||||
return self.length == 0
|
||||
@ -53,11 +68,7 @@ module Parfait
|
||||
counter = self.length()
|
||||
return if counter >= len
|
||||
internal_object_grow( len + 1)
|
||||
counter = counter + 1
|
||||
while( counter <= len)
|
||||
set_char( counter , fill_char)
|
||||
counter = counter + 1
|
||||
end
|
||||
fill_from_with( counter + 1 , fill_char )
|
||||
end
|
||||
|
||||
# set the character at the given index to the given character
|
||||
@ -120,10 +131,5 @@ module Parfait
|
||||
def mem_length
|
||||
padded(1 + string.length)
|
||||
end
|
||||
def position
|
||||
return @position if @position
|
||||
return @string.position if @string.position
|
||||
super
|
||||
end
|
||||
end
|
||||
end
|
||||
|
Reference in New Issue
Block a user