X-Git-Url: https://git.llucax.com/z.facultad/75.06/emufs.git/blobdiff_plain/ddc964cd151aae4713a5d2d658da986df7cd3441..7ebf0a1c567c187b7819379c45755cf5ef8dac90:/emufs_gui/tree_viewer.c?ds=sidebyside diff --git a/emufs_gui/tree_viewer.c b/emufs_gui/tree_viewer.c index 3dc30d5..4163d6b 100644 --- a/emufs_gui/tree_viewer.c +++ b/emufs_gui/tree_viewer.c @@ -1,5 +1,27 @@ #include "tree_viewer.h" +#include "emufs.h" + +void sprint_ind(INDICE *idx, char *dst, B_NodoEntry e) +{ + int error; + char * leido; + EMUFS_REG_SIZE dummy; + + switch (idx->tipo_dato) { + case IDX_INT: + sprintf(dst, "(%d)%d", e.clave.i_clave, e.hijo_derecho); + break; + case IDX_FLOAT: + sprintf(dst, "(%.2f)%d", e.clave.f_clave, e.hijo_derecho); + break; + case IDX_STRING: + error = 0; + leido = idx->emu_string->leer_registro(idx->emu_string, e.clave, &dummy, &error); + sprintf(dst, "(%s)%d", leido, e.hijo_derecho); + free(leido); + } +} int emufs_indice_b_ver(INDICE *idx, WINDOW *win, int w, int h, int id) { @@ -10,10 +32,12 @@ int emufs_indice_b_ver(INDICE *idx, WINDOW *win, int w, int h, int id) char *nodo; char tmp[100]; int i; + int posibles_proximos[1000]; int proximo; if (id == -1) return 0; + memset(posibles_proximos, -1, sizeof(int)*100); do { y = 0; mvwaddstr(win, y++, 0, "Nombre : "); @@ -43,14 +67,11 @@ int emufs_indice_b_ver(INDICE *idx, WINDOW *win, int w, int h, int id) sprintf(tmp, "%d", header.hijo_izquierdo); waddstr(win, tmp); for(i=0; i=(header.cant+1)) proximo = id; /* Si no es un nodo valido, lo anulo*/ + } + + /* Solo voy a otro nodo si no soy el mismo */ + if (proximo != id) { + werase(win); + wrefresh(win); + emufs_indice_b_ver(idx, win, w, h, proximo); + } } while (proximo != -1); werase(win); wrefresh(win); + return 0; }