else
{
uint h = n / 2;
- genIf(o, ind, "<=", s[h - 1].ub - 1, readCh);
- o << "{\n";
- ++oline;
- doBinary(o, ind+1, &s[0], h, from, next, readCh, mask);
- o << indent(ind) << "} else {\n";
- ++oline;
- doBinary(o, ind+1, &s[h], n - h, from, next, readCh, mask);
- o << indent(ind) << "}\n";
- ++oline;
+
+ if (!mask || (s[h - 1].ub - 1) > 0x00FF)
+ {
+ genIf(o, ind, "<=", s[h - 1].ub - 1, readCh);
+ o << "{\n";
+ ++oline;
+ doBinary(o, ind+1, &s[0], h, from, next, readCh, mask);
+ o << indent(ind) << "} else {\n";
+ ++oline;
+ doBinary(o, ind+1, &s[h], n - h, from, next, readCh, mask);
+ o << indent(ind) << "}\n";
+ ++oline;
+ }
+ else
+ {
+ doBinary(o, ind, &s[h], n - h, from, next, readCh, mask);
+ }
}
}