X-Git-Url: https://git.llucax.com/z.facultad/75.06/emufs.git/blobdiff_plain/a29c2ba26fc37a7a01e916911f0a77cc9ccd02c5..6b529d1ba8dc30ef7437503567b537568391dc27:/emufs/indice_bplus.h?ds=inline diff --git a/emufs/indice_bplus.h b/emufs/indice_bplus.h index ef6dc69..47e86fd 100644 --- a/emufs/indice_bplus.h +++ b/emufs/indice_bplus.h @@ -1,35 +1,33 @@ -#ifndef _B_PLUS_H_ -#define _B_PLUS_H_ -#include -#include -#include "emufs.h" -#include - -#define SIZE_B_PLUS_HEADER (sizeof(int)*2) - -typedef struct _index_dat_ { - EMUFS_BLOCK_ID num_bloque; - CLAVE clave; -} INDEX_DAT; - -/** 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 nivel; /** Nivel del nodo */ - int cant_claves; /** Cantidad de claves en el nodo */ - CLAVE *claves; /** Claves del nodo */ - int *hijos; /** Para nodo interno, ref nodos sucesores. Nodo hoja, ref a nro bloque en .dat */ -} NODO_B_PLUS; - -/** TODO */ -int emufs_b_plus_crear(INDICE *idx); -int emufs_b_plus_get_bloque(INDICE *idx, INDEX_DAT *query, int num_node); -int emufs_b_plus_insertar(INDICE *idx, INDEX_DAT *query); -int emufs_b_plus_eliminar(INDICE *idx, CLAVE key, int num_node); -int b_plus_existe_clave(INDICE *idx, INDEX_DAT *query, int num_node); -NODO_B_PLUS *b_plus_leer_nodo(INDICE *idx, int num); -int b_plus_buscar_prepost(INDICE *idx, CLAVE key, int num_node, INDEX_DAT *prepostkey, int search_type); -int b_plus_reemplazar_clave(INDICE *idx, CLAVE key, INDEX_DAT replacement); - +#ifndef _B_PLUS_H_ +#define _B_PLUS_H_ +#include +#include +#include "emufs.h" +#include + +#define SIZE_B_PLUS_HEADER (sizeof(int)*2) + +/** 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 nivel; /** Nivel del nodo */ + int cant_claves; /** Cantidad de claves en el nodo */ + CLAVE *claves; /** Claves del nodo */ + int *hijos; /** Para nodo interno, ref nodos sucesores. Nodo hoja, ref a nro bloque en .dat */ +} NODO_B_PLUS; + +/** TODO */ +int emufs_b_plus_crear(INDICE *idx); +int emufs_b_plus_get_bloque(INDICE *idx, INDEX_DAT *query, int num_node); +int emufs_b_plus_insertar(INDICE *idx, INDEX_DAT *query); +int emufs_b_plus_eliminar(INDICE *idx, CLAVE key, int num_node); +int b_plus_existe_clave(INDICE *idx, INDEX_DAT *query, int num_node); +NODO_B_PLUS *b_plus_leer_nodo(INDICE *idx, int num); +int b_plus_buscar_prepost(INDICE *idx, CLAVE key, int num_node, INDEX_DAT *prepostkey, int search_type); +int emufs_b_plus_reemplazar_clave(INDICE *idx, CLAVE key, INDEX_DAT query, int num_node); +CLAVE emufs_b_plus_obtener_menor_clave(INDICE *idx); +CLAVE emufs_b_plus_obtener_mayor_clave(INDICE *idx); +CLAVE emufs_b_plus_obtener_sig_clave(INDICE *idx, CLAVE key); +int b_plus_destruir_nodo(NODO_B_PLUS *nodo); #endif