translate set:version in English

This commit is contained in:
2026-07-20 22:38:05 +03:00
parent 1172683d9a
commit 66c0415956
3 changed files with 542 additions and 31 deletions
+8 -31
View File
@@ -44,7 +44,7 @@ struct set *set_free(struct set *set);
### `set_new()`
Создаёт пустой объект `struct set` контейнер для строк символов и их будущих hash-значений.
Создаёт пустой объект `struct set` - контейнер для строк символов и их будущих hash-значений.
Из реализации:
> internally struct set is just a bag of strings and their hash values.
@@ -115,7 +115,7 @@ set->sv[i].v = hash(set->sv[i].s) & mask;
Все дальнейшие преобразования происходят внутри функции `encode_set()`. Возвращаемое значение - длина итоговой set-строки, включая bpp и Mshift первыми двумя символами.
!!! NOTE Возвращаемое значение `encode_set()` может использоваться как код ошибки при отрицательных значениях
Возвращаемое значение `encode_set()` может использоваться как код ошибки при отрицательных значениях
### delta
@@ -169,6 +169,8 @@ bits = 00 1 00101010
Заметим, что данным образом невозможно получить последовательность `ZZ`, т.к. символ `Z` требует двух старших бит, выставленных в `11`
!!! Пример некорректный, кодирование с младшего идёт, Z закидывает в старшие
Пример преобразования:
```
@@ -280,7 +282,6 @@ static const unsigned short word_to_num[65536];
1. все значения заполняются `W_EE` как ошибочные
2. с помощью макроса `AA1` строятся макросы `AA1x2`, `AA1x25` и т.д. вплоть до `AA10x10` и ему аналогичных.
- итоговые макросы позволяют быстро заполнить таблицу значениями `[CCI(c1, c2)] = (c1 - b1) | ((c2 - b2) << 6)`
3. аналогичный процесс заполнения для `AZ`, но с добавлением флага `W_AZ` к значениям в таблице.
4. заполняется таблица для `ZA` значений с флагом `W_ZA`. Недопустимость старших бит `11` во втором символе (т.е. символы со значения 48) проверяется лишь внутри функций, `W_EE` для таких значений не возвращается
5. заполняется таблица для `A0` и `0X` значений с флагами `W_A0` и `W_0X` соответственно.
@@ -322,10 +323,10 @@ value = (q << Mshift) | r;
`Esc2` вызывается после завершения escape-пары и решает, что делать дальше:
- обычный символ обработать 6 бит
- конец строки завершить декодирование
- недопустимый символ вернуть ошибку
- новый `Z` снова перейти в `Esc1`
- обычный символ - обработать 6 бит
- конец строки - завершить декодирование
- недопустимый символ - вернуть ошибку
- новый `Z` - снова перейти в `Esc1`
#### `QMake` и `RMake` макросы
@@ -509,27 +510,3 @@ set_fini()
rpmsetcmp()
set_free()
```
## Комментарии
## additional
[коды](https://altlinux.space/arseny/atsv-research) от Арсения для наглядности происходящего
some funny [msg's](https://lists.pld-linux.org/mailman/pipermail/pld-devel-en/2013-November/012467.html)
по коду неоднократно раскидано `bpp < 10 || bpp > 32` проверки
запись `char = [1,0]` мне не нравится.
про "отрицательные значения = код ошибки" встречается в многих местах, стоит вынести отдельно
проверить кодом примеры, особенно base62
кэш вечно копируется и переносится, немного странно
PIVOT_SIZE странный
прыжки IFLT8 и IFLT4 я бы возможно делал как c1/c2
учитывая оптимизации, возможно стоит самостоятельно менять массивы местами до начала всех операций (но проблема с кэшем возможна)
хочу себе день, чтобы переписать это всё на English