Added setTabSize()

This commit is contained in:
Benoit Blanchon
2014-08-26 11:58:33 +02:00
parent 602cc104f9
commit 61952a9bcd
2 changed files with 18 additions and 6 deletions

View File

@ -4,7 +4,7 @@ using namespace ArduinoJson::Generator;
void IndentedPrint::indent() void IndentedPrint::indent()
{ {
if (level<127) if (level < MAX_LEVEL)
level++; level++;
} }
@ -14,6 +14,12 @@ void IndentedPrint::unindent()
level--; level--;
} }
void IndentedPrint::setTabSize(uint8_t n)
{
if (n < MAX_TAB_SIZE)
tabSize = n;
}
size_t IndentedPrint::write(uint8_t c) size_t IndentedPrint::write(uint8_t c)
{ {
size_t n = 0; size_t n = 0;
@ -32,7 +38,7 @@ size_t IndentedPrint::writeTabs()
{ {
size_t n = 0; size_t n = 0;
for (int i = 0; i<level; i++) for (int i = 0; i < level*tabSize; i++)
n += sink.write(' '); n += sink.write(' ');
return n; return n;

View File

@ -19,6 +19,7 @@ namespace ArduinoJson
: sink(p) : sink(p)
{ {
level = 0; level = 0;
tabSize = 1;
isNewLine = true; isNewLine = true;
} }
@ -26,13 +27,18 @@ namespace ArduinoJson
void indent(); void indent();
void unindent(); void unindent();
void setTabSize(uint8_t n);
private: private:
Print& sink; Print& sink;
uint8_t level : 7; uint8_t level : 4;
uint8_t tabSize : 3;
bool isNewLine : 1; bool isNewLine : 1;
size_t writeTabs(); size_t writeTabs();
const int MAX_LEVEL = 15; // because it's only 4 bits
const int MAX_TAB_SIZE = 7; // because it's only 3 bits
}; };
} }
} }