From f62c69db84c4f3b567bd5dbd1eede1490b48b534 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Nicol=C3=A1s=20Dimov?= Date: Wed, 12 May 2004 16:21:50 +0000 Subject: [PATCH] =?utf8?q?subo=20algunas=20ideas=20que=20no=20se=20si=20pr?= =?utf8?q?osperaran=20pero=20supongo=20que=20es=20en=20lo=20que=20trabajar?= =?utf8?q?emos=20con=20Alan=20ma=C3=B1ana?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- emufs/b_plus.c | 4 ++++ emufs/b_plus.h | 37 +++++++++++++++++++++++++++++++++++++ emufs/tipo3.c | 14 ++++++++++++++ emufs/tipo3.h | 9 ++++++++- 4 files changed, 63 insertions(+), 1 deletion(-) create mode 100644 emufs/b_plus.c create mode 100644 emufs/b_plus.h diff --git a/emufs/b_plus.c b/emufs/b_plus.c new file mode 100644 index 0000000..51a77e9 --- /dev/null +++ b/emufs/b_plus.c @@ -0,0 +1,4 @@ +/** Arbol B+ */ +#include "b_plus.h" + + diff --git a/emufs/b_plus.h b/emufs/b_plus.h new file mode 100644 index 0000000..0b6d035 --- /dev/null +++ b/emufs/b_plus.h @@ -0,0 +1,37 @@ +#ifndef _B_PLUS_H_ +#define _B_PLUS_H_ +#include +#include +#include "emufs.h" +typedef union _clave_b_plus { + int num; + /*fixme*/ +}CLAVE_B_PLUS; + +typedef struct nodo_b_plus { + int nivel; /** Nivel del nodo */ + int cant; /** Cantidad de items en el nodo */ + int right /** Referencia al nodo derecho */ + int left; /** Referencia al nodo izquierdo */ + CLAVE_B_PLUS clave; /** Clave de busqueda e insercion */ +} NODO_B_PLUS; + +typedef struct nodo_b_plus_hoja { + int nivel; /** Nivel del nodo */ + int cant; /** Cantidad de claves en el nodo */ + int offset; /** Distancia hasta el comiezo de la clave */ + EMUFS_BLOCK_ID bloque; /** Referencia al bloque */ + EMUFS_REG_ID id_reg; /** Identificador del registro */ + EMUFS_FREE free_space; /** Espacio libre del bloque */ + void *dato; /** Cadena contenedora del dato */ +} NODO_B_PLUS_HOJA; + +/** TODO */ +int b_plus_crear(); +int b_plus_insertar(); +int b_plus_eliminar(); +int b_plus_buscar(); +int b_plus_destuir(); + + +#endif diff --git a/emufs/tipo3.c b/emufs/tipo3.c index a1d0f19..c9bddec 100644 --- a/emufs/tipo3.c +++ b/emufs/tipo3.c @@ -547,3 +547,17 @@ void emufs_tipo3_leer_bloque_raw(EMUFS *efs, EMUFS_BLOCK_ID id, char **actual, c } (*size1) = (*size2) = (*size3) = efs->tam_bloque; } + +int emufs_tipo3_insertar_ordenado(EMUFS *emu, void *ptr, CLAVE clave, int *err) +{ + FILE *f; + char f_name[255]; + char *bloque; + + strcpy(f_name, emu->nombre); + strcat(f_name, ".dat"); + + + + return 0; +} diff --git a/emufs/tipo3.h b/emufs/tipo3.h index c47c97f..c4b860e 100644 --- a/emufs/tipo3.h +++ b/emufs/tipo3.h @@ -78,7 +78,7 @@ void* emufs_tipo3_leer_bloque(EMUFS *emu, EMUFS_BLOCK_ID block_id, int *err); * \param ptr Cadena de datos que contiene el registro a grabar. * \param err Codigo de error devuelto en caso de falla. */ -EMUFS_REG_ID emufs_tipo3_grabar_registro(EMUFS *emu, void *ptr, EMUFS_REG_SIZE, int *err); +EMUFS_REG_ID emufs_tipo3_grabar_registro(EMUFS *emu, void *ptr, EMUFS_REG_SIZE reg_size, int *err); /** Graba el bloque apuntado por \c ptr en el archivo * \param emu Esructura para manejar los archivos. @@ -134,4 +134,11 @@ void emufs_tipo3_compactar(EMUFS *emu); */ void emufs_tipo3_leer_bloque_raw(EMUFS *emu, EMUFS_BLOCK_ID block_id, char **actual, char **anterior, char **siguiente, EMUFS_BLOCK_SIZE *size1, EMUFS_BLOCK_SIZE *size2, EMUFS_BLOCK_SIZE *size3); +/** Inserta un registro ordenado segun el Arbol B+ lo indique + * \param emu Esructura para manejar los archivos. + * \param ptr Cadena de datos contenedora del registro. + * \param clave Clave de ordenamiento. + */ +int emufs_tipo3_insertar_ordenado(EMUFS *emu, void *ptr, CLAVE clave, int *err); + #endif /* _EMUFS_TIPO3_H_ */ -- 2.43.0