int gt(int argc, char **argv) { if (argc < 2) return gt_help(); int c; char *in, *out, *record_ids, *bim = NULL; unsigned int query_value, num_records; int i_is_set = 0, r_is_set = 0, f_is_set = 0, n_is_set = 0, Q_is_set = 0, t_is_set = 0, q_is_set = 0, b_is_set = 0; while ((c = getopt (argc, argv, "hi:q:r:n:b:fQt")) != -1) { switch (c) { case 'b': b_is_set = 1; bim = optarg; break; case 'r': r_is_set = 1; record_ids= optarg; break; case 'n': n_is_set = 1; num_records = atoi(optarg); break; case 'f': f_is_set = 1; break; case 'i': i_is_set = 1; in = optarg; break; case 'q': q_is_set = 1; query_value = atoi(optarg); break; case 'Q': Q_is_set = 1; break; case 't': t_is_set = 1; break; case 'h': gt_help(); return 1; case '?': if ( (optopt == 'i') || (optopt == 'q') ) fprintf (stderr, "Option -%c requires an argument.\n", optopt); else if (isprint (optopt)) fprintf (stderr, "Unknown option `-%c'.\n", optopt); else fprintf (stderr, "Unknown option character `\\x%x'.\n", optopt); default: gt_help(); return 1; } } char *type = argv[0]; if (i_is_set == 0) { printf("Input file is not set\n"); return gt_help(); } if (q_is_set == 0) { printf("Query value is not set\n"); return gt_help(); } if (n_is_set == 0) { printf("Number of records is not set\n"); return gt_help(); } if (r_is_set == 0) { printf("Record IDs are not set\n"); return gt_help(); } unsigned int R[num_records]; parse_cmd_line_int_csv(R, num_records, record_ids); if (strcmp(type, "plt") == 0) { if (f_is_set == 1) return gt_plt_fields(in, query_value, R, num_records, t_is_set, Q_is_set, bim); else return gt_plt(in, query_value, R, num_records, t_is_set, Q_is_set, bim); } else if (strcmp(type, "ubin") == 0) return gt_ubin(in, query_value, R, num_records, t_is_set, Q_is_set, bim); else if (strcmp(type, "wah") == 0) return gt_wah(in, query_value, R, num_records, t_is_set, Q_is_set, bim); else if (strcmp(type, "wahbm") == 0) return gt_wahbm(in, query_value, R, num_records, t_is_set, Q_is_set, bim); else if (strcmp(type, "ipwahbm") == 0) return gt_in_place_wahbm(in, query_value, R, num_records, t_is_set, Q_is_set, bim); else if (strcmp(type, "cipwahbm") == 0) return gt_compressed_in_place_wahbm(in, query_value, R, num_records, t_is_set, Q_is_set, bim); return 1; }
int count(int argc, char **argv) { if (argc < 2) return count_help(); int c; char *in=NULL, *out=NULL, *record_ids=NULL, *op=NULL, *bim=NULL; uint32_t query_value = 0, num_records = 0; int i_is_set = 0, a_is_set = 0, b_is_set = 0, o_is_set = 0, r_is_set = 0, n_is_set = 0, Q_is_set = 0, t_is_set = 0, q_is_set = 0; while ((c = getopt (argc, argv, "hi:o:q:r:n:b:Qta")) != -1) { switch (c) { case 'a': a_is_set = 1; break; case 'b': b_is_set = 1; bim = optarg; break; case 't': t_is_set = 1; break; case 'o': o_is_set = 1; op = optarg; break; case 'r': r_is_set = 1; record_ids= optarg; break; case 'n': n_is_set = 1; num_records = atoi(optarg); break; case 'i': i_is_set = 1; in = optarg; break; case 'q': q_is_set = 1; query_value = atoi(optarg); break; case 'Q': Q_is_set = 1; break; case 'h': return count_help(); case '?': if ( (optopt == 'i') || (optopt == 'o') || (optopt == 'r') || (optopt == 'n') || (optopt == 'q') ) fprintf (stderr, "Option -%c requires an argument.\n", optopt); else if (isprint (optopt)) fprintf (stderr, "Unknown option `-%c'.\n", optopt); else fprintf (stderr, "Unknown option character `\\x%x'.\n", optopt); default: return count_help(); } } char *type = argv[0]; if (i_is_set == 0) { printf("Input file is not set\n"); return count_help(); } if (q_is_set == 0) { printf("Query value is not set\n"); return count_help(); } if (n_is_set == 0) { printf("Number of records is not set\n"); return count_help(); } if (r_is_set == 0) { printf("Record IDs are not set\n"); return count_help(); } if (o_is_set == 0) { printf("Opperation is not set\n"); return count_help(); } if ( !((strcmp(op, "gt") == 0) || (strcmp(op, "lt") == 0) || (strcmp(op, "eq") == 0) || (strcmp(op, "ne") == 0) || (strcmp(op, "le") == 0) || (strcmp(op, "ge") == 0)) ) { printf("Unknown opperation\n"); return count_help(); } uint32_t R[num_records]; parse_cmd_line_int_csv(R, num_records, record_ids); if (strcmp(type, "plt") == 0) return count_plt(in, query_value, op, R, num_records, t_is_set, Q_is_set, bim); else if (strcmp(type, "ubin") == 0) return count_ubin(in, query_value, op, R, num_records, t_is_set, Q_is_set, bim); else if (strcmp(type, "wah") == 0) return count_wah(in, query_value, op, R, num_records, t_is_set, Q_is_set, bim); else if (strcmp(type, "wahbm") == 0) return count_wahbm(in, query_value, op, R, num_records, t_is_set, Q_is_set, bim); else if (strcmp(type, "ipwahbm") == 0) return count_in_place_wahbm(in, query_value, op, R, num_records, t_is_set, Q_is_set, a_is_set, bim); else if (strcmp(type, "cipwahbm") == 0) return count_compressed_in_place_wahbm(in, query_value, op, R, num_records, t_is_set, Q_is_set, bim); return 1; }
int main(int argc, char **argv) { int c; char *prog = argv[0]; char *in_file_name; char *record_ids; int num_r, num_records, num_fields; int i_is_set = 0, r_is_set = 0, n_is_set = 0; while ((c = getopt (argc, argv, "i:r:n:")) != -1) { switch (c) { case 'n': n_is_set = 1; num_r = atoi(optarg); break; case 'r': r_is_set = 1; record_ids = optarg; break; case 'i': i_is_set = 1; in_file_name = optarg; break; case 'h': usage(prog); return 1; case '?': if ( (optopt == 'f') || (optopt == 'r') || (optopt == 'i') ) fprintf (stderr, "Option -%c requires an argument.\n", optopt); else if (isprint (optopt)) fprintf (stderr, "Unknown option `-%c'.\n", optopt); else fprintf (stderr, "Unknown option character `\\x%x'.\n", optopt); default: usage(prog); return 1; } } if ( (r_is_set == 0) || (i_is_set == 0) || (n_is_set == 0)) { usage(prog); return 1; } int R[num_r]; parse_cmd_line_int_csv(R, num_r, record_ids); struct plt_file pf = init_plt_file(in_file_name); int *G = (int *) calloc(pf.num_fields, sizeof(int)); int r = or_records_plt(pf, R, num_r, G); int i; for (i = 0; i < pf.num_fields; ++i) { if (i != 0) printf(" "); printf("%d", G[i]); } printf("\n"); fclose(pf.file); free(G); return 0; }