]> git.llucax.com Git - z.facultad/75.06/emufs.git/blob - emufs/indice_b.h
* Empieza el baile de usar indices desde la gui
[z.facultad/75.06/emufs.git] / emufs / indice_b.h
1
2
3 #ifndef _ARBOL_B_
4 #define _ARBOL_B_ 1
5
6 #include <stdio.h>
7 #include <stdlib.h>
8
9 #include "common.h"
10 #include "indices.h"
11
12 typedef struct _b_nodo_header_ {
13         int nivel; /* Numero de nivel. Si es hoja debe ser 0 */
14         int cant; /* Cantidad de items en el nivel */
15         int padre;
16         
17         /* Nodo al que debo ir si la clave a insertar/buscar/borrar
18          * es menor que la primera del nodo
19          */
20         int hijo_izquierdo;
21 } B_NodoHeader;
22
23 typedef struct _b_nodo_entry_ {
24         /* FIXME usar tipo CLAVE */
25         CLAVE clave;
26         /* Si el nivel del nodo == 0, quiere decir que es el 
27          * bloque del archivo de datos donde esta el registro.
28          * Si el nivel != 0, es el siguiente bloque dentro 
29          * del archivo de indice donde buscar
30          */
31         INDICE_DATO dato;
32 } B_NodoEntry;
33
34 /* Crea un arbol */
35 void emufs_indice_b_crear(INDICE *idx);
36
37 /* Inserta un par clave-ubicacion */
38 int emufs_indice_b_insertar(INDICE *idx, CLAVE clave, INDICE_DATO dato);
39
40 /* Busca una clave, retorna ubicacion o -1 si no existe */
41 INDICE_DATO emufs_indice_b_buscar(INDICE *idx, CLAVE clave);
42
43 INDICE_DATO *emufs_indice_b_buscar_muchos(INDICE *idx, CLAVE clave, int *cant);
44
45 #endif
46