next up previous contents
Next: Parser Up: Date Previous: Colectarea reziduurilor   Cuprins

Hash

Hashul este o structura de date care pastreaza o singura data un sir de caractere ASCII si ofera ulterior posibilitatea unei cautari rapide a sirului. Un hash poate gestiona mai multe spatii de nume (namespace) deodata, astfel incat daca se cauta un string, trebuie precizata si cheia catre spatiul de nume dorit. Odata cu un sir, in hash se introduce si o data proprie acestui sir in spatiul de nume dorit. Data aceea se poate regasi mai apoi.

Exista posibilitatea iterarii tuturor sirurilor dintr-un spatiu de nume sau din intreg hashul, precum si a iterarii tuturor datelor pentru un acelasi sir, din intreg hashul sau dintr-un namespace particular.

Valoarea hash din programele plint este un exemplu de folosire intr-un mod particular al hashului, adica cu o singura data per string, deci nu se permit mai multe siruri. Este usor de detectat aceasta situatie, determinand daca indexul pentru un anumit string in hash e valid sau invalid.

Hashul este folosit si ca loc de stocare a datelor variabilelor din programele sursa, intr-un spatiu de nume al variabilelor automate (pe stiva); datele asociate lor sunt memorii ce contin o singura referinta la variabila. un alt spatiu de nume este create pentru argumentele formale ale procedurilor.

Pluginurile ``static'' si ``class'' adauga la randul lor spatii de nume la hashul programului (deci folosit si de spatiul de nume al variabilelor pe stiva si a argumentelor formale). Primul adauga un spatiu de nume pentru variabilele statice. Pluginul ``class'' adauga cate doua spatii de nume pentru fiecare clasa nou creata, una pentru numele metodelor membru, alta pentru numele datelor membru.


next up previous contents
Next: Parser Up: Date Previous: Colectarea reziduurilor   Cuprins
Sebastian Glita 2002-06-19