summaryrefslogtreecommitdiff
path: root/strings/ctype-czech.c
diff options
context:
space:
mode:
Diffstat (limited to 'strings/ctype-czech.c')
-rw-r--r--strings/ctype-czech.c75
1 files changed, 25 insertions, 50 deletions
diff --git a/strings/ctype-czech.c b/strings/ctype-czech.c
index ca466c232eb..89eff459215 100644
--- a/strings/ctype-czech.c
+++ b/strings/ctype-czech.c
@@ -23,13 +23,13 @@
solution was needed than the one-to-one conversion table. To
note a few, here is an example of a Czech sorting sequence:
- co < hlaska < hláska < hlava < chlapec < krtek
+ co < hlaska < hlĂĄska < hlava < chlapec < krtek
It because some of the rules are: double char 'ch' is sorted
- between 'h' and 'i'. Accented character 'á' (a with acute) is
+ between 'h' and 'i'. Accented character 'ĂĄ' (a with acute) is
sorted after 'a' and before 'b', but only if the word is
otherwise the same. However, because 's' is sorted before 'v'
- in hlava, the accentness of 'á' is overridden. There are many
+ in hlava, the accentness of 'ĂĄ' is overridden. There are many
more rules.
This file defines functions my_strxfrm and my_strcoll for
@@ -42,8 +42,9 @@
passes, that's why we need four times more space for expanded
string.
- This file also contains the ISO-Latin-2 definitions of
- characters.
+ The non-ASCII literal strings in this file are encoded
+ in the iso-8859-2 / latin-2 character set
+ (https://en.wikipedia.org/wiki/ISO/IEC_8859-2)
Author: (c) 1997--1998 Jan Pazdziora, adelton@fi.muni.cz
Jan Pazdziora has a shared copyright for this code
@@ -112,7 +113,7 @@ static const struct wordvalue doubles[] = {
};
/*
- Unformal description of the algorithm:
+ Informal description of the algorithm:
We walk the string left to right.
@@ -127,7 +128,7 @@ static const struct wordvalue doubles[] = {
End of pass is marked with value 1 on the output.
- For each character, we read it's value from the table.
+ For each character, we read its value from the table.
If the value is ignore (0), we go straight to the next character.
@@ -139,31 +140,6 @@ static const struct wordvalue doubles[] = {
exists behind it, find its value.
We append 0 to the end.
----
- Neformální popis algoritmu:
-
- Procházíme řetězec zleva doprava.
-
- Konec řetězce je předán buď jako parametr, nebo je to *p == 0.
- Toto je ošetřeno makrem IS_END.
-
- Pokud jsme došli na konec řetězce při průchodu 0, nejdeme na
- začátek, ale na uloženou pozici, protože první a druhý průchod
- běží současně.
-
- Konec vstupu (průchodu) označíme na výstupu hodnotou 1.
-
- Pro každý znak řetězce načteme hodnotu z třídící tabulky.
-
- Jde-li o hodnotu ignorovat (0), skočíme ihned na další znak..
-
- Jde-li o hodnotu konec slova (2) a je to průchod 0 nebo 1,
- přeskočíme všechny další 0 -- 2 a prohodíme průchody.
-
- Jde-li o kompozitní znak (255), otestujeme, zda následuje
- správný do dvojice, dohledáme správnou hodnotu.
-
- Na konci připojíme znak 0
*/
#define ADD_TO_RESULT(dest, len, totlen, value) \
@@ -336,24 +312,23 @@ my_strnxfrm_czech(CHARSET_INFO *cs __attribute__((unused)),
/*
- Neformální popis algoritmu:
-
- procházíme řetězec zleva doprava
- konec řetězce poznáme podle *p == 0
- pokud jsme došli na konec řetězce při průchodu 0, nejdeme na
- začátek, ale na uloženou pozici, protože první a druhý
- průchod běží současně
- konec vstupu (průchodu) označíme na výstupu hodnotou 1
-
- načteme hodnotu z třídící tabulky
- jde-li o hodnotu ignorovat (0), skočíme na další průchod
- jde-li o hodnotu konec slova (2) a je to průchod 0 nebo 1,
- přeskočíme všechny další 0 -- 2 a prohodíme
- průchody
- jde-li o kompozitní znak (255), otestujeme, zda následuje
- správný do dvojice, dohledáme správnou hodnotu
-
- na konci připojíme znak 0
+ Informal description of the algorithm:
+
+ we pass the chain from left to right
+ we know the end of the string by *p == 0
+ if we reached the end of the string on transition 0, then we don't go to
+ start, but to the saved position, because the first and second
+ the passage runs concurrently
+ we mark the end of the input (transition) with the value 1 on the output
+
+ then we load the value from the sorting table
+ if the value is ignore (0), we jump to the next pass
+ if the value is the end of the word (2) and it is a 0 or 1 transition,
+ we skip all the other 0 -- 2 and switch transitions
+ if it is a composite character (255), we test whether it follows
+ correct to the pair, we find the correct value
+
+ then we add the character 0 at the end
*/