2 #include "tree_viewer.h"
4 int emufs_indice_b_ver(INDICE *idx, WINDOW *win, int w, int h, int id)
13 int posibles_proximos[100];
16 if (id == -1) return 0;
18 memset(posibles_proximos, -1, sizeof(int)*100);
21 mvwaddstr(win, y++, 0, "Nombre : ");
22 waddstr(win, idx->nombre);
25 nodo = b_leer_nodo(idx, id);
26 b_leer_header(nodo, &header);
27 claves = b_leer_claves(nodo, &header);
29 mvwaddstr(win, y++, 0, "Nodo Nro ");
30 sprintf(tmp, "%d", id);
32 mvwaddstr(win, y++, 0, "Nivel = ");
33 sprintf(tmp, "%d", header.nivel);
35 mvwaddstr(win, y++, 0, "Cantidad de hijo = ");
36 sprintf(tmp, "%d", header.cant);
38 mvwaddstr(win, y++, 0, "Padre = ");
39 sprintf(tmp, "%d", header.padre);
42 /* Muestro las claves */
43 mvwaddstr(win, y++, 0, "Claves");
45 sprintf(tmp, "%d", header.hijo_izquierdo);
47 for(i=0; i<header.cant; i++) {
48 sprintf(tmp, "(%d)%d",
49 claves[i].clave.i_clave,
51 claves[i].dato.bloque,*/
52 claves[i].hijo_derecho
54 posibles_proximos[i] = claves[i].hijo_derecho;
57 posibles_proximos[i++] = header.hijo_izquierdo;
61 form = form_crear(win);
62 form_agregar_widget(form, INPUT, "Ver (-1 para volver)", 4, "");
63 form_ejecutar(form, 0, h-2);
64 proximo = form_obtener_valor_int(form, "Ver (-1 para volver)");
66 /* Verifico que proximo sea un hijo */
67 /* +1 por el hijo izquierdo */
69 for(i=0; i<header.cant+1; i++) {
70 if (posibles_proximos[i] == proximo) break;
73 if (i>=(header.cant+1)) proximo = id; /* Si no es un nodo valido, lo anulo*/
76 /* Solo voy a otro nodo si no soy el mismo */
80 emufs_indice_b_ver(idx, win, w, h, proximo);
82 } while (proximo != -1);