Obsah / Utility / RBTREE / Inicializace a makra
Zdrojový kód: INCLUDE\UTIL\RBTREE.INC, UTIL\RBTREE.ASM
Inicializace a makra
|
Makro RBTREE slouží k deklaraci inicializovaného prázdného stromu. Na začátku obsahuje inicializovaný prázdný seznam LIST. Za ním následuje bajt s barvou (kořen má černou barvu) a bajt s příznaky (je nastaven příznak RB_ROOT označující kořen stromu). Data RB_DataW nejsou využita a jsou vynulována. Strom neobsahuje žádný uzel, ukazatel na výchozí uzel je tedy nulový a položka počtu uzlů ve stromu je také nulová.
Makro RBTREENODE slouží k deklaraci inicializovaného uzlu stromu. Na začátku obsahuje inicializovaný prázdný seznam LIST. Za ním následuje bajt s barvou (přednastavena červená barva) a bajt s příznaky (není nastaven příznak RB_ROOT, jedná se o uzel). Data RB_DataW nejsou využita a jsou vynulována. Ukazatel RBN_Parent je vynulovaný jako neplatný. Není připojen žádný další uzel, položky RBN_Left a RBN_Right jsou proto také nulové.
Makro SETRED nastaví červenou barvu uzlu. Makro SETBLK nastaví černou barvu. Makro CMPRED testuje, zda má uzel červenou barvu. Pokud ano, nastaví se příznak ZF (tj. stav ZY). Makro CMPBLK testuje, zda má uzel černou barvu. Pokud ano, nastaví se příznak ZF (tj. stav ZY). Parametrem všech uvedených čtyř maker je ukazatel na uzel.
Funkce RBTreeInit inicializuje kořen RB-stromu, jehož ukazatel je funkci předán v registru EDX. Nejdříve se inicializuje seznam položek na prázdný seznam. Jednou instrukcí se nastaví současně barva (kořen má černou barvu, RB_BLACK), příznaky (kořen má nastaven příznak RB_ROOT) a vynuluje se položka dat RB_DataW. Další dvě instrukce vynulují ukazatel na první položku stromu a čítač uzlů ve stromu.
Obsah / Utility / RBTREE / Inicializace a makra