(root)/
glib-2.79.0/
girepository/
cmph/
compressed_seq.h
       1  #ifndef __CMPH_COMPRESSED_SEQ_H__
       2  #define __CMPH_COMPRESSED_SEQ_H__
       3  
       4  #include"select.h"
       5  
       6  struct _compressed_seq_t
       7  {
       8  	cmph_uint32 n; // number of values stored in store_table
       9  	// The length in bits of each value is decomposed into two compnents: the lg(n) MSBs are stored in rank_select data structure
      10  	// the remaining LSBs are stored in a table of n cells, each one of rem_r bits.
      11  	cmph_uint32 rem_r;
      12  	cmph_uint32 total_length; // total length in bits of stored_table
      13  	select_t sel;
      14  	cmph_uint32 * length_rems;
      15  	cmph_uint32 * store_table;
      16  };
      17  
      18  typedef struct _compressed_seq_t compressed_seq_t;
      19  
      20  /** \fn void compressed_seq_init(compressed_seq_t * cs);
      21   *  \brief Initialize a compressed sequence structure.
      22   *  \param cs points to the compressed sequence structure to be initialized
      23   */
      24  void compressed_seq_init(compressed_seq_t * cs);
      25  
      26  /** \fn void compressed_seq_destroy(compressed_seq_t * cs);
      27   *  \brief Destroy a compressed sequence given as input.
      28   *  \param cs points to the compressed sequence structure to be destroyed
      29   */
      30  void compressed_seq_destroy(compressed_seq_t * cs);
      31  
      32  /** \fn void compressed_seq_generate(compressed_seq_t * cs, cmph_uint32 * vals_table, cmph_uint32 n);
      33   *  \brief Generate a compressed sequence from an input array with n values.
      34   *  \param cs points to the compressed sequence structure
      35   *  \param vals_table poiter to the array given as input
      36   *  \param n number of values in @see vals_table
      37   */
      38  void compressed_seq_generate(compressed_seq_t * cs, cmph_uint32 * vals_table, cmph_uint32 n);
      39  
      40  
      41  /** \fn cmph_uint32 compressed_seq_query(compressed_seq_t * cs, cmph_uint32 idx);
      42   *  \brief Returns the value stored at index @see idx of the compressed sequence structure.
      43   *  \param cs points to the compressed sequence structure
      44   *  \param idx index to retrieve the value from
      45   *  \return the value stored at index @see idx of the compressed sequence structure
      46   */
      47  cmph_uint32 compressed_seq_query(compressed_seq_t * cs, cmph_uint32 idx);
      48  
      49  
      50  /** \fn cmph_uint32 compressed_seq_get_space_usage(compressed_seq_t * cs);
      51   *  \brief Returns amount of space (in bits) to store the compressed sequence.
      52   *  \param cs points to the compressed sequence structure
      53   *  \return the amount of space (in bits) to store @see cs
      54   */
      55  cmph_uint32 compressed_seq_get_space_usage(compressed_seq_t * cs);
      56  
      57  void compressed_seq_dump(compressed_seq_t * cs, char ** buf, cmph_uint32 * buflen);
      58  
      59  void compressed_seq_load(compressed_seq_t * cs, const char * buf, cmph_uint32 buflen);
      60  
      61  
      62  /** \fn void compressed_seq_pack(compressed_seq_t *cs, void *cs_packed);
      63   *  \brief Support the ability to pack a compressed sequence structure into a preallocated contiguous memory space pointed by cs_packed.
      64   *  \param cs points to the compressed sequence structure
      65   *  \param cs_packed pointer to the contiguous memory area used to store the compressed sequence structure. The size of cs_packed must be at least @see compressed_seq_packed_size 
      66   */
      67  void compressed_seq_pack(compressed_seq_t *cs, void *cs_packed);
      68  
      69  /** \fn cmph_uint32 compressed_seq_packed_size(compressed_seq_t *cs);
      70   *  \brief Return the amount of space needed to pack a compressed sequence structure.
      71   *  \return the size of the packed compressed sequence structure or zero for failures
      72   */ 
      73  cmph_uint32 compressed_seq_packed_size(compressed_seq_t *cs);
      74  
      75  
      76  /** \fn cmph_uint32 compressed_seq_query_packed(void * cs_packed, cmph_uint32 idx);
      77   *  \brief Returns the value stored at index @see idx of the packed compressed sequence structure.
      78   *  \param cs_packed is a pointer to a contiguous memory area
      79   *  \param idx is the index to retrieve the value from
      80   *  \return the value stored at index @see idx of the packed compressed sequence structure
      81   */
      82  cmph_uint32 compressed_seq_query_packed(void * cs_packed, cmph_uint32 idx);
      83  
      84  #endif