X-Git-Url: https://git.llucax.com/z.facultad/75.06/emufs.git/blobdiff_plain/b932dafe953d51be79e564f461dd5c43a618f431..c94ab535ad347b075be2a6a9d7cef2d2f245bb16:/emufs/indice_b.c?ds=sidebyside diff --git a/emufs/indice_b.c b/emufs/indice_b.c index 0e99b7e..38576ae 100644 --- a/emufs/indice_b.c +++ b/emufs/indice_b.c @@ -8,18 +8,35 @@ #define MIN_HIJOS(x) (CANT_HIJOS(x)/2) /* Auxiliares */ +/* Graba el nodo en el archivo */ static void b_grabar_nodo(INDICE *idx, int id, char *data); +/* Da el ID del proximo nodo a poder ser utilizado */ static int b_ultimo_id(INDICE *idx); +/* Lee un nodo desde el archivo */ static char *b_leer_nodo(INDICE *idx, int id); +/* Crea un nodo en el archivo y lo retorna. En i se pone el ID asignado */ static char *b_crear_nodo(INDICE *idx, int *i); +/* Lee el header de un nodo y lo guarda en header */ static void b_leer_header(char *src, B_NodoHeader *header); +/* Actualiza el header de un nodo desde header */ static void b_actualizar_header(char *src, B_NodoHeader *header); +/* Retorna el array de claves del nodo (esta data modifica directamente el bloque + * por eso no es necesario usar un actualizar_claves + */ static B_NodoEntry *b_leer_claves(char *src, B_NodoHeader *header); +/* Inserta una clave en el nodo de manera iterativa */ static void b_insertar_en_nodo(INDICE *idx, CLAVE clave, INDICE_DATO dato, int nodo_id, char *nodo, int hijo1, int hijo2); +/* Esto es para asegurar el orden de los hijos luego de partir, en el caso de que + * lo que se parta sea la raiz + */ static int b_elegir_izquierdo(INDICE *idx, int a, int b); +/* Borra una clave del arbol */ static void b_borrar_clave(INDICE *idx, char *nodo, int nodo_id, CLAVE k); +/* Le pide al hermano derecho del nodo una clave cuando se eliminan claves */ static void b_pasar_clave_derecha(char *, int, char *, int, char *, int, int); +/* Le pide al hermano izquierdo una clavfe cuando se eliminan claves */ static void b_pasar_clave_izquierda(char *, int, char *, int, char *, int, int); +/* Junta 2 nodos y hace uno solo */ static void b_fundir_nodo(char *, int, char *, int, char *, int, int); void emufs_indice_b_crear(INDICE *idx)