From 73a6ae0f1a0f50a482d164f24d5894105b4aea9f Mon Sep 17 00:00:00 2001 From: Alan Kennedy Date: Thu, 27 May 2004 02:33:43 +0000 Subject: [PATCH] Tipo1.h y Tipo3.h, cambio de include. indices.c, comienzo acomplamiento, y indice_bplus.X fixeo un tipo mal puesto. Ahora por lo menos compila, no va a andar mi test, pues todavia no termino de acoplarlo del todo el Bplus a INDICE, pero toy en eso... --- emufs/Makefile | 4 ++-- emufs/b_plus_test.c | 7 +++---- emufs/indice_bplus.c | 35 ++++++++++++++++++----------------- emufs/indice_bplus.h | 8 ++++---- emufs/indices.c | 9 +++++++-- emufs/tipo1.h | 2 +- emufs/tipo3.h | 2 +- 7 files changed, 36 insertions(+), 31 deletions(-) diff --git a/emufs/Makefile b/emufs/Makefile index 77b05c0..740b798 100644 --- a/emufs/Makefile +++ b/emufs/Makefile @@ -3,7 +3,7 @@ LDFLAGS= -lm -lmenu -lncurses -lxml2 #CFLAGS=-Wall -g -pedantic -DDEBUG #LDFLAGS=-lm -EMUFS_COMMON=emufs.o tipo1.o tipo2.o tipo3.o idx.o did.o fsc.o common.o indices.o indice_b.o b_plus.o +EMUFS_COMMON=emufs.o tipo1.o tipo2.o tipo3.o idx.o did.o fsc.o common.o indices.o indice_b.o indice_bplus.o TARGETS=libemufs.a tipo1_main tipo2_main tipo3_main b_plus_test @@ -15,7 +15,7 @@ tipo2_main: tipo2_main.o $(EMUFS_COMMON) tipo3_main: tipo3_main.o $(EMUFS_COMMON) -b_plus_test: b_plus_test.o b_plus.o +b_plus_test: b_plus_test.o $(EMUFS_COMMON) #b_plus_test: b_plus_test.o b_plus.o indices.o emufs.o diff --git a/emufs/b_plus_test.c b/emufs/b_plus_test.c index 28280b7..2acaee5 100644 --- a/emufs/b_plus_test.c +++ b/emufs/b_plus_test.c @@ -1,5 +1,6 @@ -#include "b_plus.h" +#include "indices.h" +#include "indice_bplus.h" int main(int argc, char* argv[]) { @@ -10,10 +11,8 @@ int exitcode = 0; /*NODO_B_PLUS *memnodo;*/ /* Creamos un handler EMUFS, luego un Indice B+ y testing... */ -INDEXSPECS indice; +INDICE indice; indice.tam_bloque = SIZE_B_PLUS_HEADER + sizeof(int)*5 + sizeof(int)*6; -indice.size_claves = (indice.tam_bloque - SIZE_B_PLUS_HEADER - sizeof(int))/2; -indice.size_hijos = indice.size_claves + sizeof(int); indice.filename = "idxbplus_primary.idx"; printf("\nTam Nodo: %i Size Claves: %i Size_Hijos: %i\n",indice.tam_bloque,indice.size_claves,indice.size_hijos); emufs_b_plus_crear(&indice); diff --git a/emufs/indice_bplus.c b/emufs/indice_bplus.c index a30058b..570cc09 100644 --- a/emufs/indice_bplus.c +++ b/emufs/indice_bplus.c @@ -1,19 +1,20 @@ /** Arbol B+ */ -#include "b_plus.h" +#include "indices.h" +#include "indice_bplus.h" /**#*#*#*#*#**#*#*#*#*#* Private prototypes*#*#*#*#*#**#*#*#*#*#**#*#*#*/ -int b_plus_grabar_nodo(INDEXSPECS *idx, NODO_B_PLUS *nodo, int num_node); -NODO_B_PLUS *b_plus_leer_nodo(INDEXSPECS *idx, int num_node); -NODO_B_PLUS *b_plus_crearnodo(INDEXSPECS *idx); +int b_plus_grabar_nodo(INDICE *idx, NODO_B_PLUS *nodo, int num_node); +NODO_B_PLUS *b_plus_leer_nodo(INDICE *idx, int num_node); +NODO_B_PLUS *b_plus_crearnodo(INDICE *idx); int b_plus_destruir_nodo(NODO_B_PLUS *nodo); -int b_plus_split_child(INDEXSPECS *idx, int numparent, NODO_B_PLUS *parent, int ithchild, NODO_B_PLUS *fullnode); -int b_plus_insert_nonfull(INDEXSPECS *idx, NODO_B_PLUS *nodo, int num_nodo, INDEX_DAT *query); -int b_plus_insertar(INDEXSPECS *idx, INDEX_DAT *query); -int b_plus_get_num_nodo(INDEXSPECS *idx); +int b_plus_split_child(INDICE *idx, int numparent, NODO_B_PLUS *parent, int ithchild, NODO_B_PLUS *fullnode); +int b_plus_insert_nonfull(INDICE *idx, NODO_B_PLUS *nodo, int num_nodo, INDEX_DAT *query); +int b_plus_insertar(INDICE *idx, INDEX_DAT *query); +int b_plus_get_num_nodo(INDICE *idx); /**#*#*#*#*#**#*#*#*#*#*FIN PROTOTYPES*#*#*#*#*#**#*#*#*#*#**#*#*#*#*#*/ /** Crea un nuevo nodo y lo inicializa */ -NODO_B_PLUS *b_plus_crearnodo(INDEX *idx) { +NODO_B_PLUS *b_plus_crearnodo(INDICE *idx) { NODO_B_PLUS *nodo = (NODO_B_PLUS*)malloc(sizeof(NODO_B_PLUS)); if (nodo == NULL) return NULL; @@ -30,7 +31,7 @@ NODO_B_PLUS *b_plus_crearnodo(INDEX *idx) { } /** Crea el archivo indice B+ */ -int emufs_b_plus_crear(INDEXSPECS *idx) { +int emufs_b_plus_crear(INDICE *idx) { FILE *fp; NODO_B_PLUS *raiz; @@ -63,7 +64,7 @@ int emufs_b_plus_crear(INDEXSPECS *idx) { * return -1 - No hay clave, inserto clave de nuevo bloques * return 1 - Hubo falla de lectura de un nodo, Abortar */ -int emufs_b_plus_get_bloque(INDEX *idx, INDEX_DAT *query, int num_node) { +int emufs_b_plus_get_bloque(INDICE *idx, INDEX_DAT *query, int num_node) { NODO_B_PLUS *nodo; nodo = b_plus_leer_nodo(idx,num_node); @@ -99,7 +100,7 @@ int emufs_b_plus_get_bloque(INDEX *idx, INDEX_DAT *query, int num_node) { } } -NODO_B_PLUS *b_plus_leer_nodo(INDEX *idx, int num_node) { +NODO_B_PLUS *b_plus_leer_nodo(INDICE *idx, int num_node) { /*int i = 0;*/ FILE *fp; @@ -148,7 +149,7 @@ NODO_B_PLUS *b_plus_leer_nodo(INDEX *idx, int num_node) { } -int b_plus_grabar_nodo(INDEX *idx, NODO_B_PLUS *nodo, int num_node) +int b_plus_grabar_nodo(INDICE *idx, NODO_B_PLUS *nodo, int num_node) { FILE *fp; @@ -172,7 +173,7 @@ int b_plus_destruir_nodo(NODO_B_PLUS *nodo) return 0; } -int b_plus_split_child(INDEX *idx, int numparent, NODO_B_PLUS *parent, int ithchild, NODO_B_PLUS *fullnode) +int b_plus_split_child(INDICE *idx, int numparent, NODO_B_PLUS *parent, int ithchild, NODO_B_PLUS *fullnode) { /* locals */ int minclaves = ceil(idx->size_hijos/sizeof(int)/2)-1; @@ -226,7 +227,7 @@ int b_plus_split_child(INDEX *idx, int numparent, NODO_B_PLUS *parent, int ithch } -int b_plus_insert_nonfull(INDEX *idx, NODO_B_PLUS *nodo, int num_nodo, INDEX_DAT *query) +int b_plus_insert_nonfull(INDICE *idx, NODO_B_PLUS *nodo, int num_nodo, INDEX_DAT *query) { int i, num_nodo_hijo; NODO_B_PLUS *hijo; @@ -263,7 +264,7 @@ int b_plus_insert_nonfull(INDEX *idx, NODO_B_PLUS *nodo, int num_nodo, INDEX_DAT return 0; } -int emufs_b_plus_insertar(INDEX *idx, INDEX_DAT *query) +int emufs_b_plus_insertar(INDICE *idx, INDEX_DAT *query) { NODO_B_PLUS *raiz; @@ -287,7 +288,7 @@ int emufs_b_plus_insertar(INDEX *idx, INDEX_DAT *query) return 0; } -int b_plus_get_num_nodo(INDEX *idx) +int b_plus_get_num_nodo(INDICE *idx) { FILE *fp; int num; diff --git a/emufs/indice_bplus.h b/emufs/indice_bplus.h index 7e88a2c..bb823e2 100644 --- a/emufs/indice_bplus.h +++ b/emufs/indice_bplus.h @@ -23,12 +23,12 @@ typedef struct nodo_b_plus { } NODO_B_PLUS; /** TODO */ -int emufs_b_plus_crear(INDEX *idx); -int emufs_b_plus_get_bloque(INDEX *idx, INDEX_DAT *query, int num_node); -int emufs_b_plus_insertar(INDEX *idx, INDEX_DAT *query); +int emufs_b_plus_crear(INDICE *idx); +int emufs_b_plus_get_bloque(INDICE *idx, INDEX_DAT *query, int num_node); +int emufs_b_plus_insertar(INDICE *idx, INDEX_DAT *query); int emufs_b_plus_actualizar_nodo(INDEX_DAT *dataset); int emufs_b_plus_buscar(); int emufs_b_plus_destuir(); -NODO_B_PLUS *b_plus_leer_nodo(INDEX *idx, int num); +NODO_B_PLUS *b_plus_leer_nodo(INDICE *idx, int num); #endif diff --git a/emufs/indices.c b/emufs/indices.c index 2fcf1c4..18e3327 100644 --- a/emufs/indices.c +++ b/emufs/indices.c @@ -2,7 +2,7 @@ #include "indices.h" #include "emufs.h" #include "indice_b.h" -#include "common.h" +#include "indice_bplus.h" INDICE *emufs_indice_crear(EMUFS *emu, char *nombre, INDICE_FUNCION funcion, INDICE_TIPO tipo, INDICE_TIPO_DATO tipo_dato, unsigned int offset, unsigned int tam_bloque) { @@ -50,6 +50,8 @@ INDICE *emufs_indice_crear(EMUFS *emu, char *nombre, INDICE_FUNCION funcion, IND tmp->offset = offset; tmp->sig = NULL; + tmp->size_claves = 0; + tmp->size_hijos = 0; switch (tipo) { case IND_B: @@ -68,7 +70,10 @@ INDICE *emufs_indice_crear(EMUFS *emu, char *nombre, INDICE_FUNCION funcion, IND case IND_B_PLUS: /* llenar metodos */ PERR("Creando indice con Arbol B+"); - PERR("AÚN NO IMPLEMENTADO!!!!!!!!"); + tmp->size_claves = (tmp->tam_bloque - SIZE_B_PLUS_HEADER - sizeof(int))/2; /* Fix sizeof(CLAVE?) */ + tmp->size_hijos = tmp->size_claves + sizeof(int); + emufs_b_plus_crear(tmp); + PERR("AÚN NO IMPLEMENTADO DEL TODO!!!!!!!!"); break; } diff --git a/emufs/tipo1.h b/emufs/tipo1.h index 9ebb2da..211ee51 100644 --- a/emufs/tipo1.h +++ b/emufs/tipo1.h @@ -39,7 +39,7 @@ #define _EMUFS_TIPO1_H_ #include "emufs.h" -#include "b_plus.h" +#include "indice_bplus.h" /** Inicializa un EMUFS para poder ser utilizado como un archivo tipo1. * diff --git a/emufs/tipo3.h b/emufs/tipo3.h index 88be270..cc005dd 100644 --- a/emufs/tipo3.h +++ b/emufs/tipo3.h @@ -46,7 +46,7 @@ #include "did.h" #include "idx.h" #include "fsc.h" -#include "b_plus.h" +#include "indice_bplus.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 -- 2.43.0