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;
}