]> git.llucax.com Git - z.facultad/75.06/jacu.git/blob - src/blocksorting/bs.h
el _z estaba alocando mas memoria de la que necesitaba, pero creo que eso no producia...
[z.facultad/75.06/jacu.git] / src / blocksorting / bs.h
1
2 #ifndef _BS_H_
3 #define _BS_H_
4
5 #include <string.h>
6 #include <stdlib.h>
7 #include <stdio.h>
8
9 typedef unsigned long int Uint32;
10
11 typedef struct _bs_t_ t_BlockSort;
12
13 typedef struct _bs_data_t_ {
14         Uint32 pos_inicial;
15         Uint32 pos_final;
16         char ord; /* indica si esta ordenada */
17
18         /* Guardo el puntero al padre */
19         t_BlockSort *bs;        
20 } t_BlockSortData;
21
22 struct _bs_t_ {
23         char *data;
24         t_BlockSortData *array;
25         Uint32 len;
26 };
27
28
29 /** Inicializa un BlockSorting
30  *
31  *  \param len Tamaño de página a utilizar
32  */
33 t_BlockSort *bs_create(Uint32 len);
34
35 /** Libera un BlockSorting
36  *
37  *  \param bs BlockSorting previamente inicializado.
38  */
39 void bs_destroy(t_BlockSort *bs);
40
41 /** Resuelve un BlockSorting
42  *
43  *  \param in Array de bytes que se pretende procesar.
44  *  \param out Array donde guardar la columna resultante.
45  *  \param k Puntero donde guardar la posicion del array original.
46  *  \oaram leido Tamaño de in (por si el tamaño de in es menor al de la pagina).
47  */
48 void bs_solve(char *in, char *out, t_BlockSort *bs, Uint32 *k, Uint32 leido);
49
50 /** Obtiene el array original a partir de dst y k
51  *
52  *  \param dst Array donde guardar el array original
53  *  \param c Array generado opr bs_solve.
54  *  \param k Valor retornado por bs_solve.
55  *  \param len Tamaño de c
56  */
57 void bs_restore(char *dst, char *c, Uint32 k, Uint32 len);
58
59 #endif
60