10 typedef unsigned long int Uint32;
13 typedef struct _bs_t_ t_BlockSort;
15 typedef struct _bs_data_t_ {
18 char ord; /* indica si esta ordenada */
20 /* Guardo el puntero al padre */
26 t_BlockSortData *array;
31 /** Inicializa un BlockSorting
33 * \param len Tamaño de página a utilizar
35 t_BlockSort *bs_create(Uint32 len);
37 /** Libera un BlockSorting
39 * \param bs BlockSorting previamente inicializado.
41 void bs_destroy(t_BlockSort *bs);
43 /** Resuelve un BlockSorting
45 * \param in Array de bytes que se pretende procesar.
46 * \param out Array donde guardar la columna resultante.
47 * \param k Puntero donde guardar la posicion del array original.
48 * \oaram leido Tamaño de in (por si el tamaño de in es menor al de la pagina).
50 void bs_solve(char *in, char *out, t_BlockSort *bs, Uint32 *k, Uint32 leido);
52 /** Obtiene el array original a partir de dst y k
54 * \param dst Array donde guardar el array original
55 * \param c Array generado opr bs_solve.
56 * \param k Valor retornado por bs_solve.
57 * \param len Tamaño de c
59 void bs_restore(char *dst, char *c, Uint32 k, Uint32 len);
61 int bs_readblock(FILE *fp, char *data, Uint32 pagesize, int usar_dic);
63 char *bs_finalblock(char *data, Uint32 len, Uint32 *new_size);