Skip to content

Класс Unboxed

Андрей Мулик edited this page Oct 6, 2023 · 12 revisions

Unboxed

Unboxed - класс типов, отвечающий за сериализацию и десериализацию бинарных данных в ByteArray#.

Историческая справка

Изначально Unboxed задумывался как упрощённая версия Storable.

Класс Unboxed, мягко говоря, не лучший пример дизайна: из 11 добавленных в sdp-0.2 методов класса до sdp-0.4 доживут только 4.

  • Функции (!>#), writeByteArray# и fillByteArray# были переименованы в sdp-0.3. Варианты с историческими названиями переместятся из класса в модуль в sdp-0.4, а после - окончательно удалены.
  • Функции sizeof, sizeof#, copyUnboxed# и copyUnboxedM# были перемещены в модуль в sdp-0.3 - их заменят sizeof##, copyUnboxed## и copyUnboxedM##. Оригинальные функции остаются в sdp.

Функции fromProxy и fromProxy1 в sdp-0.3 перемещены в SDP.Proxy, который экспортируется в т.ч. модулем SDP.Unboxed.

В sdp-0.2 и sdp-0.2.1 в модуль SDP.Unboxed добавлялись вспомогательные операции, в т.ч. сомнительной полезности. sdp-0.3 приводит их к единому виду. Для удобства, они были отдельно описаны в разделе "Вспомогательные операции".

Вспомогательные операции

Здесь описаны вспомогательные операции, добавленные в sdp-0.2 и sdp-0.2.1. 6 из них устарели, и поэтому зачёркнуты.

Каноничная операция Вариации
sizeof## sizeof, sizeof#, psizeof, psizeof#
chunkof## chunkof, chunkof#, pchunkof, pchunkof#
indexof## indexof, indexof#, pindexof, pindexof#
newUnboxed pnewUnboxed, pnewUnboxed1
copyUnboxed## copyUnboxed#, pcopyUnboxed, pcopyUnboxed1
copyUnboxedM## copyUnboxedM#, copyUnboxedM##, pcopyUnboxedM, pcopyUnboxedM1
cloneUnboxed## cloneUnboxed#, cloneUnboxed1#, pcloneUnboxed, pcloneUnboxed1
cloneUnboxedM## cloneUnboxedM#, pcloneUnboxedM, pcloneUnboxedM1
thawUnboxed# pthawUnboxed
freezeUnboxed# pfreezeUnboxed
concat# pconcat
eqUnboxed## bytewiseEqUnboxed##, peqUnboxed

API

Класс Unboxed

Метод Описание Добавлен Устарел Перемещён в
sizeof
sizeof#
sizeof##
Получить размер массива элементов указанного типа в байтах по количеству элементов sdp-0.2
sdp-0.2
sdp-0.3
sdp-0.3:SDP.Unboxed
sdp-0.3:SDP.Unboxed
-
(!>#)
readUnboxed#
Прочитать значение изменяемого массива по индексу sdp-0.2
sdp-0.3
sdp-0.3
-
writeByteArray#
writeUnboxed#
Записать значение в изменяемый массив по индексу sdp-0.2
sdp-0.3
sdp-0.3
-
fillByteArray#
fillUnboxed#
Заполнить массив указанной длины данным значением sdp-0.2
sdp-0.3
sdp-0.3
-
copyUnboxed#
copyUnboxed##
Переписать указанный фрагмент неизменяемого массива в изменяемый sdp-0.2
sdp-0.3
sdp-0.3:SDP.Unboxed
-
copyUnboxedM#
copyUnboxedM##
Переписать указанный фрагмент одного изменяемого массива в другой sdp-0.2
sdp-0.3
sdp-0.3:SDP.Unboxed
-
hashUnboxedWith Вычислить hash with salt - аналогична Data.Hashable.hashByteArrayWithSalt sdp-0.2
newUnboxed Создать новый массив, инициализированный значением по умолчанию sdp-0.2
newUnboxed' Создать новый массив, инициализированный данным значением sdp-0.2
(!#) Прочитать значение неизменяемого массива по индексу sdp-0.2
filler Стандартный заполнитель (значение по умолчанию) sdp-0.3
offsetof## Получить смещение в байтах относительно начала массива элемента с указанным индексом sdp-0.3
indexof## Получить индекс элемента с указанным смещением sdp-0.3
chunkof## Получить минимальный (в байтах и элементах) размер пачки элементов sdp-0.3
eqUnboxed## Сравнить фрагменты двух массивов одинаковой длины sdp-0.3
indexUnboxedOff# Прочитать элемент неизменяемого массива по смещению в байтах sdp-0.3
readUnboxedOff# Прочитать элемент изменяемого массива по смещению в байтах sdp-0.3
writeUnboxedOff# Записать значение в изменяемый массив по смещению в байтах sdp-0.3
fillUnboxedOff# Заполнить массив указанной длины данным значением - со смещением sdp-0.3
newUnboxed# Заполнить массив значением по умолчанию. sdp-0.3
sortUnboxed# Отсортировать переданный массив sdp-0.3
prepareSort# Подготовить данные к сортировке, например, числа со знаком для поразрядной сортировки sdp-0.3
restoreSort# Восстановить данные после сортировки, например, числа со знаком после поразрядной сортировки sdp-0.3
sumUnboxed# Реализация sum для примитивного массива sdp-0.3
productUnboxed# Реализация product для примитивного массива sdp-0.3
maximumUnboxed# Реализация maximum для примитивного массива sdp-0.3
minimumUnboxed# Реализация minimum для примитивного массива sdp-0.3

Модуль SDP.Unboxed

Метод Описание Добавлен Устарел Перемещён в Перемещён из
psizeof sdp-0.2
pnewUnboxed sdp-0.2
pcopyUnboxed sdp-0.2
pcopyUnboxedM sdp-0.2
fromProxy sdp-0.2 sdp-0.3:SDP.Proxy
pnewUnboxed1 sdp-0.2 sdp-0.3
pcopyUnboxed1 sdp-0.2 sdp-0.3
pcopyUnboxedM1 sdp-0.2 sdp-0.3
fromProxy1 sdp-0.2 sdp-0.3:SDP.Proxy
cloneUnboxed# sdp-0.2.1
cloneUnboxedM# sdp-0.2.1
thawUnboxed# sdp-0.2.1
freezeUnboxed# sdp-0.2.1
psizeof# sdp-0.2.1
pcloneUnboxed sdp-0.2.1
pcloneUnboxedM sdp-0.2.1
pthawUnboxed sdp-0.2.1
pfreezeUnboxed sdp-0.2.1
pcloneUnboxed1 sdp-0.2.1 sdp-0.3
cloneUnboxed1# sdp-0.2.1 sdp-0.3
pcloneUnboxedM1 sdp-0.2.1 sdp-0.3
lzero# sdp-0.2.1
single# sdp-0.2.1
fromList# sdp-0.2.1
fromFoldable# sdp-0.2.1
fromListN# sdp-0.2.1
newLinear# sdp-0.2.1
newLinearN# sdp-0.2.1
fromFoldableM# sdp-0.2.1
concat# sdp-0.2.1
pconcat sdp-0.2.1
bytewiseEqUnboxed## sdp-0.3
radixSortUnboxed# sdp-0.3
copyUnboxed# sdp-0.3
copyUnboxedM# sdp-0.3
cloneUnboxedM## sdp-0.3
offsetof sdp-0.3
chunkof sdp-0.3
chunkof# sdp-0.3
offsetof# sdp-0.3
cloneUnboxed## sdp-0.3
pchunkof sdp-0.3
pchunkof# sdp-0.3
poffsetof# sdp-0.3
poffsetof sdp-0.3
peqUnboxed sdp-0.3
sizeof sdp-0.2 sdp-0.3:Unboxed
sizeof# sdp-0.2 sdp-0.3:Unboxed
copyUnboxed# sdp-0.2 sdp-0.3:Unboxed
copyUnboxedM# sdp-0.2 sdp-0.3:Unboxed
targetByteOrder sdp-0.3