X-Git-Url: https://git.llucax.com/z.facultad/75.06/emufs.git/blobdiff_plain/f62c69db84c4f3b567bd5dbd1eede1490b48b534..7bef9a814dacda99e7bff6d2374b76a48bc13002:/emufs/b_plus.h diff --git a/emufs/b_plus.h b/emufs/b_plus.h index 0b6d035..b498be6 100644 --- a/emufs/b_plus.h +++ b/emufs/b_plus.h @@ -3,35 +3,27 @@ #include #include #include "emufs.h" -typedef union _clave_b_plus { - int num; - /*fixme*/ -}CLAVE_B_PLUS; +#define SIZE_B_PLUS_HEADER (sizeof(int)*3) + +/** Estructura que define un nodo B+. Para los nodos hojas, el ultimo valor de hijo, serĂ¡ el nro + * de nodo con el que se encadena el actual. (Lista de nodos a nivel hoja. Sequence Set). + */ typedef struct nodo_b_plus { + int es_hoja; int nivel; /** Nivel del nodo */ - int cant; /** Cantidad de items en el nodo */ - int right /** Referencia al nodo derecho */ - int left; /** Referencia al nodo izquierdo */ - CLAVE_B_PLUS clave; /** Clave de busqueda e insercion */ + int cant_claves; /** Cantidad de claves en el nodo */ + int *claves; /** Claves del nodo */ + int *hijos; /** Para nodo interno, ref nodos sucesores. Nodo hoja, ref a nro bloque en .dat */ } NODO_B_PLUS; -typedef struct nodo_b_plus_hoja { - int nivel; /** Nivel del nodo */ - int cant; /** Cantidad de claves en el nodo */ - int offset; /** Distancia hasta el comiezo de la clave */ - EMUFS_BLOCK_ID bloque; /** Referencia al bloque */ - EMUFS_REG_ID id_reg; /** Identificador del registro */ - EMUFS_FREE free_space; /** Espacio libre del bloque */ - void *dato; /** Cadena contenedora del dato */ -} NODO_B_PLUS_HOJA; /** TODO */ -int b_plus_crear(); -int b_plus_insertar(); -int b_plus_eliminar(); -int b_plus_buscar(); -int b_plus_destuir(); +int emufs_b_plus_crear(INDICE *idx); +int emufs_b_plus_insertar(); +int emufs_b_plus_eliminar(); +int emufs_b_plus_buscar(); +int emufs_b_plus_destuir(); #endif