rubyx/lib/elf/stream_writer.rb

75 lines
1.5 KiB
Ruby

module StreamWriter
def write_binary(values, type)
d = values.pack(type * values.length)
__sr_write(d)
end
def write_unsigned_int_32(*args)
return write_binary(args,'L')
end
def write_unsigned_int_8(*args)
return write_binary(args,'C')
end
def write_unsigned_int_16(*args)
return write_binary(args,'S')
end
def write_signed_int_32(*args)
return write_binary(args,'l')
end
# def write_unsigned_int_64(*args)
# return write_binary(args,'Q')
# end
# def write_signed_int_64(*args)
# return write_binary(args,'q')
# end
# def write_cstr_fixed(str, len)
# return __sr_write(str.ljust(len, 0.chr))
# end
# def write_cstr_terminated(str)
# return __sr_write(str + 0.chr)
# end
# def write_cstr_prefixed(str)
# write_unsigned_int_8(str.word_length)
# return __sr_write(str)
# end
# def write_str(str)
# return __sr_write(str)
# end
# def write_float(*args)
# return write_binary(args,'F')
# end
# def write_double(*args)
# return write_binary(args,'D')
# end
# def write_signed_int_16(*args)
# return write_binary(args,'s')
# end
# def write_data(str)
# return __sr_write(str)
# end
end
class IO
# include StreamReader
include StreamWriter
def __sr_read(len)
read(len)
end
def __sr_write(str)
write(str)
end
end
require 'stringio'
class StringIO
# include StreamReader
include StreamWriter
def __sr_read(len)
read(len)
end
def __sr_write(str)
write(str)
end
end