9 typedef struct _bs_t_ t_BlockSort;
11 typedef struct _bs_data_t_ {
12 unsigned long int pos_inicial;
13 unsigned long int pos_final;
14 unsigned long int pos_orden;
15 char ord; /* indica si esta ordenada */
17 /* Guardo el puntero al padre */
23 t_BlockSortData *array;
24 unsigned long int *ord;
25 unsigned long int len;
28 /** Inicializa un BlockSorting
30 * \param len Tamaño de página a utilizar
32 t_BlockSort *bs_create(unsigned long int len);
34 /** Libera un BlockSorting
36 * \param bs BlockSorting previamente inicializado.
38 void bs_destroy(t_BlockSort *bs);
40 /** Resuelve un BlockSorting
42 * \param in Array de bytes que se pretende procesar.
43 * \param out Array donde guardar la columna resultante.
44 * \param k Puntero donde guardar la posicion del array original.
45 * \oaram leido Tamaño de in (por si el tamaño de in es menor al de la pagina).
47 void bs_solve(char *in, char *out, t_BlockSort *bs, unsigned long int *k, unsigned int leido);
49 /** Obtiene el array original a partir de dst y k
51 * \param dst Array donde guardar el array original
52 * \param c Array generado opr bs_solve.
53 * \param k Valor retornado por bs_solve.
54 * \param len Tamaño de c
56 void bs_restore(char *dst, char *c, unsigned long int k, unsigned long int len);