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()
{
if (level<127)
if (level < MAX_LEVEL)
level++;
}
@ -14,6 +14,12 @@ void IndentedPrint::unindent()
level--;
}
void IndentedPrint::setTabSize(uint8_t n)
{
if (n < MAX_TAB_SIZE)
tabSize = n;
}
size_t IndentedPrint::write(uint8_t c)
{
size_t n = 0;
@ -32,7 +38,7 @@ size_t IndentedPrint::writeTabs()
{
size_t n = 0;
for (int i = 0; i<level; i++)
for (int i = 0; i < level*tabSize; i++)
n += sink.write(' ');
return n;

View File

@ -19,6 +19,7 @@ namespace ArduinoJson
: sink(p)
{
level = 0;
tabSize = 1;
isNewLine = true;
}
@ -26,13 +27,18 @@ namespace ArduinoJson
void indent();
void unindent();
void setTabSize(uint8_t n);
private:
Print& sink;
uint8_t level : 7;
uint8_t level : 4;
uint8_t tabSize : 3;
bool isNewLine : 1;
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
};
}
}