| Index: src/gpu/GrRedBlackTree.h
|
| diff --git a/src/gpu/GrRedBlackTree.h b/src/gpu/GrRedBlackTree.h
|
| index d9b1a049bd8fd5e60acff29e752c933ccac7f226..c58ae2790042454a63dc720ae97581c9d969da26 100644
|
| --- a/src/gpu/GrRedBlackTree.h
|
| +++ b/src/gpu/GrRedBlackTree.h
|
| @@ -204,7 +204,7 @@ public:
|
| }
|
| Iter& operator --() {
|
| SkASSERT(*this != fTree->begin());
|
| - if (NULL != fN) {
|
| + if (fN) {
|
| fN = PredecessorNode(fN);
|
| } else {
|
| *this = fTree->last();
|
| @@ -254,7 +254,7 @@ typename GrRedBlackTree<T,C>::Iter GrRedBlackTree<T,C>::last() {
|
| template <typename T, typename C>
|
| typename GrRedBlackTree<T,C>::Iter GrRedBlackTree<T,C>::find(const T& t) {
|
| Node* n = fRoot;
|
| - while (NULL != n) {
|
| + while (n) {
|
| if (fComp(t, n->fItem)) {
|
| n = n->fChildren[kLeft_Child];
|
| } else {
|
| @@ -271,7 +271,7 @@ template <typename T, typename C>
|
| typename GrRedBlackTree<T,C>::Iter GrRedBlackTree<T,C>::findFirst(const T& t) {
|
| Node* n = fRoot;
|
| Node* leftMost = NULL;
|
| - while (NULL != n) {
|
| + while (n) {
|
| if (fComp(t, n->fItem)) {
|
| n = n->fChildren[kLeft_Child];
|
| } else {
|
| @@ -291,7 +291,7 @@ template <typename T, typename C>
|
| typename GrRedBlackTree<T,C>::Iter GrRedBlackTree<T,C>::findLast(const T& t) {
|
| Node* n = fRoot;
|
| Node* rightMost = NULL;
|
| - while (NULL != n) {
|
| + while (n) {
|
| if (fComp(t, n->fItem)) {
|
| n = n->fChildren[kLeft_Child];
|
| } else {
|
| @@ -313,7 +313,7 @@ int GrRedBlackTree<T,C>::countOf(const T& t) const {
|
| template <typename T, typename C>
|
| int GrRedBlackTree<T,C>::onCountOf(const Node* n, const T& t) const {
|
| // this is count*log(n) :(
|
| - while (NULL != n) {
|
| + while (n) {
|
| if (fComp(t, n->fItem)) {
|
| n = n->fChildren[kLeft_Child];
|
| } else {
|
| @@ -360,7 +360,7 @@ typename GrRedBlackTree<T,C>::Iter GrRedBlackTree<T,C>::insert(const T& t) {
|
|
|
| bool first = true;
|
| bool last = true;
|
| - while (NULL != n) {
|
| + while (n) {
|
| gpc = pc;
|
| pc = fComp(x->fItem, n->fItem) ? kLeft_Child : kRight_Child;
|
| first = first && kLeft_Child == pc;
|
| @@ -389,10 +389,10 @@ typename GrRedBlackTree<T,C>::Iter GrRedBlackTree<T,C>::insert(const T& t) {
|
|
|
| do {
|
| // assumptions at loop start.
|
| - SkASSERT(NULL != x);
|
| + SkASSERT(x);
|
| SkASSERT(kRed_Color == x->fColor);
|
| // can't have a grandparent but no parent.
|
| - SkASSERT(!(NULL != gp && NULL == p));
|
| + SkASSERT(!(gp && NULL == p));
|
| // make sure pc and gpc are correct
|
| SkASSERT(NULL == p || p->fChildren[pc] == x);
|
| SkASSERT(NULL == gp || gp->fChildren[gpc] == p);
|
| @@ -403,7 +403,7 @@ typename GrRedBlackTree<T,C>::Iter GrRedBlackTree<T,C>::insert(const T& t) {
|
| return Iter(returnNode, this);
|
| }
|
| // gp must be valid because if p was the root then it is black
|
| - SkASSERT(NULL != gp);
|
| + SkASSERT(gp);
|
| // gp must be black since it's child, p, is red.
|
| SkASSERT(kBlack_Color == gp->fColor);
|
|
|
| @@ -413,7 +413,7 @@ typename GrRedBlackTree<T,C>::Iter GrRedBlackTree<T,C>::insert(const T& t) {
|
| // if x's uncle (p's sibling) is also red then we can flip
|
| // p and u to black and make gp red. But then we have to recurse
|
| // up to gp since it's parent may also be red.
|
| - if (NULL != u && kRed_Color == u->fColor) {
|
| + if (u && kRed_Color == u->fColor) {
|
| p->fColor = kBlack_Color;
|
| u->fColor = kBlack_Color;
|
| gp->fColor = kRed_Color;
|
| @@ -429,7 +429,7 @@ typename GrRedBlackTree<T,C>::Iter GrRedBlackTree<T,C>::insert(const T& t) {
|
| gp = p->fParent;
|
| pc = (p->fChildren[kLeft_Child] == x) ? kLeft_Child :
|
| kRight_Child;
|
| - if (NULL != gp) {
|
| + if (gp) {
|
| gpc = (gp->fChildren[kLeft_Child] == p) ? kLeft_Child :
|
| kRight_Child;
|
| }
|
| @@ -493,10 +493,10 @@ void GrRedBlackTree<T,C>::rotateRight(Node* n) {
|
| */
|
| Node* d = n->fParent;
|
| Node* s = n->fChildren[kLeft_Child];
|
| - SkASSERT(NULL != s);
|
| + SkASSERT(s);
|
| Node* b = s->fChildren[kRight_Child];
|
|
|
| - if (NULL != d) {
|
| + if (d) {
|
| Child c = d->fChildren[kLeft_Child] == n ? kLeft_Child :
|
| kRight_Child;
|
| d->fChildren[c] = s;
|
| @@ -508,7 +508,7 @@ void GrRedBlackTree<T,C>::rotateRight(Node* n) {
|
| s->fChildren[kRight_Child] = n;
|
| n->fParent = s;
|
| n->fChildren[kLeft_Child] = b;
|
| - if (NULL != b) {
|
| + if (b) {
|
| b->fParent = n;
|
| }
|
|
|
| @@ -525,10 +525,10 @@ void GrRedBlackTree<T,C>::rotateLeft(Node* n) {
|
|
|
| Node* d = n->fParent;
|
| Node* s = n->fChildren[kRight_Child];
|
| - SkASSERT(NULL != s);
|
| + SkASSERT(s);
|
| Node* b = s->fChildren[kLeft_Child];
|
|
|
| - if (NULL != d) {
|
| + if (d) {
|
| Child c = d->fChildren[kRight_Child] == n ? kRight_Child :
|
| kLeft_Child;
|
| d->fChildren[c] = s;
|
| @@ -540,7 +540,7 @@ void GrRedBlackTree<T,C>::rotateLeft(Node* n) {
|
| s->fChildren[kLeft_Child] = n;
|
| n->fParent = s;
|
| n->fChildren[kRight_Child] = b;
|
| - if (NULL != b) {
|
| + if (b) {
|
| b->fParent = n;
|
| }
|
|
|
| @@ -554,15 +554,15 @@ void GrRedBlackTree<T,C>::rotateLeft(Node* n) {
|
|
|
| template <typename T, typename C>
|
| typename GrRedBlackTree<T,C>::Node* GrRedBlackTree<T,C>::SuccessorNode(Node* x) {
|
| - SkASSERT(NULL != x);
|
| - if (NULL != x->fChildren[kRight_Child]) {
|
| + SkASSERT(x);
|
| + if (x->fChildren[kRight_Child]) {
|
| x = x->fChildren[kRight_Child];
|
| - while (NULL != x->fChildren[kLeft_Child]) {
|
| + while (x->fChildren[kLeft_Child]) {
|
| x = x->fChildren[kLeft_Child];
|
| }
|
| return x;
|
| }
|
| - while (NULL != x->fParent && x == x->fParent->fChildren[kRight_Child]) {
|
| + while (x->fParent && x == x->fParent->fChildren[kRight_Child]) {
|
| x = x->fParent;
|
| }
|
| return x->fParent;
|
| @@ -570,15 +570,15 @@ typename GrRedBlackTree<T,C>::Node* GrRedBlackTree<T,C>::SuccessorNode(Node* x)
|
|
|
| template <typename T, typename C>
|
| typename GrRedBlackTree<T,C>::Node* GrRedBlackTree<T,C>::PredecessorNode(Node* x) {
|
| - SkASSERT(NULL != x);
|
| - if (NULL != x->fChildren[kLeft_Child]) {
|
| + SkASSERT(x);
|
| + if (x->fChildren[kLeft_Child]) {
|
| x = x->fChildren[kLeft_Child];
|
| - while (NULL != x->fChildren[kRight_Child]) {
|
| + while (x->fChildren[kRight_Child]) {
|
| x = x->fChildren[kRight_Child];
|
| }
|
| return x;
|
| }
|
| - while (NULL != x->fParent && x == x->fParent->fChildren[kLeft_Child]) {
|
| + while (x->fParent && x == x->fParent->fChildren[kLeft_Child]) {
|
| x = x->fParent;
|
| }
|
| return x->fParent;
|
| @@ -586,12 +586,12 @@ typename GrRedBlackTree<T,C>::Node* GrRedBlackTree<T,C>::PredecessorNode(Node* x
|
|
|
| template <typename T, typename C>
|
| void GrRedBlackTree<T,C>::deleteAtNode(Node* x) {
|
| - SkASSERT(NULL != x);
|
| + SkASSERT(x);
|
| validate();
|
| --fCount;
|
|
|
| - bool hasLeft = NULL != x->fChildren[kLeft_Child];
|
| - bool hasRight = NULL != x->fChildren[kRight_Child];
|
| + bool hasLeft = SkToBool(x->fChildren[kLeft_Child]);
|
| + bool hasRight = SkToBool(x->fChildren[kRight_Child]);
|
| Child c = hasLeft ? kLeft_Child : kRight_Child;
|
|
|
| if (hasLeft && hasRight) {
|
| @@ -601,10 +601,10 @@ void GrRedBlackTree<T,C>::deleteAtNode(Node* x) {
|
| // if x is an interior node then we find it's successor
|
| // and swap them.
|
| Node* s = x->fChildren[kRight_Child];
|
| - while (NULL != s->fChildren[kLeft_Child]) {
|
| + while (s->fChildren[kLeft_Child]) {
|
| s = s->fChildren[kLeft_Child];
|
| }
|
| - SkASSERT(NULL != s);
|
| + SkASSERT(s);
|
| // this might be expensive relative to swapping node ptrs around.
|
| // depends on T.
|
| x->fItem = s->fItem;
|
| @@ -615,7 +615,7 @@ void GrRedBlackTree<T,C>::deleteAtNode(Node* x) {
|
| // the new root (if the tree is not empty) black.
|
| SkASSERT(fRoot == x);
|
| fRoot = x->fChildren[c];
|
| - if (NULL != fRoot) {
|
| + if (fRoot) {
|
| fRoot->fParent = NULL;
|
| fRoot->fColor = kBlack_Color;
|
| if (x == fLast) {
|
| @@ -665,7 +665,7 @@ void GrRedBlackTree<T,C>::deleteAtNode(Node* x) {
|
| //s cannot be an implicit black node because the original
|
| // black-height at x was >= 2 and s's black-height must equal the
|
| // initial black height of x.
|
| - SkASSERT(NULL != s);
|
| + SkASSERT(s);
|
| SkASSERT(p == s->fParent);
|
|
|
| // assigned in loop
|
| @@ -682,7 +682,7 @@ void GrRedBlackTree<T,C>::deleteAtNode(Node* x) {
|
| // be real nodes.
|
| // The x side of p has a black-height that is one less than the
|
| // s side. It must be rebalanced.
|
| - SkASSERT(NULL != s);
|
| + SkASSERT(s);
|
| SkASSERT(p == s->fParent);
|
| SkASSERT(NULL == x || x->fParent == p);
|
|
|
| @@ -697,8 +697,8 @@ void GrRedBlackTree<T,C>::deleteAtNode(Node* x) {
|
| SkASSERT(kBlack_Color == p->fColor);
|
| // s's children must also be black since s is red. They can't
|
| // be implicit since s is red and it's black-height is >= 2.
|
| - SkASSERT(NULL != sl && kBlack_Color == sl->fColor);
|
| - SkASSERT(NULL != sr && kBlack_Color == sr->fColor);
|
| + SkASSERT(sl && kBlack_Color == sl->fColor);
|
| + SkASSERT(sr && kBlack_Color == sr->fColor);
|
| p->fColor = kRed_Color;
|
| s->fColor = kBlack_Color;
|
| if (kLeft_Child == pc) {
|
| @@ -718,8 +718,8 @@ void GrRedBlackTree<T,C>::deleteAtNode(Node* x) {
|
| SkASSERT(NULL == x || p == x->fParent);
|
|
|
| // when x is deleted its subtree will have reduced black-height.
|
| - slRed = (NULL != sl && kRed_Color == sl->fColor);
|
| - srRed = (NULL != sr && kRed_Color == sr->fColor);
|
| + slRed = (sl && kRed_Color == sl->fColor);
|
| + srRed = (sr && kRed_Color == sr->fColor);
|
| if (!slRed && !srRed) {
|
| // if s can be made red that will balance out x's removal
|
| // to make both subtrees of p have the same black-height.
|
| @@ -744,7 +744,7 @@ void GrRedBlackTree<T,C>::deleteAtNode(Node* x) {
|
|
|
| }
|
| s = p->fChildren[1-pc];
|
| - SkASSERT(NULL != s);
|
| + SkASSERT(s);
|
| SkASSERT(p == s->fParent);
|
| continue;
|
| } else if (kRed_Color == p->fColor) {
|
| @@ -789,11 +789,11 @@ void GrRedBlackTree<T,C>::deleteAtNode(Node* x) {
|
| s->fColor = p->fColor;
|
| p->fColor = kBlack_Color;
|
| if (kLeft_Child == pc) {
|
| - SkASSERT(NULL != sr && kRed_Color == sr->fColor);
|
| + SkASSERT(sr && kRed_Color == sr->fColor);
|
| sr->fColor = kBlack_Color;
|
| rotateLeft(p);
|
| } else {
|
| - SkASSERT(NULL != sl && kRed_Color == sl->fColor);
|
| + SkASSERT(sl && kRed_Color == sl->fColor);
|
| sl->fColor = kBlack_Color;
|
| rotateRight(p);
|
| }
|
| @@ -815,14 +815,14 @@ void GrRedBlackTree<T,C>::deleteAtNode(Node* x) {
|
| if (x == fFirst) {
|
| SkASSERT(c == kRight_Child);
|
| fFirst = c1;
|
| - while (NULL != fFirst->fChildren[kLeft_Child]) {
|
| + while (fFirst->fChildren[kLeft_Child]) {
|
| fFirst = fFirst->fChildren[kLeft_Child];
|
| }
|
| SkASSERT(fFirst == SuccessorNode(x));
|
| } else if (x == fLast) {
|
| SkASSERT(c == kLeft_Child);
|
| fLast = c1;
|
| - while (NULL != fLast->fChildren[kRight_Child]) {
|
| + while (fLast->fChildren[kRight_Child]) {
|
| fLast = fLast->fChildren[kRight_Child];
|
| }
|
| SkASSERT(fLast == PredecessorNode(x));
|
| @@ -838,7 +838,7 @@ void GrRedBlackTree<T,C>::deleteAtNode(Node* x) {
|
|
|
| template <typename T, typename C>
|
| void GrRedBlackTree<T,C>::RecursiveDelete(Node* x) {
|
| - if (NULL != x) {
|
| + if (x) {
|
| RecursiveDelete(x->fChildren[kLeft_Child]);
|
| RecursiveDelete(x->fChildren[kRight_Child]);
|
| delete x;
|
| @@ -850,8 +850,8 @@ template <typename T, typename C>
|
| void GrRedBlackTree<T,C>::validate() const {
|
| if (fCount) {
|
| SkASSERT(NULL == fRoot->fParent);
|
| - SkASSERT(NULL != fFirst);
|
| - SkASSERT(NULL != fLast);
|
| + SkASSERT(fFirst);
|
| + SkASSERT(fLast);
|
|
|
| SkASSERT(kBlack_Color == fRoot->fColor);
|
| if (1 == fCount) {
|
| @@ -874,7 +874,7 @@ void GrRedBlackTree<T,C>::validate() const {
|
|
|
| template <typename T, typename C>
|
| int GrRedBlackTree<T,C>::checkNode(Node* n, int* bh) const {
|
| - if (NULL != n) {
|
| + if (n) {
|
| SkASSERT(validateChildRelations(n, false));
|
| if (kBlack_Color == n->fColor) {
|
| *bh += 1;
|
| @@ -895,21 +895,21 @@ int GrRedBlackTree<T,C>::checkNode(Node* n, int* bh) const {
|
| template <typename T, typename C>
|
| bool GrRedBlackTree<T,C>::validateChildRelations(const Node* n,
|
| bool allowRedRed) const {
|
| - if (NULL != n) {
|
| - if (NULL != n->fChildren[kLeft_Child] ||
|
| - NULL != n->fChildren[kRight_Child]) {
|
| + if (n) {
|
| + if (n->fChildren[kLeft_Child] ||
|
| + n->fChildren[kRight_Child]) {
|
| if (n->fChildren[kLeft_Child] == n->fChildren[kRight_Child]) {
|
| return validateChildRelationsFailed();
|
| }
|
| if (n->fChildren[kLeft_Child] == n->fParent &&
|
| - NULL != n->fParent) {
|
| + n->fParent) {
|
| return validateChildRelationsFailed();
|
| }
|
| if (n->fChildren[kRight_Child] == n->fParent &&
|
| - NULL != n->fParent) {
|
| + n->fParent) {
|
| return validateChildRelationsFailed();
|
| }
|
| - if (NULL != n->fChildren[kLeft_Child]) {
|
| + if (n->fChildren[kLeft_Child]) {
|
| if (!allowRedRed &&
|
| kRed_Color == n->fChildren[kLeft_Child]->fColor &&
|
| kRed_Color == n->fColor) {
|
| @@ -924,7 +924,7 @@ bool GrRedBlackTree<T,C>::validateChildRelations(const Node* n,
|
| return validateChildRelationsFailed();
|
| }
|
| }
|
| - if (NULL != n->fChildren[kRight_Child]) {
|
| + if (n->fChildren[kRight_Child]) {
|
| if (!allowRedRed &&
|
| kRed_Color == n->fChildren[kRight_Child]->fColor &&
|
| kRed_Color == n->fColor) {
|
|
|