8 void Range::append_overlapping (Range * & head, Range * & tail,
const Range * r)
15 else if (tail->ub < r->lb)
20 else if (tail->ub < r->ub)
34 append_overlapping (head, tail, r1);
39 append_overlapping (head, tail, r2);
43 for (; r1; r1 = r1->nx)
45 append_overlapping (head, tail, r1);
47 for (; r2; r2 = r2->nx)
49 append_overlapping (head, tail, r2);
54 void Range::append (
Range ** & ptail, uint32_t l, uint32_t u)
56 Range * & tail = * ptail;
64 Range ** ptail = &head;
67 if (!r2 || r2->lb >= r1->ub)
69 append (ptail, r1->lb, r1->ub);
72 else if (r2->ub <= r1->lb)
80 append (ptail, r1->lb, r2->lb);
82 while (r2 && r2->ub < r1->ub)
84 const uint32_t lb = r2->ub;
86 const uint32_t ub = r2 && r2->lb < r1->ub
89 append (ptail, lb, ub);
static Range * sub(const Range *r1, const Range *r2)
static Range * ran(uint32_t l, uint32_t u)
static free_list< Range * > vFreeList
static Range * add(const Range *r1, const Range *r2)