Obsah / Utility / UNICHAR / Datové struktury a makra
Zdrojový kód: INCLUDE\UTIL\UNICHAR.INC, UTIL\UNICHAR.ASM.
|
Konstanta UNINOASC je implicitní znak nahrazující znak, který nemá ve znakové tabulce odpovídající ekvivalent. Konstanta CHTYPEMAX je maximální hodnota Unicode znaku, která je tabulkami systému Litos podporována. Konstanta NAT_MAXAHASH určuje velikost abecední hashovací tabulky (tj. počet převodních 256-znakových stránek). Konstanta NATSUBPAGES je velikost národnostní hashovací tabulky. Hodnoty konstant jsou odvozeny pomocí ladicího překladu s přepínačemi DEBUG_NATION a DEBUG_UNICHECK.
|
Struktura UNITYPE je popisovač typu jednoho znaku Unicode. První položka, UNI_Flags, je příznaková maska typu znaku. Maska obsahuje právě jeden z příznaků, jejichž seznam následuje za popisovačem struktury. To umožňuje snadné testování množiny typů znaků pomocí masky.
Položka UNI_ASCII je ASCII alternativa znaku v případě, že pro znak nelze nalézt v dané znakové tabulce odpovídající ekvivalent. U znaků latinky s diakritickým znamémkem je ASCII ekvivalentem odpovídající písmeno bez diakritiky. U ostatních znaků je ekvivalentem znak podobný alespoň vzhledově nebo náhradní implicitní znak UNINOASC.
Položka UNI_Change je Unicode kód párového písmene s opačnou velikostí velké/malé písmeno. Pokud nemá znak odpovídající párový doplněk, je položka nastavena na nulu.
|
Makro UNITP je pomocné makro použité v definičních tabulkách s využitím následujících maker, která slouží k zápisu definičních tabulek typů znaků Unicode.
|
UNIINV je oblast neplatných znaků. Parametrem makra je počet znaků.
|
UNICTR je oblast řídicích znaků s neplatným ASCII ekvivalentem. Parametrem makra je počet znaků.
|
UNICTRCH je oblast inicializovaných řídicích znaků. Prvním parametrem makra je číslo prvního řídicího znaku (ASCII hodnota), druhým parametrem je počet znaků. Makro ukládá znaky s rostoucí ASCII hodnotou.
|
UNISPC je oblast znaků mezery. Parametrem makra je počet znaků.
|
UNIMRK je jeden inicializovaný znak značky. Parametrem makra je ASCII ekvivalent značky.
|
UNIMRKNUM je oblast znaků značek s neplatným ASCII ekvivalentem. Parametrem makra je počet znaků.
|
UNISIG je jeden inicializovaný znak symbolu. Parametrem makra je ASCII ekvivalent symbolu.
|
UNISIGNUM je oblast znaků symbolů s neplatným ASCII ekvivalentem. Parametrem makra je počet znaků.
|
UNISIGCH je oblast inicializovaných znaků symbolů. Prvním parametrem makra je ASCII ekvivalent symbolů, druhým parametrem je počet znaků.
|
UNIDIG je jeden inicializovaný znak číslice. Parametrem makra je ASCII ekvivalent číslice.
|
UNIDIGNUM je oblast znaků číslic s neplatným ASCII ekvivalentem. Parametrem makra je počet znaků.
|
UNIDIGCH je oblast inicializovaných znaků číslic. Prvním parametrem makra je ASCII hodnota první číslice, druhým parametrem je počet znaků. Makro ukládá znaky číslic s rostoucí ASCII hodnotou.
|
UNIMOD je jeden inicializovaný znak modifikátoru. Parametrem makra je ASCII ekvivalent modifikátoru.
|
UNIMODNUM je oblast znaků modifiátorů s neplatným ASCII ekvivalentem. Parametrem makra je počet znaků.
|
UNICAP je jeden inicializovaný znak velkého písmene. Prvním parametrem makra je ASCII ekvivalent znaku, druhým parametrem je Unicode kód odpovídajícího malého písmene..
|
UNICAPNUM je oblast znaků velkých písmen s neplatným ASCII ekvivalentem. Parametrem makra je počet znaků.
|
UNISMA je jeden inicializovaný znak malého písmene. Prvním parametrem makra je ASCII ekvivalent znaku, druhým parametrem je Unicode kód odpovídajícího velkého písmene..
|
UNISMANUM je oblast znaků malých písmen s neplatným ASCII ekvivalentem. Parametrem makra je počet znaků.
|
UNISMACH je oblast inicializovaných znaků malých písmen. Prvním parametrem makra je ASCII hodnota prvního písmene, druhým parametrem je počet znaků. Makro ukládá znaky písmen s rostoucí ASCII hodnotou.
|
UNICAPSMA je oblast inicializovaných párů velkých a malých písmen. Prvním parametrem makra je Unicode hodnota prvního velkého písmene, druhým parametrem je počet párů znaků. Makro ukládá páry velkých a malých písmen s rostoucí Unicode hodnotou. Nejdříve je uloženo velké písmeno, okazuje na následující malé písmeno. Jako druhé je uloženo malé písmeno odkazující na předešlé velké písmeno.
|
UNICAPINX je oblast inicializovaných velkých písmen odkazujících na oblast malých písmen. Prvním parametrem makra je Unicode hodnota prvního malého písmene (na které se první velké písmeno odkazuje), druhým parametrem je počet znaků. Makro ukládá velká písmena s rostoucím Unicode odkazem do oblasti malých písmen.
|
UNICAPINXCH je oblast inicializovaných velkých písmen odkazujících na oblast malých písmen a s ASCII ekvivalentem. Prvním parametrem makra je ASCII hodnota prvního písmene, druhým parametrem je Unicode hodnota prvního malého písmene (na které se první velké písmeno odkazuje), třetím parametrem je počet znaků. Makro ukládá velká písmena s rostoucí ASCII hodnotou a rostoucím Unicode odkazem do oblasti malých písmen.
|
UNISMAINX je oblast inicializovaných malých písmen odkazujících na oblast velkých písmen. Prvním parametrem makra je Unicode hodnota prvního velkého písmene (na které se první malé písmeno odkazuje), druhým parametrem je počet znaků. Makro ukládá malá písmena s rostoucím Unicode odkazem do oblasti velkých písmen.
|
UNISMAINXCH je oblast inicializovaných malých písmen odkazujících na oblast velkých písmen a s ASCII ekvivalentem. Prvním parametrem makra je ASCII hodnota prvního písmene, druhým parametrem je Unicode hodnota prvního velkého písmene (na které se první malé písmeno odkazuje), třetím parametrem je počet znaků. Makro ukládá malá písmena s rostoucí ASCII hodnotou a rostoucím Unicode odkazem do oblasti velkých písmen.
|
INVCHTYPE je oblast neplatných tabulek znaků. Parametrem makra je počet tabulek. Jedna tabulka je pole 256 neplatných znaků (UNIINV 256).
|
Makro GETUNITYPE slouží k načtení ukazatele na popisovač typu Unicode znaku. Prvním parametrem makra je jméno vstupního registru s Unicode kódem znaku (povolené registry jsou EAX, EBX, ECX, EDX). Vstupní hodnota Unicode znaku musí být v platném rozsahu 0 až CHTYPEMAX. Druhým parametrem je jméno nejnižšího bajtu vstupního registru (tedy AL, BL, CL, DL). Třetím parametrem je jméno vyššího bajtu vstupního registru (tedy AH, BH, CH, DH). Čtvrtým parametrem je jméno pracovního registru, tedy registru, jehož obsah může být zničen. Může se jednat o vstupní registr, pokud jeho obsah již není dále potřeba. Pátým parametrem je jméno výstupního registru, do kterého bude uložen ukazatel na popisovač UNITYPE.
První instrukce makra připraví do výstupního registru vyšší bajt kódu znaku. Ten je následující instrukcí využit k načtení ukazatele na podtabulku 256 znaků, opět do výstupního registru. Třetí instrukce připraví do přechodného registru nižší bajt kódu znaku. Ten je v poslední instrukci sloučen s ukazatelem do podtabulky do výstupního registru tak, aby ukazoval na položku popisovače typu znaku.
Obsah / Utility / UNICHAR / Datové struktury a makra