X-Git-Url: https://git.llucax.com/z.facultad/75.06/emufs.git/blobdiff_plain/ee8568afe20289bebd04904350c3f2563fc90e4a..fe7cadabd775ddd59714749b7dfe31a578c6ecca:/emufs/tipo1.h diff --git a/emufs/tipo1.h b/emufs/tipo1.h index 113a66d..5411905 100644 --- a/emufs/tipo1.h +++ b/emufs/tipo1.h @@ -39,25 +39,50 @@ #define _EMUFS_TIPO1_H_ #include "emufs.h" -#include "did.h" -#include "idx.h" -#include "fsc.h" +#include "indice_bplus.h" -int emufs_tipo1_leer_registro(EMUFS *, int , void *, unsigned long); +/** 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*, CLAVE, EMUFS_REG_SIZE*, int*); + +/** Graba un registro en el archivo. */ +EMUFS_REG_ID emufs_tipo1_grabar_registro(EMUFS*, void*, EMUFS_REG_SIZE, int*); -int emufs_tipo1_leer_bloque(EMUFS *, int , void *); +/** Borra un registro de del archivo. */ +int emufs_tipo1_borrar_registro(EMUFS*, CLAVE, INDICE_DATO); -int emufs_tipo1_grabar_registro(EMUFS *, void *, unsigned long ); +/** Método para modificar un registro. */ +EMUFS_REG_ID emufs_tipo1_modificar_registro(EMUFS *emu, CLAVE k, void*, EMUFS_REG_SIZE, int*, INDICE_DATO); -int emufs_tipo1_grabar_bloque(EMUFS *, void *, int); +/** 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); -int emufs_tipo1_get_id(EMUFS *); +/** Obtiene estádisticas del archivo */ +EMUFS_Estadisticas emufs_tipo1_leer_estadisticas(EMUFS*); -int emufs_tipo1_buscar_registro(EMUFS *, int); +/** Método para compactar el archivo reorganizándolo físicamente */ +void emufs_tipo1_compactar(EMUFS*); -int emufs_tipo1_buscar_lugar(EMUFS *, unsigned long , int *); +/** 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); -int emufs_tipo1_borrar_registro(EMUFS*, int, unsigned long); +/** 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); #endif /* _EMUFS_TIPO1_H_ */