translate set:version in English
This commit is contained in:
+8
-31
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user