X-Git-Url: https://git.llucax.com/z.facultad/75.06/emufs.git/blobdiff_plain/015bf5db523d05c490afd35f94cb8a4df2002a56..8ed872279800f018aa1dfa690d646428d68820c1:/emufs/tipo1.h diff --git a/emufs/tipo1.h b/emufs/tipo1.h index 29bec7a..4e4deb3 100644 --- a/emufs/tipo1.h +++ b/emufs/tipo1.h @@ -39,21 +39,28 @@ #define _EMUFS_TIPO1_H_ #include "emufs.h" +#include "indice_bplus.h" -/** Inicializa un EMUFS para poder ser utilizada como un archivo tipo1. */ -int emufs_tipo1_inicializar(EMUFS*); +/** Inicializa un EMUFS para poder ser utilizado como un archivo tipo1. + * + * \param efs Estructura a inicializar. + * \return Código de error o EMUFS_OK si no hubo error. + */ +int emufs_tipo1_inicializar(EMUFS* efs); + +int emufs_tipo4_inicializar(EMUFS* efs); /** Lee el registro \c reg_id y devolviendo su contenido. */ -void* emufs_tipo1_leer_registro(EMUFS*, EMUFS_REG_ID, EMUFS_REG_SIZE*, int*); +void* emufs_tipo1_leer_registro(EMUFS*, CLAVE, EMUFS_REG_SIZE*, int*); /** Graba un registro en el archivo. */ EMUFS_REG_ID emufs_tipo1_grabar_registro(EMUFS*, void*, EMUFS_REG_SIZE, int*); /** Borra un registro de del archivo. */ -int emufs_tipo1_borrar_registro(EMUFS*, EMUFS_REG_ID); +int emufs_tipo1_borrar_registro(EMUFS*, CLAVE, INDICE_DATO); /** Método para modificar un registro. */ -EMUFS_REG_ID emufs_tipo1_modificar_registro(EMUFS *emu, EMUFS_REG_ID, void*, EMUFS_REG_SIZE, int*); +EMUFS_REG_ID emufs_tipo1_modificar_registro(EMUFS *emu, CLAVE k, void*, EMUFS_REG_SIZE, int*, INDICE_DATO); /** Método para leer un registro con todo su bloque asociado. */ void* emufs_tipo1_leer_registro_raw(EMUFS *emu, EMUFS_REG_ID id, EMUFS_REG_SIZE *size, int *pos); @@ -61,4 +68,23 @@ void* emufs_tipo1_leer_registro_raw(EMUFS *emu, EMUFS_REG_ID id, EMUFS_REG_SIZE /** Obtiene estádisticas del archivo */ EMUFS_Estadisticas emufs_tipo1_leer_estadisticas(EMUFS*); +/** Método para compactar el archivo reorganizándolo físicamente */ +void emufs_tipo1_compactar(EMUFS*); + +/** Lee un bloque y su contexto, en bruto (con cabeceras). */ +void emufs_tipo1_leer_bloque_raw(EMUFS *efs, EMUFS_BLOCK_ID id, char **actual, + char **anterior, char **siguiente, EMUFS_BLOCK_SIZE *size1, + EMUFS_BLOCK_SIZE *size2, EMUFS_BLOCK_SIZE *size3); + +/** Inserta un registro en el archivo, ordenado por clave principal*/ +EMUFS_REG_ID emufs_tipo1_insertar_ordenado(EMUFS *emu, void *ptr, EMUFS_REG_SIZE size, int *err); + +/** Elimina un registro de clave CLAVE del archivo con ayuda del arbol B+*/ +int emufs_tipo1_eliminar_ordenado(EMUFS *emu, CLAVE clave, INDICE_DATO dato); + +void *emufs_tipo1_leer_registro_plus(EMUFS *emu, CLAVE clave, EMUFS_REG_SIZE *size, int *err); + +EMUFS_REG_ID emufs_tipo1_modificar_registro_plus(EMUFS *emu, CLAVE k, void*, EMUFS_REG_SIZE, int*, INDICE_DATO); + +B_PLUS_KEYBUCKET *emufs_tipo1_obtener_claves_raw(EMUFS *emu, int num_bloque); #endif /* _EMUFS_TIPO1_H_ */