aboutsummaryrefslogtreecommitdiffhomepage
path: root/tools/bookmaker/parserCommon.cpp
diff options
context:
space:
mode:
authorGravatar Cary Clark <caryclark@skia.org>2018-06-07 09:59:07 -0400
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2018-06-07 14:22:38 +0000
commit0d225395faf27690c724619af35243985bf6e2df (patch)
tree4d5486c91ab2eeb52861030a8b0e7dc23c7e451f /tools/bookmaker/parserCommon.cpp
parentd07dc361bccbb0d1b07f47de42aceca3cff5c39c (diff)
generate SkColor include
bookmaker can now generate SkColor.h This required adding support for #define, typedef, global constexpr, and fixing various bugs, like forward declared structs between comments. Docs-Preview: https://skia.org/?cl=131260 Bug: skia:6898 TBR=caryclark@google.com Change-Id: I6bee0c6f5c3a6820b04472a318abde8a2523dbbb Reviewed-on: https://skia-review.googlesource.com/131260 Reviewed-by: Cary Clark <caryclark@skia.org> Commit-Queue: Cary Clark <caryclark@skia.org> Auto-Submit: Cary Clark <caryclark@skia.org>
Diffstat (limited to 'tools/bookmaker/parserCommon.cpp')
-rw-r--r--tools/bookmaker/parserCommon.cpp15
1 files changed, 13 insertions, 2 deletions
diff --git a/tools/bookmaker/parserCommon.cpp b/tools/bookmaker/parserCommon.cpp
index 652df53e51..8a58b2642b 100644
--- a/tools/bookmaker/parserCommon.cpp
+++ b/tools/bookmaker/parserCommon.cpp
@@ -116,6 +116,9 @@ bool ParserCommon::writeBlockIndent(int size, const char* data) {
if (!size) {
return wroteSomething;
}
+ if (fReturnOnWrite) {
+ return true;
+ }
if (newLine) {
this->lf(1);
}
@@ -137,7 +140,8 @@ bool ParserCommon::writeBlockIndent(int size, const char* data) {
}
bool ParserCommon::writeBlockTrim(int size, const char* data) {
- if (fOutdentNext) {
+ SkASSERT(size >= 0);
+ if (!fReturnOnWrite && fOutdentNext) {
fIndent -= 4;
fOutdentNext = false;
}
@@ -149,9 +153,14 @@ bool ParserCommon::writeBlockTrim(int size, const char* data) {
--size;
}
if (size <= 0) {
- fLastChar = '\0';
+ if (!fReturnOnWrite) {
+ fLastChar = '\0';
+ }
return false;
}
+ if (fReturnOnWrite) {
+ return true;
+ }
SkASSERT(size < 16000);
if (size > 3 && !strncmp("#end", data, 4)) {
fMaxLF = 1;
@@ -182,6 +191,7 @@ bool ParserCommon::writeBlockTrim(int size, const char* data) {
}
void ParserCommon::writePending() {
+ SkASSERT(!fReturnOnWrite);
fPendingLF = SkTMin(fPendingLF, fMaxLF);
bool wroteLF = false;
while (fLinefeeds < fPendingLF) {
@@ -214,6 +224,7 @@ void ParserCommon::writePending() {
}
void ParserCommon::writeString(const char* str) {
+ SkASSERT(!fReturnOnWrite);
const size_t len = strlen(str);
SkASSERT(len > 0);
SkASSERT(' ' < str[0]);