Project restructuring [PART.2]

This commit is contained in:
Yehonal
2016-08-23 12:11:46 +02:00
parent 54bd100573
commit 0355064321
141 changed files with 250 additions and 243 deletions

View File

@@ -21,13 +21,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<EFBFBD>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 '<EFBFBD>' (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 '<EFBFBD>' is overridden. There are many
more rules.
This file defines functions my_strxfrm and my_strcoll for
@@ -138,30 +138,30 @@ static struct wordvalue doubles[] = {
We append 0 to the end.
---
Neformální popis algoritmu:
Neform<EFBFBD>ln<EFBFBD> popis algoritmu:
Procházíme øetìzec zleva doprava.
Proch<EFBFBD>z<EFBFBD>me <EFBFBD>et<EFBFBD>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.
Konec <EFBFBD>et<EFBFBD>zce je p<EFBFBD>ed<EFBFBD>n bu<EFBFBD> jako parametr, nebo je to *p == 0.
Toto je o<EFBFBD>et<EFBFBD>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ì.
Pokud jsme do<EFBFBD>li na konec <EFBFBD>et<EFBFBD>zce p<EFBFBD>i pr<EFBFBD>chodu 0, nejdeme na
za<EFBFBD><EFBFBD>tek, ale na ulo<EFBFBD>enou pozici, proto<EFBFBD>e prvn<EFBFBD> a druh<EFBFBD> pr<EFBFBD>chod
b<EFBFBD><EFBFBD><EFBFBD> sou<EFBFBD>asn<EFBFBD>.
Konec vstupu (prùchodu) oznaèíme na výstupu hodnotou 1.
Konec vstupu (pr<EFBFBD>chodu) ozna<EFBFBD><EFBFBD>me na v<EFBFBD>stupu hodnotou 1.
Pro ka¾dý znak øetìzce naèteme hodnotu z tøídící tabulky.
Pro ka<EFBFBD>d<EFBFBD> znak <EFBFBD>et<EFBFBD>zce na<EFBFBD>teme hodnotu z t<EFBFBD><EFBFBD>d<EFBFBD>c<EFBFBD> tabulky.
Jde-li o hodnotu ignorovat (0), skoèíme ihned na dal¹í znak..
Jde-li o hodnotu ignorovat (0), sko<EFBFBD><EFBFBD>me ihned na dal<EFBFBD><EFBFBD> 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 hodnotu konec slova (2) a je to pr<EFBFBD>chod 0 nebo 1,
p<EFBFBD>esko<EFBFBD><EFBFBD>me v<EFBFBD>echny dal<EFBFBD><EFBFBD> 0 -- 2 a prohod<EFBFBD>me pr<EFBFBD>chody.
Jde-li o kompozitní znak (255), otestujeme, zda následuje
správný do dvojice, dohledáme správnou hodnotu.
Jde-li o kompozitn<EFBFBD> znak (255), otestujeme, zda n<EFBFBD>sleduje
spr<EFBFBD>vn<EFBFBD> do dvojice, dohled<EFBFBD>me spr<EFBFBD>vnou hodnotu.
Na konci pøipojíme znak 0
Na konci p<EFBFBD>ipoj<EFBFBD>me znak 0
*/
#define ADD_TO_RESULT(dest, len, totlen, value) \
@@ -315,24 +315,24 @@ static size_t my_strnxfrm_czech(CHARSET_INFO *cs __attribute__((unused)),
/*
Neformální popis algoritmu:
Neform<EFBFBD>ln<EFBFBD> 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
proch<EFBFBD>z<EFBFBD>me <EFBFBD>et<EFBFBD>zec zleva doprava
konec <EFBFBD>et<EFBFBD>zce pozn<EFBFBD>me podle *p == 0
pokud jsme do<EFBFBD>li na konec <EFBFBD>et<EFBFBD>zce p<EFBFBD>i pr<EFBFBD>chodu 0, nejdeme na
za<EFBFBD><EFBFBD>tek, ale na ulo<EFBFBD>enou pozici, proto<EFBFBD>e prvn<EFBFBD> a druh<EFBFBD>
pr<EFBFBD>chod b<EFBFBD><EFBFBD><EFBFBD> sou<EFBFBD>asn<EFBFBD>
konec vstupu (pr<EFBFBD>chodu) ozna<EFBFBD><EFBFBD>me na v<EFBFBD>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<EFBFBD>teme hodnotu z t<EFBFBD><EFBFBD>d<EFBFBD>c<EFBFBD> tabulky
jde-li o hodnotu ignorovat (0), sko<EFBFBD><EFBFBD>me na dal<EFBFBD><EFBFBD> pr<EFBFBD>chod
jde-li o hodnotu konec slova (2) a je to pr<EFBFBD>chod 0 nebo 1,
p<EFBFBD>esko<EFBFBD><EFBFBD>me v<EFBFBD>echny dal<EFBFBD><EFBFBD> 0 -- 2 a prohod<EFBFBD>me
pr<EFBFBD>chody
jde-li o kompozitn<EFBFBD> znak (255), otestujeme, zda n<EFBFBD>sleduje
spr<EFBFBD>vn<EFBFBD> do dvojice, dohled<EFBFBD>me spr<EFBFBD>vnou hodnotu
na konci pøipojíme znak 0
na konci p<EFBFBD>ipoj<EFBFBD>me znak 0
*/

View File

@@ -456,19 +456,19 @@ CHARSET_INFO my_charset_latin1=
*
* The modern sort order is used, where:
*
* 'ä' -> "ae"
* 'ö' -> "oe"
* 'ü' -> "ue"
* 'ß' -> "ss"
* '<EFBFBD>' -> "ae"
* '<EFBFBD>' -> "oe"
* '<EFBFBD>' -> "ue"
* '<EFBFBD>' -> "ss"
*/
/*
* This is a simple latin1 mapping table, which maps all accented
* characters to their non-accented equivalents. Note: in this
* table, 'ä' is mapped to 'A', 'ÿ' is mapped to 'Y', etc. - all
* table, '<EFBFBD>' is mapped to 'A', '<EFBFBD>' is mapped to 'Y', etc. - all
* accented characters except the following are treated the same way.
* Ü, ü, Ö, ö, Ä, ä
* <EFBFBD>, <EFBFBD>, <EFBFBD>, <EFBFBD>, <EFBFBD>, <EFBFBD>
*/
static uchar sort_order_latin1_de[] = {
@@ -534,7 +534,7 @@ uchar combo2map[]={
my_strnxfrm_latin_de() on both strings and compared the result strings.
This means that:
Ä must also matches ÁE and Aè, because my_strxn_frm_latin_de() will convert
<EFBFBD> must also matches <EFBFBD>E and A<EFBFBD>, because my_strxn_frm_latin_de() will convert
both to AE.
The other option would be to not do any accent removal in
@@ -681,7 +681,7 @@ void my_hash_sort_latin1_de(CHARSET_INFO *cs __attribute__((unused)),
const uchar *end;
/*
Remove end space. We have to do this to be able to compare
'AE' and 'Ä' as identical
'AE' and '<EFBFBD>' as identical
*/
end= skip_trailing_space(key, len);

View File

@@ -30,7 +30,7 @@
integer that determines the number of significant digits in a
particular radix R, where R is either 2 or 10. S is a non-negative
integer. Every value of an exact numeric type of scale S is of the
form n*10^{-S}, where n is an integer such that ­-R^P <= n <= R^P.
form n*10^{-S}, where n is an integer such that <EFBFBD>-R^P <= n <= R^P.
[...]