]> git.llucax.com Git - z.facultad/75.06/emufs.git/blobdiff - emufs_gui/tree_viewer.c
Ordenamiento externo integrado a la GUI y funcionando 10 puntos :-)
[z.facultad/75.06/emufs.git] / emufs_gui / tree_viewer.c
index 7f83b26a74092bf009a1f386048e379f19a4da4a..0c6e9683aceb37b2595fdbb02d31d4ccb9d7fe75 100644 (file)
@@ -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)
 {
@@ -46,12 +68,7 @@ int emufs_indice_b_ver(INDICE *idx, WINDOW *win, int w, int h, int id)
                waddstr(win, tmp);
                fprintf(stderr, "CANT DE CLAVES = %d\n", header.cant);
                for(i=0; i<header.cant; i++) {
-                       sprintf(tmp, "(%d)%d",
-                                       claves[i].clave.i_clave,
-       /*                              claves[i].dato.id,
-                                       claves[i].dato.bloque,*/
-                                       claves[i].hijo_derecho
-                       );
+                       sprint_ind(idx, tmp, claves[i]);
                        posibles_proximos[i] = claves[i].hijo_derecho;
                        waddstr(win, tmp);
                }