X-Git-Url: https://git.llucax.com/z.facultad/75.06/emufs.git/blobdiff_plain/f8ff8588ebc1bc31ede57fc99fb988be80d7c1b6..5565477433b377796908c649d62b17f83adbcb3a:/emufs/b_plus.h diff --git a/emufs/b_plus.h b/emufs/b_plus.h index 16544d1..838fd97 100644 --- a/emufs/b_plus.h +++ b/emufs/b_plus.h @@ -3,30 +3,46 @@ #include #include #include "emufs.h" -typedef union _clave_b_plus { - int num; - /*fixme*/ -}CLAVE_B_PLUS; - + +#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 es_hoja; + +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 nodo_b_plus { int nivel; /** Nivel del nodo */ - int cant; /** Cantidad de items en el 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 b_plus_crear(); -int b_plus_insertar(); -int b_plus_eliminar(); -int b_plus_buscar(); -int b_plus_destuir(); +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(); #endif