Spec-Zone.ru › D

std.outbuffer

Сериализация данных в массивы ubyte.

Лицензия:
Boost License 1.0.
Авторы:
Уолтер Брайт
Источник
std/outbuffer.d
class OutBuffer;

OutBuffer предоставляет способ построения массива байтов из исходных данных. Он полезен для подготовки массива байтов для записи в файл. Порядок байтов в OutBuffer соответствует порядку, принятому в компьютере. Для управления порядком байтов (эндианностью) используйте класс, производный от OutBuffer. Внутренний буфер OutBuffer выделяется сборщиком мусора. Указатели, хранящиеся в буфере, сканируются сборщиком мусора, но вы должны обеспечить правильное выравнивание, например, с помощью alignSize((void*).sizeof).

Примеры:
import std.string : cmp;

OutBuffer buf = new OutBuffer();

writeln(buf.offset); // 0
buf.write("hello");
buf.write(cast(byte) 0x20);
buf.write("world");
buf.printf(" %d", 62665);
writeln(cmp(buf.toString(), "hello world 62665")); // 0

buf.clear();
writeln(cmp(buf.toString(), "")); // 0
buf.write("New data");
writeln(cmp(buf.toString(), "New data")); // 0
inout pure nothrow scope @safe inout(ubyte)[] toBytes();

Преобразование в массив байтов.

pure nothrow @trusted void reserve(size_t nbytes);

Предварительно выделяет nbytes больше в размер внутреннего буфера.

Это оптимизация производительности, хорошее предположение о максимальном размере результирующего буфера улучшит производительность, исключая перераспределения и копирование.

alias put = write;

put позволяет использовать OutBuffer в качестве OutputRange.

pure nothrow @safe void write(scope const(ubyte)[] bytes);

pure nothrow @safe void write(byte b);

pure nothrow @safe void write(char c);

pure nothrow @safe void write(dchar c);

pure nothrow @safe void write(short s);

pure nothrow @safe void write(int i);

pure nothrow @safe void write(long l);

Добавление данных во внутренний буфер.

pure nothrow @safe void fill0(size_t nbytes);

Добавление nbytes нулей во внутренний буфер.

pure nothrow @safe void alignSize(size_t alignsize);

Заполнение нулями для выравнивания по границе, являющейся степенью двойки.

pure nothrow @safe void clear();

Очистка данных в буфере.

pure nothrow @safe void align2();

Оптимизация общего частного случая alignSize(2).

pure nothrow @safe void align4();

Оптимизация общего частного случая alignSize(4).

const pure nothrow @safe string toString();

Преобразование внутреннего буфера в массив символов.

nothrow @trusted void vprintf(scope string format, va_list args);

Добавление результата C's vprintf() во внутренний буфер.

@trusted void printf(scope string format, ...);

Добавление результата C's printf() во внутренний буфер.

void writef(Char, A...)(scope const(Char)[] fmt, A args);

Форматирует и записывает свои аргументы в текстовом формате в OutBuffer.

Параметры:
const(Char)[] fmt строка формата, как описано в std.format.formattedWrite
A args аргументы для форматирования
См. также:
std.stdio.writef; std.format.formattedWrite;
Примеры:
OutBuffer b = new OutBuffer();
b.writef("a%sb", 16);
writeln(b.toString()); // "a16b"
void writefln(Char, A...)(scope const(Char)[] fmt, A args);

Форматирует и записывает свои аргументы в текстовом формате в OutBuffer, за которыми следует перевод строки.

Параметры:
const(Char)[] fmt строка формата, как описано в std.format.formattedWrite
A args аргументы для форматирования
См. также:
std.stdio.writefln; std.format.formattedWrite;
Примеры:
OutBuffer b = new OutBuffer();
b.writefln("a%sb", 16);
writeln(b.toString()); // "a16b\n"
pure nothrow @safe void spread(size_t index, size_t nbytes);

По смещению index в буфере создать nbytes места, сдвинув вверх все данные после index.

© 1999–2021 The D Language Foundation
Licensed under the Boost License 1.0.
https://dlang.org/phobos/std_outbuffer.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API