return 0;
}
+
+/** Inserta una clave en el arbol */
+INDEX_DAT emufs_b_plus_insertar(CLAVE clave)
+{
+ INDEX_DAT insertado;
/** 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 */
/** 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();
(*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)
{
- FILE *f;
- char f_name[255];
+ /*FILE *f;
+ char f_name[255];*/
char *bloque;
- int size;
CLAVE clave_ant;
-
- strcpy(f_name, emu->nombre);
- strcat(f_name, ".dat");
+
bloque = emufs_tipo3_leer_bloque(emu, num_bloque, err);
if (err){
#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