aboutsummaryrefslogtreecommitdiffhomepage
path: root/tools/bookmaker/includeWriter.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tools/bookmaker/includeWriter.cpp')
-rw-r--r--tools/bookmaker/includeWriter.cpp32
1 files changed, 30 insertions, 2 deletions
diff --git a/tools/bookmaker/includeWriter.cpp b/tools/bookmaker/includeWriter.cpp
index c34fc9391f..463ac92c91 100644
--- a/tools/bookmaker/includeWriter.cpp
+++ b/tools/bookmaker/includeWriter.cpp
@@ -486,7 +486,7 @@ void IncludeWriter::enumSizeItems(const Definition& child) {
int longestValue = 0;
int valueLen = 0;
const char* lastEnd = nullptr;
- SkASSERT(child.fChildren.size() == 1 || child.fChildren.size() == 2);
+// SkASSERT(child.fChildren.size() == 1 || child.fChildren.size() == 2);
auto brace = child.fChildren[0];
if (KeyWord::kClass == brace->fKeyWord) {
brace = brace->fChildren[0];
@@ -585,6 +585,9 @@ void IncludeWriter::enumSizeItems(const Definition& child) {
// walk children and output complete method doxygen description
void IncludeWriter::methodOut(const Definition* method, const Definition& child) {
+ if (string::npos != method->fName.find("validate")) {
+ SkDebugf("");
+ }
if (fPendingMethod) {
fIndent -= 4;
fPendingMethod = false;
@@ -1076,12 +1079,22 @@ bool IncludeWriter::populate(Definition* def, ParentPair* prevPair, RootDefiniti
const char* bodyEnd = fDeferComment ? fDeferComment->fContentStart - 1 :
fAttrDeprecated ? fAttrDeprecated->fContentStart - 1 :
child.fContentStart;
+ if (Definition::Type::kBracket == def->fType && Bracket::kDebugCode == def->fBracket) {
+ auto tokenIter = def->fParent->fTokens.begin();
+ std::advance(tokenIter, def->fParentIndex - 1);
+ Definition* prior = &*tokenIter;
+ if (Definition::Type::kBracket == def->fType &&
+ Bracket::kSlashStar == prior->fBracket) {
+ bodyEnd = prior->fContentStart - 1;
+ }
+ }
// FIXME: roll end-trimming into writeBlockTrim call
while (fStart < bodyEnd && ' ' >= bodyEnd[-1]) {
--bodyEnd;
}
int blockSize = (int) (bodyEnd - fStart);
if (blockSize) {
+ string debugstr(fStart, blockSize);
this->writeBlock(blockSize, fStart);
}
startDef = &child;
@@ -1445,7 +1458,22 @@ bool IncludeWriter::populate(BmhParser& bmhParser) {
this->lfcr();
this->writePending();
fclose(fOut);
- SkDebugf("wrote %s\n", fileName.c_str());
+ fflush(fOut);
+ size_t slash = fFileName.find_last_of('/');
+ if (string::npos == slash) {
+ slash = 0;
+ }
+ size_t back = fFileName.find_last_of('\\');
+ if (string::npos == back) {
+ back = 0;
+ }
+ string dir = fFileName.substr(0, SkTMax(slash, back) + 1);
+ string readname = dir + fileName;
+ if (this->writtenFileDiffers(fileName, readname)) {
+ SkDebugf("wrote updated %s\n", fileName.c_str());
+ } else {
+ remove(fileName.c_str());
+ }
}
return allPassed;
}