| 55 | |
| 56 | template<class VX> |
| 57 | forceinline void |
| 58 | LinBoolInt<VX>::normalize(void) { |
| 59 | if (n_as != n_hs) { |
| 60 | // Remove views for which no more subscriptions exist |
| 61 | int n_x = x.size(); |
| 62 | for (int i=n_hs; i--; ) |
| 63 | if (!x[i].none()) { |
| 64 | x[i]=x[--n_hs]; x[n_hs]=x[--n_x]; |
| 65 | } |
| 66 | x.size(n_x); |
| 67 | } |
| 68 | assert(n_as == n_hs); |
| 69 | // Remove assigned yet unsubscribed views |
| 70 | { |
| 71 | int n_x = x.size(); |
| 72 | for (int i=n_x-1; i>=n_hs; i--) |
| 73 | if (x[i].one()) { |
| 74 | c--; x[i]=x[--n_x]; |
| 75 | } else if (x[i].zero()) { |
| 76 | x[i]=x[--n_x]; |
| 77 | } |
| 78 | x.size(n_x); |
| 79 | } |
| 80 | } |
| 81 | |
| 82 | template<class VX> |
| 83 | forceinline |
no test coverage detected