.版本 2

.程序集 内存流
.程序集变量 _buffer, 整数型
.程序集变量 _position, 整数型
.程序集变量 _length, 整数型
.程序集变量 _capacity, 整数型

.子程序 _初始化, , , 当基于本类的对象被创建后，此方法会被自动调用



.子程序 _销毁, , , 当基于本类的对象被销毁前，此方法会被自动调用



.子程序 初始化, , 公开
.参数 capacity, 整数型, 可空

_position ＝ 0
_length ＝ 0
EnsureCapacity (capacity)

.子程序 销毁, , 公开

.如果真 (_buffer ≠ 0)
    free (_buffer)
.如果真结束


.子程序 Write, , 公开
.参数 buffer, 字节集
.局部变量 len, 整数型

len ＝ 取字节集长度 (buffer)
.如果真 (len ≠ 0)
    EnsureCapacity (_position ＋ len)
    RtlMoveMemory_字节集_2 (_buffer ＋ _position, buffer, len)
    _position ＝ _position ＋ len
    _length ＝ _length ＋ len
.如果真结束


.子程序 Read, 整数型, 公开
.参数 buffer, 字节集
.局部变量 len, 整数型
.局部变量 x, 整数型

len ＝ 整数_取最小值 (取字节集长度 (buffer), _length － _position)
.如果真 (len ≠ 0)
    RtlMoveMemory_字节集_1 (buffer, _buffer ＋ _position, len)
    _length ＝ _length － len
    x ＝ _length － _position
    .如果真 (x ≠ 0)
        RtlMoveMemory (_buffer ＋ _position, _buffer ＋ _position ＋ len, x)
    .如果真结束
    ClearCapacity ()
.如果真结束
返回 (len)

.子程序 Length, 整数型, 公开

返回 (_length)

.子程序 Seek, , 公开
.参数 offset, 整数型
.参数 loc, 整数型, , 0.Begin 1.Current 2.End
.局部变量 l, 整数型

.判断开始 (loc ＝ 0)
    .如果真 (offset ≥ 0)
        .如果真 (offset ≤ _length)
            _position ＝ l
        .如果真结束

    .如果真结束

.判断 (loc ＝ 1)
    l ＝ _position ＋ offset
    .如果真 (l ≥ 0 且 l ≤ _length)
        _position ＝ l
    .如果真结束

.判断 (loc ＝ 2)
    .如果真 (offset ≤ 0)
        l ＝ _length ＋ offset
        .如果真 (l ≥ 0)
            _position ＝ l
        .如果真结束

    .如果真结束

.默认

.判断结束


.子程序 ToArray, 字节集, 公开

返回 (指针到字节集 (_buffer, _length))

.子程序 Ptr, 整数型, 公开

返回 (_buffer)

.子程序 EnsureCapacity
.参数 length, 整数型

.如果真 (length ＞ _capacity)
    .判断开始 (_capacity ＝ 0)
        _capacity ＝ length
        _buffer ＝ malloc (length)
    .判断 (_capacity ＜ 1024)
        _capacity ＝ _capacity × 2
        _buffer ＝ realloc (_buffer, _capacity)
    .默认
        _capacity ＝ _capacity ＋ 1024
        _buffer ＝ realloc (_buffer, _capacity)
    .判断结束

.如果真结束


.子程序 ClearCapacity

.如果 (_length ＝ 0)
    .判断开始 (_capacity ＞ 1024)
        _capacity ＝ 1024
        _buffer ＝ realloc (_buffer, _capacity)
    .默认

    .判断结束

.否则
    .判断开始 (_capacity ÷ _length ≥ 2)
        _capacity ＝ _capacity ÷ 2
        _buffer ＝ realloc (_buffer, _capacity)
    .判断 (_capacity － _length ≥ 1024)
        _capacity ＝ _capacity － 1024
        _buffer ＝ realloc (_buffer, _capacity)
    .默认

    .判断结束

.如果结束


