qh_fprintf(qh, stderr, 6309, "%s: SETaddr_(set, i2t) [%p] is not the same as SETfirst_(set) [%p]\n", name, SETaddr_(set, i2T), SETfirst_(set));
error_count++;
}
first= *(int *)SETfirst_(set);
if(SETfirst_(set)!=SETfirstt_(set, i2T)){
qh_fprintf(qh, stderr, 6308, "%s: SETfirst_(set) [%p] is not the same as SETfirstt_(set, i2T [%p]\n", name, SETfirst_(set), SETfirstt_(set, i2T));
error_count++;
}
if(qh_setsize(qh, set)>1){
second= *(int *)SETsecond_(set);
if(SETsecond_(set)!=SETsecondt_(set, i2T)){
qh_fprintf(qh, stderr, 6310, "%s: SETsecond_(set) [%p] is not the same as SETsecondt_(set, i2T) [%p]\n", name, SETsecond_(set), SETsecondt_(set, i2T));
error_count++;
}
}
}
/* Test first run of ints in set*/
i= 0;
FOREACHint_(set){
if(i2!=SETfirst_(set) && *i2!=prev+1){
break;
}
prev= *i2;
if(SETindex_(set, i2)!=i){
qh_fprintf(qh, stderr, 6311, "%s: Expecting SETindex_(set, pointer-to-%d) to be %d. Got %d\n", name, *i2, i, SETindex_(set, i2));
error_count++;;
}
if(i2!=SETref_(i2)){
qh_fprintf(qh, stderr, 6312, "%s: SETref_(i2) [%p] does not point to i2 (the %d'th element)\n", name, SETref_(i2), i);
error_count++;;
}
i++;
}
FOREACHint_i_(qh, set){
/* Must be first conditional, otherwise it trips up msvc 8 */
i2T **p= SETelemaddr_(set, i2_i, i2T);
if(i2!=*p){
qh_fprintf(qh, stderr, 6320, "%s: SETelemaddr_(set, %d, i2T) [%p] does not point to i2\n", name, i2_i, SETelemaddr_(set, i2_i, int));
error_count++;;
}
if(i2_i==0){
if(first!=*i2){
qh_fprintf(qh, stderr, 6314, "%s: First element is %d instead of SETfirst %d\n", name, *i2, first);
error_count++;;
}
if(rangeA!=*i2){
qh_fprintf(qh, stderr, 6315, "%s: starts with %d instead of rangeA %d\n", name, *i2, rangeA);
error_count++;;
}
prev= rangeA;
}else{
if(i2_i==1 && second!=*i2){
qh_fprintf(qh, stderr, 6316, "%s: Second element is %d instead of SETsecond %d\n", name, *i2, second);
error_count++;;
}
if(prev+1==*i2){
prev++;
}else{
if(*i2==rangeB){
prev= rangeB;
rangeB= -1;
rangeCount++;
}else if(rangeB==-1 && *i2==rangeC){
prev= rangeC;
rangeC= -1;
rangeCount++;
}else{
prev++;
qh_fprintf(qh, stderr, 6317, "%s: Expecting %d'th element to be %d. Got %d\n", name, i2_i, prev, *i2);
error_count++;
}
}
}
if(i2!=SETelem_(set, i2_i)){
qh_fprintf(qh, stderr, 6318, "%s: SETelem_(set, %d) [%p] is not i2 [%p] (the %d'th element)\n", name, i2_i, SETelem_(set, i2_i), i2, i2_i);
error_count++;;
}
if(SETelemt_(set, i2_i, i2T)!=SETelem_(set, i2_i)){ /* Normally SETelemt_ is used for generic sets */
qh_fprintf(qh, stderr, 6319, "%s: SETelemt_(set, %d, i2T) [%p] is not SETelem_(set, %d) [%p] (the %d'th element)\n", name, i2_i, SETelemt_(set, i2_i, int), i2_i, SETelem_(set, i2_i), i2_i);
error_count++;;
}
}
if(error_count>=MAXerrorCount){
qh_fprintf(qh, stderr, 8011, "testqset: Stop testing after %d errors\n", error_count);