]> git.llucax.com Git - z.facultad/75.06/emufs.git/blob - emufs/tipo1_bplus_main.c
* Cambio algunos printf por fprintf(stderr
[z.facultad/75.06/emufs.git] / emufs / tipo1_bplus_main.c
1 #include <stdio.h>
2 #include <string.h>
3 #include "emufs.h"
4 #include "tipo1.h"
5 #include "indices.h"
6 #include "indice_bplus.h"
7
8
9 char* cargar_registro(char* texto_ini,int len_ini, CLAVE clave, char *texto_fin, int len_fin)
10 {
11         char *reg;
12         reg = (char*)malloc(len_ini+sizeof(CLAVE)+len_fin+1); /* +1 para el \0 */
13         memcpy(reg, texto_ini, len_ini);
14         memcpy(reg+len_ini, &clave, sizeof(CLAVE));
15         strcpy(reg+len_ini+sizeof(CLAVE), texto_fin);
16         return reg;
17 }
18
19
20 void imprimir_reg(char* reg, int off, int len)
21 {
22         CLAVE clave;
23         int i;
24         memcpy(&clave, reg+off, sizeof(CLAVE));
25         printf("CLAVE = %d\n", clave.i_clave);
26         printf("REGISTRO =");
27         for(i=0; i<len; i++) printf("%c",reg[i]);
28                 printf("\n");
29         printf("TAMANIO REGISTRO = %d\n\n", len);
30 }
31
32
33
34 int main (int argc,char* argv[])
35 {
36         CLAVE clave;
37         char *texto, *texto2;
38         char *r;
39         EMUFS *emu;
40         int tam_nodo = SIZE_B_PLUS_HEADER + sizeof(CLAVE)*5 + sizeof(CLAVE)*6;
41         EMUFS_REG_SIZE len;
42         int err=0;
43         
44         texto = "PARTE COSNSTANTE, clave =";
45         emu = emufs_crear("test",T1,512,0);
46         emufs_agregar_indice(emu,"claveidx",IND_PRIMARIO,IND_B_PLUS,IDX_INT,strlen(texto),tam_nodo, 0);
47         
48         
49 /*REGISTRO 1*/  
50         clave.i_clave = 77;     
51         texto2="termina el texto re bonito CLAVE = 77";
52         r = cargar_registro(texto, strlen(texto), clave, texto2, strlen(texto2));
53         imprimir_reg(r, strlen(texto), strlen(texto)+strlen(texto2)+sizeof(CLAVE));
54         len = strlen(texto)+strlen(texto2)+sizeof(CLAVE);
55         emufs_tipo1_insertar_ordenado(emu, r, len, &err);
56         PERR("REGISTRO 1 GRABADO");
57         free(r);
58
59 /*REGISTRO 2*/  
60         texto2="termina el texto re bonito pero mas largo CLAVE = 90";
61         clave.i_clave = 90;     
62         r = cargar_registro(texto, strlen(texto), clave, texto2, strlen(texto2));
63         imprimir_reg(r, strlen(texto), strlen(texto)+strlen(texto2)+sizeof(CLAVE));
64         len = strlen(texto)+strlen(texto2)+sizeof(CLAVE);
65         emufs_tipo1_insertar_ordenado(emu, r, len, &err);
66         PERR("REGISTRO 2 GRABADO");
67         free(r);
68
69 /*REGISTRO 3    */
70         texto2="Este es el fin del registro tres, puse tres en numero para que sea mas largo el texto CLAVE = 95";
71         clave.i_clave = 95;     
72         r = cargar_registro(texto, strlen(texto), clave, texto2, strlen(texto2));
73         imprimir_reg(r, strlen(texto), strlen(texto)+strlen(texto2)+sizeof(CLAVE));
74         len = strlen(texto)+strlen(texto2)+sizeof(CLAVE);
75         emufs_tipo1_insertar_ordenado(emu, r, len, &err);
76         PERR("REGISTRO 3 GRABADO");
77         free(r);
78         
79 /*REGISTRO 4    */
80         texto2="REGISTRO CUATRO CLAVE = 99";
81         clave.i_clave = 99;     
82         r = cargar_registro(texto, strlen(texto), clave, texto2, strlen(texto2));
83         imprimir_reg(r, strlen(texto), strlen(texto)+strlen(texto2)+sizeof(CLAVE));
84         len = strlen(texto)+strlen(texto2)+sizeof(CLAVE);
85         emufs_tipo1_insertar_ordenado(emu, r, len, &err);
86         PERR("REGISTRO 4 GRABADO");
87         free(r);
88
89 /*REGISTRO 5    */
90         texto2="el quinto registro tiene un largo promedio como para entrar en el bloque CLAVE = 102";
91         clave.i_clave = 102;    
92         r = cargar_registro(texto, strlen(texto), clave, texto2, strlen(texto2));
93         imprimir_reg(r, strlen(texto), strlen(texto)+strlen(texto2)+sizeof(CLAVE));
94         len = strlen(texto)+strlen(texto2)+sizeof(CLAVE);
95         emufs_tipo1_insertar_ordenado(emu, r, len, &err);
96         PERR("REGISTRO 5 GRABADO");
97         free(r);
98
99 /*REGISTRO 6*/  
100         texto2="El registro 6 no entra CLAVE = 93";
101         clave.i_clave = 93;     
102         r = cargar_registro(texto, strlen(texto), clave, texto2, strlen(texto2));
103         imprimir_reg(r, strlen(texto), strlen(texto)+strlen(texto2)+sizeof(CLAVE));
104         len = strlen(texto)+strlen(texto2)+sizeof(CLAVE);
105         emufs_tipo1_insertar_ordenado(emu, r, len, &err);
106         PERR("REGISTRO 6 GRABADO");
107         free(r);
108
109 /*REGISTRO 7*/  
110         texto2="SETPTIMO REGISTRO, lo inserto donde entre carajo2ooooooooooooooooooCLAVE = 80";
111         clave.i_clave = 80;     
112         r = cargar_registro(texto, strlen(texto), clave, texto2, strlen(texto2));
113         imprimir_reg(r, strlen(texto), strlen(texto)+strlen(texto2)+sizeof(CLAVE));
114         len = strlen(texto)+strlen(texto2)+sizeof(CLAVE);
115         emufs_tipo1_insertar_ordenado(emu, r, len, &err);
116         PERR("REGISTRO 7 GRABADO");
117         free(r);
118
119 clave.i_clave = 93;
120 emufs_tipo1_eliminar_ordenado(emu, clave, &err);
121 clave.i_clave = 99;
122 emufs_tipo1_eliminar_ordenado(emu, clave, &err);
123 clave.i_clave = 95;
124 emufs_tipo1_eliminar_ordenado(emu, clave, &err);
125 clave.i_clave = 77;
126 emufs_tipo1_eliminar_ordenado(emu, clave, &err);
127
128
129 /*
130 for ( i=0; i<10000; i++){
131         texto2="SETPTIMO REGISTRO, lo inserto donde entre carajo2ooooooooooooooooooCLAVE = 80";
132         srandom(i);
133         clave.i_clave = random();       
134         r = cargar_registro(texto, strlen(texto), clave, texto2, strlen(texto2));
135         len = strlen(texto)+strlen(texto2)+sizeof(CLAVE);
136         emufs_tipo1_insertar_ordenado(emu, r, len, &err);
137         free(r);
138 }
139 */
140 emufs_destruir(emu);
141
142         return 0;
143         
144 }