オフィスアワーがそろそろ始まるよ!()

io

入力ストリームと出力ストリームが実装されているモジュールです。

インタフェース

次のインタフェースが定義されています。

  • InStream

入力ストリームのインタフェースを提供します。

pub fn InStream(comptime ReadError: type) type {
    return interface {
        fn read(buf: []u8) ReadError![]u8;
    };
}

ReadErrorは任意のエラー型です。read(buf: []u8) ReadError![]u8を定義することで、インタフェースを実装できます。

  • OutStream

出力ストリームのインタフェースを提供します。

pub fn OutStream(comptime WriteError: type) type {
    return interface {
        fn write(buf: []const u8) WriteError!void;
    };
}
  • InOutStream

入力ストリームと、出力ストリームの両方を提供します。InOutStreamを実装する構造体は、InStreamとしてもOutStreamとしても振る舞うことができます。

pub fn InOutStream(comptime ReadError: type, comptime WriteError: type) type {
    return interface {
        fn read(buf: []u8) ReadError![]u8;
        fn write(buf: []const u8) WriteError!void;
    };
}

read

InStream(Error)を実装する構造体は、read(Error)構造体の関数を利用できます。

  • fill(stream: InStream(Error), buf: []u8) ![]u8: streamからbufの長さ分データを読み出しbufを埋めます。
  • fillNoEos(stream: InStream(Error), buf: []u8) ![]u8: streamからbufの長さ分データを読み出しbufを埋めます。読み込みの途中でストリームの終端に到達した場合はerror.EndOfStreamが返ります。
  • structure(stream: InStream(Error), comptime T: type) !T: streamからT型のデータを読み込みます。Tはメモリレイアウトが定義されているextern structpacked structでなければなりません。
  • byte(stream: InStream(Error)) !u8: streamから1バイト読み出します。
  • ubyteSigned(stream: InStream(Error)) !i8:stream`から符号付きで1バイト読み出します。
  • int(stream: InStream(Error), comptime T: type, endian: builtin.Endian) !T: streamからT型の整数型を、endianのエンディアンで読み出します。
  • allBuffer(stream: InStream(Error), buffer: *Buffer, max_size: usize) !void: streamからbufferに最大max_sizeのデータを読み出します。

その他、いくつかの関数が実装されています。

write

OutStream(Error)を実装する構造体は、write(Error)構造体の関数を利用できます。

  • byte(stream: OutStream(Error), b: u8) Error!void: streamに1バイト (b) を出力します。
  • byteNTimes(stream: OutStream(Error), b: u8, n: usize) Error!void: streambn回出力します。
  • int(stream: OutStream(Error), comptime T: type, value: T, endian: builtin.Endian) Error!void: streamT型の値valueendianのエンディアンで出力します。
  • print(stream: OutStream(Error), comptime format: []const u8, args: ...) Error!void: streamにフォーマットされた文字列を出力します。

その他、いくつかの関数が実装されています。

☰ 人の生きた証は永遠に残るよう ☰
Copyright © 2018-2019 connectFree Corporation. All rights reserved.
Zen, the Zen three-circles logo and The Zen Programming Language are trademarks of connectFree corporation in Japan and other countries.