aboutsummaryrefslogtreecommitdiffhomepage
path: root/tools/bookmaker/includeWriter.cpp
diff options
context:
space:
mode:
authorGravatar Cary Clark <caryclark@skia.org>2017-10-11 10:37:52 -0400
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2017-10-11 15:26:37 +0000
commit884dd7d428e3913efaead21af83a9d8848062c83 (patch)
tree9b1884f4fdb2de27afd0cea90edbbc478051abe6 /tools/bookmaker/includeWriter.cpp
parent4815db5938afe88fa9a7f9ab0df38850b4c0093a (diff)
General clean up on bookmaker.
Command line runs without error for SkBitmap, SkPath, SkRect, SkIRect, SkPixmap, SkCanvas. Docs-Preview: https://skia.org/?cl=57112 TBR: caryclark@google.com Bug: skia:6898 Change-Id: I73b69ae8ffdf0a1e6bc187dc8a9dfb28f7766faa Reviewed-on: https://skia-review.googlesource.com/57112 Reviewed-by: Cary Clark <caryclark@skia.org> Commit-Queue: Cary Clark <caryclark@skia.org>
Diffstat (limited to 'tools/bookmaker/includeWriter.cpp')
-rw-r--r--tools/bookmaker/includeWriter.cpp39
1 files changed, 38 insertions, 1 deletions
diff --git a/tools/bookmaker/includeWriter.cpp b/tools/bookmaker/includeWriter.cpp
index 38213618c5..ff7c0e3c56 100644
--- a/tools/bookmaker/includeWriter.cpp
+++ b/tools/bookmaker/includeWriter.cpp
@@ -673,7 +673,7 @@ Definition* IncludeWriter::structMemberOut(const Definition* memberStart, const
return valueEnd;
}
-void IncludeWriter::structSizeMembers(Definition& child) {
+void IncludeWriter::structSizeMembers(const Definition& child) {
int longestType = 0;
Definition* typeStart = nullptr;
int longestName = 0;
@@ -815,6 +815,7 @@ bool IncludeWriter::populate(Definition* def, ParentPair* prevPair, RootDefiniti
fContinuation = nullptr;
bool inStruct = false;
bool inConstructor = false;
+ bool inInline = false;
for (auto& child : def->fTokens) {
if (memberEnd) {
if (memberEnd != &child) {
@@ -824,8 +825,34 @@ bool IncludeWriter::populate(Definition* def, ParentPair* prevPair, RootDefiniti
memberEnd = nullptr;
}
if (child.fPrivate) {
+ if (MarkType::kMethod == child.fMarkType) {
+ inInline = true;
+ }
continue;
}
+ if (inInline) {
+ if (Definition::Type::kKeyWord == child.fType) {
+ SkASSERT(MarkType::kMethod != child.fMarkType);
+ continue;
+ }
+ if (Definition::Type::kPunctuation == child.fType) {
+ if (Punctuation::kLeftBrace == child.fPunctuation) {
+ inInline = false;
+ } else {
+ SkASSERT(Punctuation::kAsterisk == child.fPunctuation);
+ }
+ continue;
+ }
+ if (Definition::Type::kWord == child.fType) {
+ string name(child.fContentStart, child.fContentEnd - child.fContentStart);
+ SkASSERT(string::npos != name.find("::"));
+ continue;
+ }
+ if (Definition::Type::kBracket == child.fType) {
+ SkASSERT(Bracket::kParen == child.fBracket);
+ continue;
+ }
+ }
if (fContinuation) {
if (Definition::Type::kKeyWord == child.fType) {
if (KeyWord::kFriend == child.fKeyWord ||
@@ -1131,6 +1158,16 @@ bool IncludeWriter::populate(Definition* def, ParentPair* prevPair, RootDefiniti
}
if (Definition::Type::kWord == child.fType) {
if (MarkType::kMember == child.fMarkType) {
+ if (!memberStart) {
+ auto iter = def->fTokens.begin();
+ std::advance(iter, child.fParentIndex - 1);
+ memberStart = &*iter;
+ if (!fStructDef) {
+ SkASSERT(KeyWord::kStruct == def->fParent->fKeyWord);
+ fStructDef = def->fParent;
+ this->structSizeMembers(*fStructDef);
+ }
+ }
memberEnd = this->structMemberOut(memberStart, child);
fStart = child.fContentEnd + 1;
fDeferComment = nullptr;