diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/formatter.cpp | 34 | ||||
| -rw-r--r-- | src/formatter.h | 10 |
2 files changed, 43 insertions, 1 deletions
diff --git a/src/formatter.cpp b/src/formatter.cpp index 36e49c8..6eb3b86 100644 --- a/src/formatter.cpp +++ b/src/formatter.cpp | |||
| @@ -1,7 +1,9 @@ | |||
| 1 | #include "formatter.h" | 1 | #include "formatter.h" |
| 2 | 2 | ||
| 3 | Bu::Formatter::Formatter( Stream &rOut ) : | 3 | Bu::Formatter::Formatter( Stream &rOut ) : |
| 4 | rOut( rOut ) | 4 | rOut( rOut ), |
| 5 | uIndent( 0 ), | ||
| 6 | cIndent( '\t' ) | ||
| 5 | { | 7 | { |
| 6 | } | 8 | } |
| 7 | 9 | ||
| @@ -100,6 +102,33 @@ void Bu::Formatter::writeAligned( const char *sStr, int iLen ) | |||
| 100 | usedFormat(); | 102 | usedFormat(); |
| 101 | } | 103 | } |
| 102 | 104 | ||
| 105 | void Bu::Formatter::incIndent() | ||
| 106 | { | ||
| 107 | if( uIndent < 0xFFU ) | ||
| 108 | uIndent++; | ||
| 109 | } | ||
| 110 | |||
| 111 | void Bu::Formatter::decIndent() | ||
| 112 | { | ||
| 113 | if( uIndent > 0 ) | ||
| 114 | uIndent--; | ||
| 115 | } | ||
| 116 | |||
| 117 | void Bu::Formatter::setIndent( uint8_t uLevel ) | ||
| 118 | { | ||
| 119 | uIndent = uLevel; | ||
| 120 | } | ||
| 121 | |||
| 122 | void Bu::Formatter::clearIndent() | ||
| 123 | { | ||
| 124 | uIndent = 0; | ||
| 125 | } | ||
| 126 | |||
| 127 | void Bu::Formatter::setIndentChar( char cIndent ) | ||
| 128 | { | ||
| 129 | this->cIndent = cIndent; | ||
| 130 | } | ||
| 131 | |||
| 103 | Bu::Formatter::Fmt &Bu::Formatter::Fmt::width( unsigned int uWidth ) | 132 | Bu::Formatter::Fmt &Bu::Formatter::Fmt::width( unsigned int uWidth ) |
| 104 | { | 133 | { |
| 105 | this->uMinWidth = uWidth; | 134 | this->uMinWidth = uWidth; |
| @@ -148,6 +177,9 @@ Bu::Formatter &Bu::operator<<( Bu::Formatter &rOut, Bu::Formatter::Special s ) | |||
| 148 | { | 177 | { |
| 149 | case Formatter::nl: | 178 | case Formatter::nl: |
| 150 | rOut.write("\n", 1 ); | 179 | rOut.write("\n", 1 ); |
| 180 | char ci = rOut.getIndentChar(); | ||
| 181 | for( int j = 0; j < rOut.getIndent(); j++ ) | ||
| 182 | rOut.write( &ci, 1 ); | ||
| 151 | break; | 183 | break; |
| 152 | } | 184 | } |
| 153 | return rOut; | 185 | return rOut; |
diff --git a/src/formatter.h b/src/formatter.h index d9066cb..693c3ed 100644 --- a/src/formatter.h +++ b/src/formatter.h | |||
| @@ -87,6 +87,14 @@ namespace Bu | |||
| 87 | void writeAligned( const Bu::FString &sStr ); | 87 | void writeAligned( const Bu::FString &sStr ); |
| 88 | void writeAligned( const char *sStr, int iLen ); | 88 | void writeAligned( const char *sStr, int iLen ); |
| 89 | 89 | ||
| 90 | void incIndent(); | ||
| 91 | void decIndent(); | ||
| 92 | void setIndent( uint8_t uLevel ); | ||
| 93 | void clearIndent(); | ||
| 94 | uint8_t getIndent() const { return uIndent; } | ||
| 95 | void setIndentChar( char cIndent ); | ||
| 96 | char getIndentChar() const { return cIndent; } | ||
| 97 | |||
| 90 | void setFormat( const Fmt &f ) | 98 | void setFormat( const Fmt &f ) |
| 91 | { | 99 | { |
| 92 | fLast = f; | 100 | fLast = f; |
| @@ -178,6 +186,8 @@ namespace Bu | |||
| 178 | Stream &rOut; | 186 | Stream &rOut; |
| 179 | Fmt fLast; | 187 | Fmt fLast; |
| 180 | bool bTempFmt; | 188 | bool bTempFmt; |
| 189 | uint8_t uIndent; | ||
| 190 | char cIndent; | ||
| 181 | }; | 191 | }; |
| 182 | 192 | ||
| 183 | typedef Formatter::Fmt Fmt; | 193 | typedef Formatter::Fmt Fmt; |
