]> git.llucax.com Git - z.facultad/75.06/jacu.git/blob - src/blocksorting/bs.h
Se implementa zerogrouping sin uso de buffer (caracter a caracter). Esto mejora
[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 struct _bs_t_ t_BlockSort;
10
11 typedef struct _bs_data_t_ {
12         unsigned long int pos_inicial;
13         unsigned long int pos_final;
14         char ord; /* indica si esta ordenada */
15
16         /* Guardo el puntero al padre */
17         t_BlockSort *bs;        
18 } t_BlockSortData;
19
20 struct _bs_t_ {
21         char *data;
22         t_BlockSortData *array;
23         unsigned long int len;
24 };
25
26 /** Inicializa un BlockSorting
27  *
28  *  \param len Tamaño de página a utilizar
29  */
30 t_BlockSort *bs_create(unsigned long int len);
31
32 /** Libera un BlockSorting
33  *
34  *  \param bs BlockSorting previamente inicializado.
35  */
36 void bs_destroy(t_BlockSort *bs);
37
38 /** Resuelve un BlockSorting
39  *
40  *  \param in Array de bytes que se pretende procesar.
41  *  \param out Array donde guardar la columna resultante.
42  *  \param k Puntero donde guardar la posicion del array original.
43  *  \oaram leido Tamaño de in (por si el tamaño de in es menor al de la pagina).
44  */
45 void bs_solve(char *in, char *out, t_BlockSort *bs, unsigned long int *k, unsigned int leido);
46
47 /** Obtiene el array original a partir de dst y k
48  *
49  *  \param dst Array donde guardar el array original
50  *  \param c Array generado opr bs_solve.
51  *  \param k Valor retornado por bs_solve.
52  *  \param len Tamaño de c
53  */
54 void bs_restore(char *dst, char *c, unsigned long int k, unsigned long int len);
55
56 #endif
57