Class BufferSizeCounter

extends BufferConsumer
A consumer that counts the number of written bytes.
This class is used when writing happens in two phases:
  • counting of bytes.
  • writing into a buffer of the correct size.
In this scenario data is processed twice, but the resulting buffer is allocated with the right size from the beginning.
Deprecated.

Class summary


put-byte offset/int byte/int -> none
write-byte byte/int -> none
write data/Data from/int= to/int= -> int
write-producer producer/Producer -> none
grow amount/int -> none
reserve amount/int -> none
close -> none
clear -> none
write-int64-big-endian data/int -> none
write-int32-big-endian data/int -> none
write-int16-big-endian data/int -> none
put-int64-big-endian offset/int data/int -> none
put-int32-big-endian offset/int data/int -> none
put-int16-big-endian offset/int data/int -> none
write-int64-little-endian data/int -> none
write-int32-little-endian data/int -> none
write-int16-little-endian data/int -> none
put-int64-little-endian offset/int data/int -> none
put-int32-little-endian offset/int data/int -> none
put-int16-little-endian offset/int data/int -> none
operator == other/any -> bool
Whether this object is equal to the other.
stringify -> string
Stringifies this object.

Methods

clear -> none
This operation resets the size to 0. This consumer does *not* remember the size that was seen so far.

grow amount/int -> none

operator == other/any -> bool
Whether this object is equal to the other.
By default, identical is used for equality.
Inheritance
Classes overwrite this operator to get an equality specific to their needs. Equality operators often compare the type and field contents. For example:

class Pin:
  number/int

  constructor .number:

  operator == other:
    if other is not Pin: return false
    return number == other.number
A class doesn't have to follow the above format, but it must keep the operator in sync with any hash-code method. That is, if a class has a hash-code member, then the equality and hash-code must agree. If two instances are equal (a == b), then their hash codes must also be equal (a.hash-code == b.hash-code).

put-byte offset/int byte/int -> none

Stringifies this object.
Inheritance
Objects that need a human-friendly string representation should overwrite this method. The default string is based on the internal class-ID.

write data/Data from/int=0 to/int=data.byte-size -> int

write-producer producer/Producer -> none
This operation only requests the size of the producer.

Fields