X-Git-Url: https://git.llucax.com/z.facultad/75.06/emufs.git/blobdiff_plain/5dc47423d04c58723e11732f71e73f687e715759..613cc40875512c05124f15dae55e9bb7767c1ea2:/emufs/b_plus.h diff --git a/emufs/b_plus.h b/emufs/b_plus.h index 838fd97..8a78100 100644 --- a/emufs/b_plus.h +++ b/emufs/b_plus.h @@ -1,48 +1,43 @@ -#ifndef _B_PLUS_H_ -#define _B_PLUS_H_ -#include -#include -#include "emufs.h" - -#define SIZE_B_PLUS_HEADER (sizeof(int)*2) - +#ifndef _B_PLUS_H_ +#define _B_PLUS_H_ +#include +#include +#include "emufs.h" +#include + +#define SIZE_B_PLUS_HEADER (sizeof(int)*2) +#define INDEXSPECS INDICE /** 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 _indexspecs_ { - unsigned int tam_bloque; - unsigned int size_claves; - unsigned int size_hijos; - char *filename; -} INDEXSPECS; - -typedef struct _index_dat_ { - EMUFS_BLOCK_ID num_bloque; - EMUFS_BLOCK_ID num_nuevo_bloque; - CLAVE clave; -} INDEX_DAT; - + */ +/* +typedef struct _indexspecs_ { + unsigned int tam_bloque; + unsigned int size_claves; + unsigned int size_hijos; + char *filename; +} INDEXSPECS; +*/ +typedef struct _index_dat_ { + EMUFS_BLOCK_ID num_bloque; + CLAVE clave; +} INDEX_DAT; + typedef struct nodo_b_plus { - int nivel; /** Nivel del nodo */ + int nivel; /** Nivel del nodo */ 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; - - -/** TODO */ -int emufs_b_plus_crear(INDEXSPECS *idx); -int emufs_b_plus_get_bloque(INDEXSPECS *idx, INDEX_DAT *dataset); -int emufs_b_plus_actualizar_nodo(INDEX_DAT *dataset); - -/** inserta una clave en el arbol y devuelve en dataset->num_bloque el - bloque donde se insertara en el .dat*/ -int emufs_b_plus_insertar_clave(INDEX_DAT *dataset); - - -int emufs_b_plus_buscar(); -int emufs_b_plus_destuir(); - - + 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(INDEXSPECS *idx); +int emufs_b_plus_get_bloque(INDEXSPECS *idx, INDEX_DAT *query, int num_node); +int emufs_b_plus_insertar(INDEXSPECS *idx, INDEX_DAT *query); +int emufs_b_plus_actualizar_nodo(INDEX_DAT *dataset); +int emufs_b_plus_buscar(); +int emufs_b_plus_destuir(); +NODO_B_PLUS *b_plus_leer_nodo(INDEXSPECS *idx, int num); + #endif