int comp;
uns run_count = 0;
- fin1 = sbuck_open_read(ins[0]);
+ fin1 = sbuck_read(ins[0]);
next1 = P(read_key)(fin1, kin1);
- if (sbuck_can_read(ins[1]))
+ if (sbuck_have(ins[1]))
{
- fin2 = sbuck_open_read(ins[1]);
+ fin2 = sbuck_read(ins[1]);
next2 = P(read_key)(fin2, kin2);
}
else
if (unlikely(!fout1))
{
if (!fout2)
- fout1 = sbuck_open_write(outs[0]);
+ fout1 = sbuck_write(outs[0]);
else if (outs[1])
- fout1 = sbuck_open_write(outs[1]);
+ fout1 = sbuck_write(outs[1]);
else
fout1 = fout2;
}
run_count++;
}
+#ifdef SORT_ASSERT_UNIQUE
+ ASSERT(comp != 0);
+#endif
if (comp LESS 0)
{
P(copy_data)(kin1, fin1, fout1);
run1 = next1 && (P(compare)(kprev1, kin1) LESS 0);
kout = kprev1;
}
-#ifdef SORT_MERGE
+#ifdef SORT_UNIFY
else if (comp == 0)
{
P(key) *mkeys[] = { kin1, kin2 };
run2 = next2 && (P(compare)(kprev2, kin2) LESS 0);
kout = kprev2;
}
-#endif
-#ifdef SORT_ASSERT_UNIQUE
- else if (unlikely(comp == 0))
- ASSERT(0);
#endif
else
{
}
}
- sbuck_close_read(ins[0]);
- sbuck_close_read(ins[1]);
if (fout2 && fout2 != fout1)
outs[1]->runs += run_count / 2;
if (fout1)