# ostream 扩展函数

# 1.ostream_seek

定位到指定的偏移量。


# 原型

ostream_seek(ostream, offset) => bool

# 示例

var a = ostream_file_create("test.bin", "wb+")
ostream_seek(a, 10);

# 2.ostream_tell

获取当前的偏移量。


# 原型

ostream_tell(ostream) => bool

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

# 示例

var a = ostream_file_create("test.bin", "wb+")
ostream_seek(a, 10);
print(ostream_tell(a));

# 3.ostream_flush

刷新缓冲区。


# 原型

ostream_flush(ostream) => bool

# 示例

var a = ostream_file_create("test.bin", "wb+")
ostream_flush(a);

# 4.ostream_write_uint8

写入 uint8_t 类型的数据。


# 原型

ostream_write_uint8(ostream, v, ...) => int32_t

返回写入数据的长度(字节数)。

# 示例

var a = ostream_file_create("test.bin", "wb+")
print(ostream_write_uint8(a, 1));

# 5.ostream_write_uint16

写入 uint16_t 类型的数据。


# 原型

ostream_write_uint16(ostream, v, ...) => int32_t

返回写入数据的长度(字节数)。

# 示例

var a = ostream_file_create("test.bin", "wb+")
print(ostream_write_uint16(a, 2));

# 6.ostream_write_uint32

写入 uint32_t 类型的数据。


# 原型

ostream_write_uint32(ostream, v, ...) => int32_t

返回写入数据的长度(字节数)。

# 示例

var a = ostream_file_create("test.bin", "wb+")
print(ostream_write_uint32(a, 3));

# 7.ostream_write_uint64

写入 uint64_t 类型的数据。


# 原型

ostream_write_uint64(ostream, v, ...) => int32_t

返回写入数据的长度(字节数)。

# 示例

var a = ostream_file_create("test.bin", "wb+")
print(ostream_write_uint32(a, 4));

# 8.ostream_write_int8

写入 int8_t 类型的数据。


# 原型

ostream_write_int8(ostream, v, ...) => int32_t

返回写入数据的长度(字节数)。

# 示例

var a = ostream_file_create("test.bin", "wb+")
print(ostream_write_int8(a, 1));

# 9.ostream_write_int16

写入 int16_t 类型的数据。


# 原型

ostream_write_int16(ostream, v, ...) => int32_t

返回写入数据的长度(字节数)。

# 示例

var a = ostream_file_create("test.bin", "wb+")
print(ostream_write_int16(a, 2));

# 10.ostream_write_int32

写入 int32_t 类型的数据。


# 原型

ostream_write_int32(ostream, v, ...) => int32_t

返回写入数据的长度(字节数)。

# 示例

var a = ostream_file_create("test.bin", "wb+")
print(ostream_write_int32(a, 3));

# 11.ostream_write_int64

写入 int64_t 类型的数据。


# 原型

ostream_write_int64(ostream, v, ...) => int32_t

返回写入数据的长度(字节数)。

# 示例

var a = ostream_file_create("test.bin", "wb+")
print(ostream_write_int64(a, 4));

# 12.ostream_write_float

写入 float 类型的数据。


# 原型

ostream_write_float(ostream, v, ...) => int32_t

返回写入数据的长度(字节数)。

# 示例

var a = ostream_file_create("test.bin", "wb+")
print(ostream_write_float(a, 5));

# 13.ostream_write_double

写入 double 类型的数据。


# 原型

ostream_write_double(ostream, v, ...) => int32_t

返回写入数据的长度(字节数)。

# 示例

var a = ostream_file_create("test.bin", "wb+")
print(ostream_write_double(a, 6));

# 14.ostream_write_string

写入 字符串 类型的数据。


# 原型

ostream_write_string(ostream, v, [size]) => int32_t
  • size为长度(可选),超过字符串长度时取字符串的长度。
  • 返回写入数据的长度(字节数)。

# 示例

var a = ostream_file_create("test.bin", "wb+")
print(ostream_write_string(a, 'str'));
print(ostream_write_string(a, 'hello', 5));

# 15.ostream_write_binary

写入 二进制 类型的数据。


# 原型

ostream_write_binary(ostream, v, [size]) => int32_t
  • size为长度,在v是binary时可选,为POINTER时则是必选。
  • 返回写入数据的长度(字节数)。

# 示例

var a = ostream_file_create("test.bin", "wb+")
print(ostream_write_binary(a, 'str'));
print(ostream_write_binary(a, 'hello', 5));

# 更多示例

var a = ostream_file_create("test.bin", "wb+")

assert(ostream_write_uint8(a, 1) == 1)
assert(ostream_write_int8(a, -1) == 1)
assert(ostream_tell(a), 2)

assert(ostream_write_uint16(a, 2) == 2)
assert(ostream_write_int16(a, -2) == 2)
assert(ostream_tell(a), 6)

assert(ostream_write_uint32(a, 3) == 4)
assert(ostream_write_int32(a, -3) == 4)
assert(ostream_tell(a), 14)

assert(ostream_write_uint64(a, 4) == 8)
assert(ostream_write_int64(a, -4) == 8)
assert(ostream_tell(a), 30)

assert(ostream_write_float(a, 5) == 4)
assert(ostream_write_double(a, -5) == 8)
assert(ostream_tell(a), 42)

assert(ostream_write_string(a, "hello") == 5)
assert(ostream_write_binary(a, "world", 5) == 5)
assert(ostream_tell(a), 52)

assert(ostream_flush(a))