int main(void) { bitfield_t * bitz = bitfield_create(100); bitfield_set(bitz, 17); bitfield_set(bitz, 75); bitfield_set(bitz, 90); printf("count is %d\n", (int)bitfield_count(bitz)); bitfield_clear(bitz, 17); for(int i = 0; i < 100; ++i) { if(bitfield_query(bitz, i)) printf("%d: 1\n", i); else printf("%d: 0\n", i); } printf("----\n"); bitfield_set_all(bitz); printf("count is %d\n", (int)bitfield_count(bitz)); bitfield_clear_all(bitz); printf("count is %d\n", (int)bitfield_count(bitz)); bitfield_destroy(bitz); return 0; }
/** * @name action_delete_messages: */ int action_delete_messages(gammu_state_t **sp, int argc, char *argv[]) { int rv = 0; bitfield_t *bf = NULL; if (argc < 2) { print_usage_error(U_ERR_LOC_MISSING); return 1; } int delete_all = (strcmp(argv[1], "all") == 0); if (!delete_all) { unsigned long n; boolean_t found = find_maximum_integer_argument(&n, &argv[1]); if (!found) { print_usage_error(U_ERR_LOC_INVAL); rv = 2; goto cleanup; } if (n == ULONG_MAX && errno == ERANGE) { print_usage_error(U_ERR_OVERFLOW); rv = 3; goto cleanup; } bf = bitfield_create(n); if (!bf) { print_operation_error(OP_ERR_INDEX); rv = 4; goto cleanup_delete; } if (!bitfield_set_integer_arguments(bf, &argv[1])) { print_operation_error(OP_ERR_LOCATION); rv = 5; goto cleanup_delete; } } /* Lazy initialization of libgammu */ gammu_state_t *s = gammu_create_if_necessary(sp); if (!s) { print_operation_error(OP_ERR_INIT); rv = 6; goto cleanup_delete; } printf("{ "); if (!delete_selected_messages(s, bf)) { print_operation_error(OP_ERR_DELETE); rv = 7; goto cleanup_json; } cleanup_json: printf(" }\n"); cleanup_delete: if (bf) { bitfield_destroy(bf); } cleanup: return rv; }