Spec-Zone.ru › OCaml 4.14

Модуль Buffer

module Buffer: sig .. end

Расширяемые буферы.

Этот модуль реализует буферы, которые автоматически расширяются по мере необходимости. Он предоставляет накапливающее конкатенацию строк за линейное время (вместо квадратичного времени при конкатенации строк попарно). Например:

     let concat_strings ss =
       let b = Buffer.create 16 in
         List.iter (Buffer.add_string b) ss;
         Buffer.contents b

type t 

Абстрактный тип буферов.

val create : int -> t

create n возвращает свежий буфер, изначально пустой. Параметр n — начальный размер внутренней последовательности байтов, которая хранит содержимое буфера. Эта последовательность байтов автоматически перераспределяется, когда в буфере хранится более n символов, но сокращается до n символов, когда вызывается reset. Для лучшей производительности, n должен быть того же порядка величины, что и количество символов, которые ожидается хранить в буфере (например, 80 для буфера, который хранит одну строку вывода). Однако ничего плохого не произойдёт, если буфер вырастет за пределы этого ограничения. В случае сомнений, обратите внимание на n = 16. Если n не находится в диапазоне от 1 до Sys.max_string_length, оно будет ограничено этим интервалом.

val contents : t -> string

Возвращает копию текущего содержимого буфера. Сам буфер не изменяется.

val to_bytes : t -> bytes

Возвращает копию текущего содержимого буфера. Сам буфер не изменяется.

  • С момента 4.02
val sub : t -> int -> int -> string

Buffer.sub b off len возвращает копию len байтов из текущего содержимого буфера b, начиная со смещения off.

  • Возбуждает Invalid_argument если off и len не обозначают допустимый диапазон b.
val blit : t -> int -> bytes -> int -> int -> unit

Buffer.blit src srcoff dst dstoff len копирует len символов из текущего содержимого буфера src, начиная со смещения srcoff до dst, начиная с символа dstoff.

  • С момента 3.11.2
  • Возбуждает Invalid_argument если srcoff и len не обозначают допустимый диапазон src, или если dstoff и len не обозначают допустимый диапазон dst.
val nth : t -> int -> char

Получить n-й символ буфера.

  • Возбуждает Invalid_argument если индекс вне диапазона
val length : t -> int

Возвращает количество символов, в настоящее время содержащихся в буфере.

val clear : t -> unit

Очистить буфер.

val reset : t -> unit

Очистить буфер и деаллоцировать внутреннюю последовательность байтов, хранящую содержимое буфера, заменив её начальной внутренней последовательностью байтов длиной n, которая была выделена функцией Buffer.create n. Для долгоживущих буферов, которые могли значительно увеличиться, reset позволяет быстрее вернуть используемое буфером пространство.

val output_buffer : out_channel -> t -> unit

output_buffer oc b записывает текущее содержимое буфера b в выходной канал oc.

val truncate : t -> int -> unit

truncate b len обрезает длину b до len. Примечание: внутренняя последовательность байтов не укорачивается.

  • С момента 4.05.0
  • Возбуждает Invalid_argument если len < 0 или len > length b.

Добавление

Примечание: все операции add_* могут возбудить исключение Failure если внутренней последовательности байтов буфера потребуется вырасти за пределы Sys.max_string_length.

val add_char : t -> char -> unit

add_char b c добавляет символ c в конец буфера b.

val add_utf_8_uchar : t -> Uchar.t -> unit

add_utf_8_uchar b u добавляет кодировку UTF-8 u в конец буфера b.

  • С момента 4.06.0
val add_utf_16le_uchar : t -> Uchar.t -> unit

add_utf_16le_uchar b u добавляет кодировку UTF-16LE u в конец буфера b.

  • С момента 4.06.0
val add_utf_16be_uchar : t -> Uchar.t -> unit

add_utf_16be_uchar b u добавляет кодировку UTF-16BE u в конец буфера b.

  • С момента 4.06.0
val add_string : t -> string -> unit

add_string b s добавляет строку s в конец буфера b.

val add_bytes : t -> bytes -> unit

add_bytes b s добавляет последовательность байтов s в конец буфера b.

  • С момента 4.02
val add_substring : t -> string -> int -> int -> unit

add_substring b s ofs len берёт len символов со смещения ofs в строке s и добавляет их в конец буфера b.

  • Возбуждает Invalid_argument если ofs и len не обозначают допустимый диапазон s.
val add_subbytes : t -> bytes -> int -> int -> unit

add_subbytes b s ofs len берёт len байтов со смещения ofs в последовательности байтов s и добавляет их в конец буфера b.

  • С момента 4.02
  • Возбуждает Invalid_argument если ofs и len не обозначают допустимый диапазон s.
val add_substitute : t -> (string -> string) -> string -> unit

add_substitute b f s добавляет шаблон строки s в конец буфера b с заменой. Процесс замены ищет переменные в шаблоне и заменяет каждое имя переменной его значением, полученным путём применения отображения f к имени переменной. Внутри шаблона строки имя переменной следует непосредственно за неэкранированным $ символом и является одним из следующих:

  • непустой последовательностью буквенно-цифровых или _ символов,
  • любой последовательностью символов, заключённых в пару соответствующих скобок или фигурных скобок. Экранированный $ символ — это $ символ, который сразу следует за обратной косой чертой; он затем представляет обычный $.
  • Возбуждает Not_found если закрывающий символ скобочной переменной не найден.
val add_buffer : t -> t -> unit

add_buffer b1 b2 добавляет текущее содержимое буфера b2 в конец буфера b1. b2 не изменяется.

val add_channel : t -> in_channel -> int -> unit

add_channel b ic n считывает не более n символов из входного канала ic и сохраняет их в конце буфера b.

  • Возбуждает
    • End_of_file если канал содержит меньше n символов. В этом случае символы по-прежнему добавляются в буфер, чтобы избежать потери данных.
    • Invalid_argument если len < 0 или len > Sys.max_string_length.

Буферы и Последовательности

val to_seq : t -> char Seq.t

Итерироваться по буферу в порядке возрастания.

Поведение не определено, если буфер изменяется во время итерации.

  • С момента 4.07
val to_seqi : t -> (int * char) Seq.t

Итерироваться по буферу в порядке возрастания, генерируя индексы вдоль символов.

Поведение не определено, если буфер изменяется во время итерации.

  • С момента 4.07
val add_seq : t -> char Seq.t -> unit

Добавить символы в буфер

  • С момента 4.07
val of_seq : char Seq.t -> t

Создать буфер из генератора

  • С момента 4.07

Двоичное кодирование целых чисел

Функции в этом разделе добавляют двоичные кодирования целых чисел в буферы.

Маленький порядок байтов (соответственно, большой порядок байтов) означает, что наименее (соответственно, наиболее) значимые байты хранятся первыми. Большой порядок байтов также известен как сетевой порядок байтов. Порядок байтов по умолчанию — это либо малый порядок байтов, либо большой порядок байтов, в зависимости от Sys.big_endian.

32-битные и 64-битные целые числа представлены типами int32 и int64, которые могут быть интерпретированы как знаковое или беззнаковое число.

8-битные и 16-битные целые числа представлены типом int, который имеет больше бит, чем двоичная кодировка. Функции, которые кодируют эти значения, усекают входные данные до их наименее значимых байтов.

val add_uint8 : t -> int -> unit

add_uint8 b i добавляет двоичное беззнаковое 8-битное целое число i к b.

  • С момента 4.08
val add_int8 : t -> int -> unit

Добавляет двоичный знаковый 8-битный целый i к b.

  • Since 4.08
val add_uint16_ne : t -> int -> unit

Добавляет двоичный нативный unsigned 16-битный целый i к b.

  • Since 4.08
val add_uint16_be : t -> int -> unit

Добавляет двоичный big-endian unsigned 16-битный целый i к b.

  • Since 4.08
val add_uint16_le : t -> int -> unit

Добавляет двоичный little-endian unsigned 16-битный целый i к b.

  • Since 4.08
val add_int16_ne : t -> int -> unit

Добавляет двоичный нативный знаковый 16-битный целый i к b.

  • Since 4.08
val add_int16_be : t -> int -> unit

Добавляет двоичный big-endian знаковый 16-битный целый i к b.

  • Since 4.08
val add_int16_le : t -> int -> unit

Добавляет двоичный little-endian знаковый 16-битный целый i к b.

  • Since 4.08
val add_int32_ne : t -> int32 -> unit

Добавляет двоичный нативный 32-битный целый i к b.

  • Since 4.08
val add_int32_be : t -> int32 -> unit

Добавляет двоичный big-endian 32-битный целый i к b.

  • Since 4.08
val add_int32_le : t -> int32 -> unit

Добавляет двоичный little-endian 32-битный целый i к b.

  • Since 4.08
val add_int64_ne : t -> int64 -> unit

Добавляет двоичный нативный 64-битный целый i к b.

  • Since 4.08
val add_int64_be : t -> int64 -> unit

Добавляет двоичный big-endian 64-битный целый i к b.

  • Since 4.08
val add_int64_le : t -> int64 -> unit

Добавляет двоичный little-endian 64-битный целый i к b.

  • Since 4.08

© 1995-2022 INRIA.
https://v2.ocaml.org/releases/4.14/htmlman/libref/Buffer.html

Spec-Zone.ru

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