Example #1
0
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;
}
Example #2
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;
}