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[1000];
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 fprintf(stderr, "CANT DE CLAVES = %d\n", header.cant);
48 for(i=0; i<header.cant; i++) {
49 sprintf(tmp, "(%d)%d",
50 claves[i].clave.i_clave,
52 claves[i].dato.bloque,*/
53 claves[i].hijo_derecho
55 posibles_proximos[i] = claves[i].hijo_derecho;
58 posibles_proximos[i++] = header.hijo_izquierdo;
62 form = form_crear(win);
63 form_agregar_widget(form, INPUT, "Ver (-1 para volver)", 4, "");
64 form_ejecutar(form, 0, h-2);
65 proximo = form_obtener_valor_int(form, "Ver (-1 para volver)");
67 /* Verifico que proximo sea un hijo */
68 /* +1 por el hijo izquierdo */
70 for(i=0; i<header.cant+1; i++) {
71 if (posibles_proximos[i] == proximo) break;
74 if (i>=(header.cant+1)) proximo = id; /* Si no es un nodo valido, lo anulo*/
77 /* Solo voy a otro nodo si no soy el mismo */
81 emufs_indice_b_ver(idx, win, w, h, proximo);
83 } while (proximo != -1);