#include "tipo1.h"
#include "indices.h"
#include "indice_bplus.h"
+int no_esta(int num, int* vec, int len)
+{
+ int i, res;
+ res = -1;
+ for(i=0; i<len; i++)
+ if ( vec[i] == num ) res = 0;
+ return res;
+}
+
+
+void ver_arbol(EMUFS *emu)
+{
+ NODO_B_PLUS *nodo;
+ int num_nodo, num_nodo_ant,i, tecla;
+ num_nodo =0;
+
+ while ( tecla != -1){
+ nodo = b_plus_leer_nodo(emu->indices, num_nodo);
+ printf("NODO: (hijo)clave\n");
+ printf("Nivel: %d\n", nodo->nivel);
+ for (i=0; i<nodo->cant_claves; i++)
+ printf("(%d)%d", nodo->hijos[i], nodo->claves[i]);
+ printf("(%d)",nodo->hijos[i]);
+ printf("\n");
+ printf("Ingrese proximo nodo a explorar, o -1 para salir: ");
+ scanf("%d",&tecla);
+ printf("%d\n",tecla);
+ if ( tecla!=0 &&((no_esta(tecla, nodo->hijos, nodo->cant_claves+1) == -1) || (nodo->nivel==0)) ){
+ num_nodo = num_nodo_ant;
+ printf("El nodo no existe o es nivel cero\n");
+ }
+ else num_nodo_ant = num_nodo = tecla;
+ b_plus_destruir_nodo(nodo);
+ }
+}
char* cargar_registro(char* texto_ini,int len_ini, CLAVE clave, char *texto_fin, int len_fin)
int tam_nodo = SIZE_B_PLUS_HEADER + sizeof(CLAVE)*5 + sizeof(CLAVE)*6;
EMUFS_REG_SIZE len, size;
int err=0;
+ INDICE_DATO dato;
texto = "PARTE COSNSTANTE, clave =";
- emu = emufs_crear("test",T1,512,0);
+ emu = emufs_crear("test",T4,512,0);
emufs_agregar_indice(emu,"claveidx",IND_PRIMARIO,IND_B_PLUS,IDX_INT,strlen(texto),tam_nodo, 0);
emufs_tipo1_eliminar_ordenado(emu, clave, &err);
clave.i_clave = 95;
emufs_tipo1_eliminar_ordenado(emu, clave, &err);
-clave.i_clave = 77;
-emufs_tipo1_eliminar_ordenado(emu, clave, &err);
*/
+
+clave.i_clave = 77;
+emufs_tipo1_eliminar_ordenado(emu, clave, dato);
+
+
PERR("LEYENDO REGISTRO");
-clave.i_clave = 99;
+clave.i_clave = 80;
r = emufs_tipo1_leer_registro_plus(emu, clave, &size, &err);
imprimir_reg(r, strlen(texto), size);
+free(r);
/*
for ( i=0; i<10000; i++){
free(r);
}
*/
+
+ver_arbol(emu);
emufs_destruir(emu);
return 0;