]> git.llucax.com Git - z.facultad/75.06/emufs.git/commitdiff
subo algunas ideas que no se si prosperaran pero supongo que es en lo que trabajaremo...
authorNicolás Dimov <ndimov@gmail.com>
Wed, 12 May 2004 16:21:50 +0000 (16:21 +0000)
committerNicolás Dimov <ndimov@gmail.com>
Wed, 12 May 2004 16:21:50 +0000 (16:21 +0000)
emufs/b_plus.c [new file with mode: 0644]
emufs/b_plus.h [new file with mode: 0644]
emufs/tipo3.c
emufs/tipo3.h

diff --git a/emufs/b_plus.c b/emufs/b_plus.c
new file mode 100644 (file)
index 0000000..51a77e9
--- /dev/null
@@ -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 (file)
index 0000000..0b6d035
--- /dev/null
@@ -0,0 +1,37 @@
+#ifndef _B_PLUS_H_
+#define _B_PLUS_H_
+#include <stdio.h>
+#include <stdlib.h>
+#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
index a1d0f193928742e938f0492ebee2f817118b9d7d..c9bddec0a1792ba7eb64cef272fac51894f58dfb 100644 (file)
@@ -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;
+}
index c47c97f5dccdf91c9a5d58e93bd2179b6cdc6964..c4b860eda1d45a2472ca10c4e54477bddd48322b 100644 (file)
@@ -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_ */