limit bookmaker status output
streamline 'working as intended' output
notify when output changed
fix bug which appended output incorrectly to SkBitmap.h
fix bug that hid bad SkSurface.h from detection
Docs-Preview: https://skia.org/?cl=90162
Bug: skia:6898
Change-Id: I067cfe5bbad706345fb5cd540cdc3835ce22d822
Reviewed-on: https://skia-review.googlesource.com/90162
Commit-Queue: Cary Clark <caryclark@skia.org>
Reviewed-by: Cary Clark <caryclark@skia.org>
diff --git a/tools/bookmaker/includeParser.cpp b/tools/bookmaker/includeParser.cpp
index 363aacc..fa5ad32 100644
--- a/tools/bookmaker/includeParser.cpp
+++ b/tools/bookmaker/includeParser.cpp
@@ -449,6 +449,8 @@
}
}
}
+ int crossChecks = 0;
+ string firstCheck;
for (auto& classMapper : fIClassMap) {
string className = classMapper.first;
auto finder = bmhParser.fClassMap.find(className);
@@ -460,7 +462,19 @@
SkDebugf("some struct elements not found; struct finding in includeParser is missing\n");
fFailed = true;
}
- SkDebugf("cross-checked %s\n", className.c_str());
+ if (crossChecks) {
+ SkDebugf(".");
+ } else {
+ SkDebugf("cross-check");
+ firstCheck = className;
+ }
+ ++crossChecks;
+ }
+ if (crossChecks) {
+ if (1 == crossChecks) {
+ SkDebugf("%s", firstCheck.c_str());
+ }
+ SkDebugf("\n");
}
bmhParser.fWroteOut = true;
return !fFailed;
@@ -1338,22 +1352,21 @@
}
markupChild->fChildren.push_back(member);
} while (true);
- for (auto count : child->fChildren) {
- if (Definition::Type::kBracket == count->fType) {
+ for (auto outsideMember : child->fChildren) {
+ if (Definition::Type::kBracket == outsideMember->fType) {
continue;
}
- SkASSERT(Definition::Type::kKeyWord == count->fType);
- if (KeyWord::kClass == count->fKeyWord) {
+ SkASSERT(Definition::Type::kKeyWord == outsideMember->fType);
+ if (KeyWord::kClass == outsideMember->fKeyWord) {
continue;
}
- SkASSERT(KeyWord::kStatic == count->fKeyWord);
- markupChild->fTokens.emplace_back(MarkType::kMember, count->fContentStart,
- count->fContentEnd, count->fLineCount, markupChild);
+ SkASSERT(KeyWord::kStatic == outsideMember->fKeyWord);
+ markupChild->fTokens.emplace_back(MarkType::kMember, outsideMember->fContentStart,
+ outsideMember->fContentEnd, outsideMember->fLineCount, markupChild);
Definition* member = &markupChild->fTokens.back();
- member->fName = count->fName;
+ member->fName = outsideMember->fName;
// FIXME: ? add comment as well ?
markupChild->fChildren.push_back(member);
- break;
}
IClassDefinition& classDef = fIClassMap[markupDef->fName];
SkASSERT(classDef.fStart);
@@ -1493,9 +1506,6 @@
}
tokenIter->fName = nameStr;
tokenIter->fMarkType = MarkType::kMethod;
- if (string::npos != nameStr.find("defined")) {
- SkDebugf("");
- }
tokenIter->fPrivate = string::npos != nameStr.find("::");
auto testIter = child->fParent->fTokens.begin();
SkASSERT(child->fParentIndex > 0);
@@ -2036,6 +2046,7 @@
fInEnum = false;
}
this->popObject();
+ fPriorEnum = nullptr;
} else if (Definition::Type::kBracket == fParent->fType
&& fParent->fParent && Definition::Type::kKeyWord == fParent->fParent->fType
&& KeyWord::kStruct == fParent->fParent->fKeyWord) {
@@ -2069,27 +2080,31 @@
for (auto nameType = baseIter; nameType != namedIter; ++nameType) {
member->fChildren.push_back(&*nameType);
}
-
}
+ fPriorEnum = nullptr;
} else if (fParent->fChildren.size() > 0) {
auto lastIter = fParent->fChildren.end();
- Definition* priorEnum;
- while (fParent->fChildren.begin() != lastIter) {
- std::advance(lastIter, -1);
- priorEnum = *lastIter;
- if (Definition::Type::kBracket != priorEnum->fType ||
- (Bracket::kSlashSlash != priorEnum->fBracket
- && Bracket::kSlashStar != priorEnum->fBracket)) {
- break;
+ Definition* priorEnum = fPriorEnum;
+ fPriorEnum = nullptr;
+ if (!priorEnum) {
+ while (fParent->fChildren.begin() != lastIter) {
+ std::advance(lastIter, -1);
+ priorEnum = *lastIter;
+ if (Definition::Type::kBracket != priorEnum->fType ||
+ (Bracket::kSlashSlash != priorEnum->fBracket
+ && Bracket::kSlashStar != priorEnum->fBracket)) {
+ break;
+ }
}
+ fPriorIndex = priorEnum->fParentIndex;
}
if (Definition::Type::kKeyWord == priorEnum->fType
&& KeyWord::kEnum == priorEnum->fKeyWord) {
auto tokenWalker = fParent->fTokens.begin();
- std::advance(tokenWalker, priorEnum->fParentIndex);
- SkASSERT(KeyWord::kEnum == tokenWalker->fKeyWord);
+ std::advance(tokenWalker, fPriorIndex);
while (tokenWalker != fParent->fTokens.end()) {
std::advance(tokenWalker, 1);
+ ++fPriorIndex;
if (Punctuation::kSemicolon == tokenWalker->fPunctuation) {
break;
}
@@ -2103,6 +2118,7 @@
break;
}
}
+ auto saveTokenWalker = tokenWalker;
Definition* start = &*tokenWalker;
bool foundExpected = true;
for (KeyWord expected : {KeyWord::kStatic, KeyWord::kConstExpr, KeyWord::kInt}){
@@ -2116,6 +2132,36 @@
}
std::advance(tokenWalker, 1);
}
+ if (!foundExpected) {
+ foundExpected = true;
+ tokenWalker = saveTokenWalker;
+ for (KeyWord expected : {KeyWord::kStatic, KeyWord::kConst, KeyWord::kNone}){
+ const Definition* test = &*tokenWalker;
+ if (expected != test->fKeyWord) {
+ foundExpected = false;
+ break;
+ }
+ if (tokenWalker == fParent->fTokens.end()) {
+ break;
+ }
+ if (KeyWord::kNone != expected) {
+ std::advance(tokenWalker, 1);
+ }
+ }
+ if (foundExpected) {
+ auto nameToken = priorEnum->fTokens.begin();
+ string enumName = string(nameToken->fContentStart,
+ nameToken->fContentEnd - nameToken->fContentStart);
+ const Definition* test = &*tokenWalker;
+ string constType = string(test->fContentStart,
+ test->fContentEnd - test->fContentStart);
+ if (enumName != constType) {
+ foundExpected = false;
+ } else {
+ std::advance(tokenWalker, 1);
+ }
+ }
+ }
if (foundExpected && tokenWalker != fParent->fTokens.end()) {
const char* nameStart = tokenWalker->fStart;
std::advance(tokenWalker, 1);
@@ -2125,7 +2171,8 @@
start->fName = string(nameStart, tp.fChar - nameStart);
start->fContentEnd = fChar;
priorEnum->fChildren.emplace_back(start);
- }
+ fPriorEnum = priorEnum;
+ }
}
}
}