# istream 扩展函数

# 1.istream_seek

定位到指定的偏移量。


# 原型

istream_seek(istream, offset) => bool

仅当输入流支持 seek 才能调用本函数。

# 示例

var a = istream_file_create("test.bin", "rb");
istream_seek(a, 10);

# 2.istream_tell

获取当前的偏移量。


# 原型

istream_tell(istream) => uint32_t

仅当输入流支持 tell 才能调用本函数。

# 示例

var a = istream_file_create("test.bin", "rb");
istream_seek(a, 10);
print(istream_tell(a));

# 3.istream_read_uint8

读取 uint8_t 类型的数据。


# 原型

istream_read_uint8(istream, timeout) => uint8_t

timeout 为选填参数。

# 示例

var a = istream_file_create("test.bin", "rb");
print(istream_read_uint8(a));

# 4.istream_read_uint16

读取 uint16_t 类型的数据。


# 原型

istream_read_uint16(istream, timeout) => uint16_t

timeout 为选填参数。

# 示例

var a = istream_file_create("test.bin", "rb");
print(istream_read_uint16(a));

# 5.istream_read_uint32

读取 uint32_t 类型的数据。


# 原型

istream_read_uint32(istream, timeout) => uint32_t

timeout 为选填参数。

# 示例

var a = istream_file_create("test.bin", "rb");
print(istream_read_uint32(a));

# 6.istream_read_uint64

读取 uint64_t 类型的数据。


# 原型

istream_read_uint64(istream, timeout) => uint64_t

timeout 为选填参数。

# 示例

var a = istream_file_create("test.bin", "rb");
print(istream_read_uint64(a));

# 7.istream_read_int8

读取 int8_t 类型的数据。


# 原型

istream_read_int8(istream, timeout) => int8_t

timeout 为选填参数。

# 示例

var a = istream_file_create("test.bin", "rb");
print(istream_read_int8(a));

# 8.istream_read_int16

读取 int16_t 类型的数据。


# 原型

istream_read_int16(istream, timeout) => int16_t

timeout 为选填参数。

# 示例

var a = istream_file_create("test.bin", "rb");
print(istream_read_int16(a));

# 9.istream_read_int32

读取 int32_t 类型的数据。


# 原型

istream_read_int32(istream, timeout) => int32_t

timeout 为选填参数。

# 示例

var a = istream_file_create("test.bin", "rb");
print(istream_read_int32(a));

# 10.istream_read_int64

读取 int64_t 类型的数据。


# 原型

istream_read_int64(istream, timeout) => int64_t

timeout 为选填参数。

# 示例

var a = istream_file_create("test.bin", "rb");
print(istream_read_int64(a));

# 11.istream_read_float

读取 float 类型的数据。


# 原型

istream_read_float(istream, timeout) => float

timeout 为选填参数。

# 示例

var a = istream_file_create("test.bin", "rb");
print(istream_read_float(a));

# 12.istream_read_double

读取 double 类型的数据。


# 原型

istream_read_double(istream, timeout) => double

timeout 为选填参数。

# 示例

var a = istream_file_create("test.bin", "rb");
print(istream_read_double(a));

# 13.istream_read_string

读取指定长度的字符串。


# 原型

istream_read_string(istream, size, timeout) => str

timeout 为选填参数。

# 示例

var a = istream_file_create("test.bin", "rb");
print(istream_read_string(a, 10));

# 14.istream_read_binary

读取指定长度的二进制数据。


# 原型

istream_read_binary(istream, size, timeout) => binary

timeout 为选填参数。

# 示例

var a = istream_file_create("test.bin", "rb");
print(istream_read_binary(a, 10));

# 15.istream_read_line

读取一行的字符串。


# 原型

istream_read_line(istream, size, timeout) => str

timeout 为选填参数。

# 示例

var a = istream_file_create("test.bin", "rb");
print(istream_read_line(a, 10));

# 16.istream_is_eos

判读数据是否读完。


# 原型

istream_is_eos(istream) => bool

# 示例

var a = istream_file_create("test.bin", "rb");
print(istream_is_eos(a));

# 更多示例

var a = istream_file_create("test.bin", "rb")
assert(istream_read_uint8(a)==1)
assert(istream_read_int8(a)==-1)
assert(istream_tell(a), 2)

assert(istream_read_uint16(a)==2)
assert(istream_read_int16(a)==-2)
assert(istream_tell(a), 6)

assert(istream_read_uint32(a)==3)
assert(istream_read_int32(a)==-3)
assert(istream_tell(a), 14)

assert(istream_read_uint64(a)==4)
assert(istream_read_int64(a)==-4)
assert(istream_tell(a), 30)

assert(istream_read_float(a)==5)
assert(istream_read_double(a)==-5)
assert(istream_tell(a), 42)

assert(istream_read_string(a, 5)=="hello")
assert(istream_tell(a), 47)

istream_read_binary(a, 5)
assert(istream_tell(a), 52)
assert(istream_seek(a, 0))
assert(istream_read_uint8(a)==1)
assert(istream_read_int8(a)==-1)
assert(istream_tell(a) == 2)

unset(a)