]> git.llucax.com Git - z.facultad/75.06/emufs.git/commitdiff
arranca B+, se va a poner aspera la cosa
authorNicolás Dimov <ndimov@gmail.com>
Sun, 16 May 2004 22:57:30 +0000 (22:57 +0000)
committerNicolás Dimov <ndimov@gmail.com>
Sun, 16 May 2004 22:57:30 +0000 (22:57 +0000)
emufs/b_plus.c
emufs/b_plus.h
emufs/tipo3.c
emufs/tipo3.h

index 052b1122d179ce53d226672ed7ecbc919c1f0c47..7e2fa16c832dba97b8a0d9f9f4d49ec20c04043e 100644 (file)
@@ -55,3 +55,8 @@ int emufs_b_plus_crear(INDICE *idx) {
        
        return 0;
 }
        
        return 0;
 }
+
+/** Inserta una clave en el arbol */
+INDEX_DAT emufs_b_plus_insertar(CLAVE clave)
+{
+       INDEX_DAT insertado;
index b498be6b7bcf1ba978cb0abbf7c482fd98b9b505..fd96060d7dd2bfc36517187c7faddf1ce2aa6d3c 100644 (file)
@@ -9,6 +9,12 @@
 /** Estructura que define un nodo B+. Para los nodos hojas, el ultimo valor de hijo, será el nro\r
  *  de nodo con el que se encadena el actual. (Lista de nodos a nivel hoja. Sequence Set).\r
  */
 /** Estructura que define un nodo B+. Para los nodos hojas, el ultimo valor de hijo, será el nro\r
  *  de nodo con el que se encadena el actual. (Lista de nodos a nivel hoja. Sequence Set).\r
  */
+
+typedef struct _index_dat_ {
+       EMUFS_BLOCK_ID num_bloque;
+       CLAVE clave;
+} INDEX_DAT;
+
 typedef struct nodo_b_plus {
        int es_hoja;\r
        int nivel; /** Nivel del nodo */
 typedef struct nodo_b_plus {
        int es_hoja;\r
        int nivel; /** Nivel del nodo */
@@ -20,8 +26,10 @@ typedef struct nodo_b_plus {
 
 /** TODO */
 int emufs_b_plus_crear(INDICE *idx);
 
 /** TODO */
 int emufs_b_plus_crear(INDICE *idx);
-int emufs_b_plus_insertar();
-int emufs_b_plus_eliminar();
+INDEX_DAT emufs_b_plus_insertar(CLAVE clave);
+INDEX_DAT emufs_b_plus_actualizar_nodo(CLAVE clave, EMUFS_BLOCK_ID num_bloque);
+
+int emufs_b_plus_eliminar(CLAVE clave);
 int emufs_b_plus_buscar();
 int emufs_b_plus_destuir();
 
 int emufs_b_plus_buscar();
 int emufs_b_plus_destuir();
 
index ac7342937860c57efcc06d465d4a9e77c8bbe67b..10d6f33eb3d64a71a717de605f67bb280932cffd 100644 (file)
@@ -575,16 +575,27 @@ void emufs_tipo3_leer_bloque_raw(EMUFS *efs, EMUFS_BLOCK_ID id, char **actual, c
        (*size1) = (*size2) = (*size3) = efs->tam_bloque;
 }
 
        (*size1) = (*size2) = (*size3) = efs->tam_bloque;
 }
 
+CLAVE obtener_clave(void *ptr, INDICE indice)
+{
+       CLAVE clave;
+       
+       switch ( indice->tipo_dato ){
+               case IDX_FLOAT: 
+                       memcpy(&clave, ptr+indice->offset, sizeof(float));
+               break;
+               case IDX_INT:
+                       memcpy(&clave, ptr+indice->offset, sizeof(int));
+       }
+       return clave;
+}
+
 int emufs_tipo3_insertar_ordenado(EMUFS *emu, void *ptr, CLAVE clave, int offset, EMUFS_BLOCK_ID num_bloque, int *err)
 {
 int emufs_tipo3_insertar_ordenado(EMUFS *emu, void *ptr, CLAVE clave, int offset, EMUFS_BLOCK_ID num_bloque, int *err)
 {
-       FILE *f;
-       char f_name[255];
+       /*FILE *f;
+       char f_name[255];*/
        char *bloque;
        char *bloque;
-       int size;
        CLAVE clave_ant;
        CLAVE clave_ant;
-       
-       strcpy(f_name, emu->nombre);
-       strcat(f_name, ".dat");
+
        
        bloque = emufs_tipo3_leer_bloque(emu, num_bloque, err);
        if (err){
        
        bloque = emufs_tipo3_leer_bloque(emu, num_bloque, err);
        if (err){
index b141782c6e8632d9e72fa60d67f80e7052c6847d..9e0311f688f51dd59690811bb32e0127661a02ff 100644 (file)
@@ -46,6 +46,7 @@
 #include "did.h"
 #include "idx.h"
 #include "fsc.h"
 #include "did.h"
 #include "idx.h"
 #include "fsc.h"
+#include "b_plus.h"
 
 /** Devuelve un puntero con la memoria reservada que contiene al registro solicitado
   * por el segundo parámetro \c ID, y almacena en \c reg_size el tamaño del
 
 /** Devuelve un puntero con la memoria reservada que contiene al registro solicitado
   * por el segundo parámetro \c ID, y almacena en \c reg_size el tamaño del