aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Buland <eichlan@xagasoft.com>2009-03-16 07:54:47 +0000
committerMike Buland <eichlan@xagasoft.com>2009-03-16 07:54:47 +0000
commit94fff060ee9ec6c2a8da75568702d8e944963d46 (patch)
treeca1180937070a61f82f3b63406d3b229b162f48a
parent7433ec9074051ea5d9f91458e2e91e29ec8020f2 (diff)
downloadlibbu++-94fff060ee9ec6c2a8da75568702d8e944963d46.tar.gz
libbu++-94fff060ee9ec6c2a8da75568702d8e944963d46.tar.bz2
libbu++-94fff060ee9ec6c2a8da75568702d8e944963d46.tar.xz
libbu++-94fff060ee9ec6c2a8da75568702d8e944963d46.zip
Added some experimental indenting code to the formatter, not sure I quite dig
it yet, I'd recommend not using it much for now, the API could change drastically.
-rw-r--r--src/formatter.cpp34
-rw-r--r--src/formatter.h10
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
3Bu::Formatter::Formatter( Stream &rOut ) : 3Bu::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
105void Bu::Formatter::incIndent()
106{
107 if( uIndent < 0xFFU )
108 uIndent++;
109}
110
111void Bu::Formatter::decIndent()
112{
113 if( uIndent > 0 )
114 uIndent--;
115}
116
117void Bu::Formatter::setIndent( uint8_t uLevel )
118{
119 uIndent = uLevel;
120}
121
122void Bu::Formatter::clearIndent()
123{
124 uIndent = 0;
125}
126
127void Bu::Formatter::setIndentChar( char cIndent )
128{
129 this->cIndent = cIndent;
130}
131
103Bu::Formatter::Fmt &Bu::Formatter::Fmt::width( unsigned int uWidth ) 132Bu::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;