-- ************************************************************************
-- Script: BYTEARRAY INTERFACE
-- Version: 0.2
-- Date: 2008-11-30
--
-- + allows to create ByteArray objects by using ByteArray(<string>) or ByteArray([intSize],[intInitialValue])
-- + provides functions readByteArray/writeByteArray
-- + provides using bytesRemaining
--
-- ************************************************************************
on ByteArray p1, p2
-- return script("ByteArray").new(p1,p2)
-- simulates ByteArray by adding overwriting ilk (as property and function) and string()
return script("ByteArrayMimicry").new(p1,p2)
end
--------------------------------------
-- readByteArray (intBytes,[byteArray], [intOffset] )
-- Reads intBytes number of bytes into ByteArray. If an existing ByteArray is
-- passed as input read data shall be appended to that byte array starting
-- with intOffset position.
--------------------------------------
on readByteArray (fp, intBytes, byteArray, intOffset)
data = fread(fp, intBytes)
if byteArray.ilk=#byteArray then
if integerP(intOffset) then byteArray.position=intOffset+1
byteArray.writeRawString(data, intBytes)
else
return ByteArray(data)
end if
end
--------------------------------------
-- writeByteArray (byteArray, [intOffset],[intLen])
-- Writes a ByteAray or part of it into a file.
--------------------------------------
on writeByteArray (fp, byteArray, intOffset, intLen)
if not integerP(intOffset) then intOffset=0
pos = byteArray.position
byteArray.position = intOffset+1
if not integerP(intLen) then intLen=byteArray.length-byteArray.position+1
data = byteArray.readRawString(intLen)
byteArray.position = pos
fwrite(fp, data)
end
--------------------------------------
-- to support BytesRemaining as (pseudo)property: e.g. put ba.bytesRemaining
--------------------------------------
on bytesRemaining ba
return ba.bytesRemaining()
end