Exemple #1
0
Fichier : gt.c Projet : arq5x/gqt
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;
}
Exemple #2
0
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;
}
Exemple #3
0
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;
}