]> git.llucax.com Git - z.facultad/75.06/emufs.git/blobdiff - emufs/tipo3.c
preparo un poco la cancha para empezar a insertar registros en el archivo de datos...
[z.facultad/75.06/emufs.git] / emufs / tipo3.c
index a76725c33d4bbca3b47fbc69b2a4767debd2dc87..7333d7203ba6682c701396f9cad7026958d46bc5 100644 (file)
@@ -585,7 +585,47 @@ 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;
 }
 
-int emufs_tipo3_insertar_ordenado(EMUFS *emu, void *ptr, CLAVE clave, int offset, EMUFS_BLOCK_ID num_bloque, int *err)
+CLAVE obtener_clave(void *ptr, INDICE *ind)
 {
 {
+       CLAVE c;
+       switch (ind->tipo_dato) {
+               case IDX_INT: memcpy(&c, ptr+ind->offset, sizeof(int));
+                       break;
+               case IDX_FLOAT: memcpy(&c, ptr+ind->offset, sizeof(float));
+                       break;
+               case IDX_STRING: /*no hago nada pero saco el warning*/
+       }                       
+       return c;
+}
+
+int emufs_tipo3_insertar_ordenado(EMUFS *emu, void *ptr, INDICE *indice, int *err)
+{
+       #ifdef ESTO_NO_ANDA_TODAVIA
+       CLAVE clave, clave_aux;
+       EMUFS_BLOCK_ID num_bloque = get_new_block_number(emu); /*implementar esto*/
+       INDEX_DAT query;
+       char *bloque, *new_bloque, *registro;
+       
+       /*le asigno un posible numero de bloque para el caso en que no encuentre donde meterlo*/
+       query.num_bloque = num_bloque;  
+       /*saco la clave del stream*/
+       query.clave = obtener_clave(ptr, indice);
+       /*mando a buscar en el arbol el bloque correspondiente a esa clave*/
+       indice->emufs_b_plus_get_bloque(ind, &query);
+       /*en query->num_bloque tengo el bloque donde debo meter el registro*/
+       
+       /*cargo el bloque*/
+       bloque = emufs_tipo3_leer_bloque(emu, query.num_bloque, err);
+       if (err != 0){
+               PERR("NO SE PUDO LEER EL BLOQUE");
+               return -1;
+       }
+       
+       /*debo insertar el reg en el bloque en forma ordenada*/
+       /*si es el menor de todos tengo que cambiar el ancla en el arbol*/
+       /*si no entra, tengo que insertar una nueva clave en el arbol y separar los registros en 2 bloques*/
+       
+       
+       #endif ESTO_NO_ANDA_TODAVIA
        return 0;
 }
        return 0;
 }