int CG21_set_comp()

in src/cg21/cg21_utilities.c [578:628]


int CG21_set_comp(octet *set_packed1, octet *j_packed1, octet *set_packed2, octet *j_packed2, int n, int size){

    int indices1[n];
    int indices2[n];
    int arr1[n];
    int arr2[n];
    int ret;

    char x1_[n][size];
    char x2_[n][size];
    char temp1[n * 4 + 1];
    char temp2[n * 4 + 1];

    octet X1[n];
    octet X2[n];

    init_octets((char *)x1_,  X1,  size, n);
    init_octets((char *)x2_,  X2,  size, n);

    // convert oct to hex
    OCT_toHex(j_packed1, temp1);
    OCT_toHex(j_packed2, temp2);

    // convert hex to array of int
    hex_to_array(temp1, arr1, n);
    hex_to_array(temp2, arr2, n);

    ret = CG21_unpack_and_sort(X1, set_packed1,j_packed1,n,size,indices1);
    if (ret != CG21_OK){
        return ret;
    }
    ret = CG21_unpack_and_sort(X2, set_packed2,j_packed2,n,size,indices2);
    if (ret != CG21_OK){
        return ret;
    }

    for (int i=0;i<n;i++){
        if (arr1[indices1[i]] != arr2[indices2[i]]){
            return 0;
        }
    }

    for (int i=0;i<n;i++){
        ret = OCT_comp(&X1[indices1[i]],&X2[indices2[i]]);
        if (ret != 1){
            return 0;
        }
    }

    return 1;
}