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.formattedWriteA 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.formattedWriteA 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