static int page_and_bit_calculator(struct ast_extended_codec in, int *page, int *bits) { union { struct ast_extended_codec codec; unsigned int bits[sizeof(struct ast_extended_codec) / sizeof(int)]; } _in = { in }; for (*page = 0; *page < sizeof(struct ast_extended_codec) / sizeof(int); *page++) { for (*bits = 0; *bits < sizeof(int) * 8; *bits++) { if (_in.bits[*page] & (1 << (*bits))) { return 0; } } } return -1; }