]> git.llucax.com Git - z.facultad/75.06/emufs.git/blob - emufs/indices.c
Agregar en arbol B andando 10 puntos
[z.facultad/75.06/emufs.git] / emufs / indices.c
1
2 #include "indices.h"
3 #include "emufs.h"
4
5 INDICE *emufs_indice_crear(EMUFS *emu, char *nombre, INDICE_TIPO tipo, INDICE_TIPO_DATO tipo_dato, unsigned int offset)
6 {
7         int len;
8         INDICE *tmp;
9         tmp = (INDICE *)malloc(sizeof(INDICE));
10         if (tmp == NULL) return NULL;
11
12         len = strlen(emu->nombre);
13         len += strlen(nombre);
14
15         tmp->filename = (char *)malloc(sizeof(char)*(len+6));
16         strcpy(tmp->filename, emu->nombre);
17         strcat(tmp->filename, "_");
18         strcat(tmp->filename, nombre);
19         strcat(tmp->filename, ".idx");
20
21         tmp->nombre = (char *)malloc(sizeof(char)*(strlen(nombre)+1));
22         strcpy(tmp->nombre, nombre);
23
24         tmp->tipo = tipo;
25         tmp->tipo_dato = tipo_dato;
26
27         tmp->offset = offset;
28         tmp->sig = NULL;
29
30         switch (tipo) {
31                 case IND_B_MAS:
32                         /* llenar metodos */
33                 case IND_B_ASC:
34                         /* llenar metodos */
35                         break;
36         }
37
38         return tmp;
39 }
40
41 void emufs_indice_destruir(EMUFS *emu, INDICE *i)
42 {
43         /* TODO Sacar el indice de la lista en EMUFS */
44         
45         free(i->filename);
46         free(i->nombre);
47         free(i);
48 }
49
50
51 CLAVE emufs_indice_obtenet_clave(INDICE *idx, char *data)
52 {
53         CLAVE k;
54         switch (idx->tipo_dato) {
55                 case IDX_FLOAT:
56                         k.f_clave= *((float *)(data+idx->offset));
57                 break;
58                 case IDX_INT:
59                         k.i_clave = *((int *)(data+idx->offset));
60         }
61
62         return k;
63 }
64