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