There is a function FLAC__clz_soft_uint32 in bitmath.h:

static inline unsigned int FLAC__clz_soft_uint32(unsigned int word)
{
     static const unsigned char byte_to_unary_table[] = {
     8, 7, 6, 6, 5, 5, 5, 5, 4, 4, 4, 4, 4, 4, 4, 4,
     ....................................
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     };

     return (word) > 0xffffff ? byte_to_unary_table[(word) >> 24] :
     (word) > 0xffff ? byte_to_unary_table[(word) >> 16] + 8 :
     (word) > 0xff ? byte_to_unary_table[(word) >> 8] + 16 :
     byte_to_unary_table[(word)] + 24;
}


It seems that it adds a copy of byte_to_unary_table[] array to
any file that includes this header.

Maybe it's better to move this array from bitmath.h to bitmath.c?
It will be something like this:


extern const unsigned char FLAC__byte_to_unary_table[];
static inline unsigned int FLAC__clz_soft_uint32(unsigned int word)
{
     return (word) > 0xffffff ? FLAC__byte_to_unary_table[(word) >> 24] :
     (word) > 0xffff ? FLAC__byte_to_unary_table[(word) >> 16] + 8 :
     (word) > 0xff ? FLAC__byte_to_unary_table[(word) >> 8] + 16 :
     FLAC__byte_to_unary_table[(word)] + 24;
}
_______________________________________________
flac-dev mailing list
[email protected]
http://lists.xiph.org/mailman/listinfo/flac-dev

Reply via email to