## schropack schropack |

## Synopsis

    struct              SchroPack;
    SchroPack *         schro_pack_new                      (void);
    void                schro_pack_free                     (SchroPack *pack);
    void                schro_pack_encode_init              (SchroPack *pack,
                                                             SchroBuffer *buffer);
    void                schro_pack_sync                     (SchroPack *pack);
    void                schro_pack_append                   (SchroPack *pack,
                                                             const uint8_t *data,
                                                             int len);
    void                schro_pack_encode_bit               (SchroPack *pack,
                                                             int value);
    void                schro_pack_encode_bits              (SchroPack *pack,
                                                             int n,
                                                             unsigned int value);
    void                schro_pack_encode_uint              (SchroPack *pack,
                                                             int value);
    void                schro_pack_encode_sint              (SchroPack *pack,
                                                             int value);
    void                schro_pack_copy                     (SchroPack *dest,
                                                             SchroPack *src);
    int                 schro_pack_estimate_sint            (int value);
    int                 schro_pack_estimate_uint            (int value);
    void                schro_pack_flush                    (SchroPack *pack);
    int                 schro_pack_get_bit_offset           (SchroPack *pack);
    int                 schro_pack_get_offset               (SchroPack *pack);
    void                schro_pack_append_zero              (SchroPack *pack,
                                                             int len);

## Description

## Details

### struct SchroPack

    struct SchroPack {
      SchroBuffer *buffer;

      int n;
      int shift;
      int n_pack;

      uint32_t value;

      int error;
    };

### schro_pack_new ()

    SchroPack *         schro_pack_new                      (void);

### schro_pack_free ()

    void                schro_pack_free                     (SchroPack *pack);

### schro_pack_encode_init ()

    void                schro_pack_encode_init              (SchroPack *pack,
                                                             SchroBuffer *buffer);

### schro_pack_sync ()

    void                schro_pack_sync                     (SchroPack *pack);

### schro_pack_append ()

    void                schro_pack_append                   (SchroPack *pack,
                                                             const uint8_t *data,
                                                             int len);

### schro_pack_encode_bit ()

    void                schro_pack_encode_bit               (SchroPack *pack,
                                                             int value);

### schro_pack_encode_bits ()

    void                schro_pack_encode_bits              (SchroPack *pack,
                                                             int n,
                                                             unsigned int value);

### schro_pack_encode_uint ()

    void                schro_pack_encode_uint              (SchroPack *pack,
                                                             int value);

### schro_pack_encode_sint ()

    void                schro_pack_encode_sint              (SchroPack *pack,
                                                             int value);

### schro_pack_copy ()

    void                schro_pack_copy                     (SchroPack *dest,
                                                             SchroPack *src);

### schro_pack_estimate_sint ()

    int                 schro_pack_estimate_sint            (int value);

### schro_pack_estimate_uint ()

    int                 schro_pack_estimate_uint            (int value);

### schro_pack_flush ()

    void                schro_pack_flush                    (SchroPack *pack);

### schro_pack_get_bit_offset ()

    int                 schro_pack_get_bit_offset           (SchroPack *pack);

### schro_pack_get_offset ()

    int                 schro_pack_get_offset               (SchroPack *pack);

### schro_pack_append_zero ()

    void                schro_pack_append_zero              (SchroPack *pack,
                                                             int len);