Larry Evans wrote:

I disagree. The following (almost) line by line translation of your example
to marg_ostream:

As I said, I don't know the details of the implementation, so that was a speculation based on how I presumed it was implemented.

That's why I like your way; however, in the back of my mind,
there's a feeling I started out that way (this was done years ago)
and for some reason, after running some tests, found it better to
do it this other way.  I think the problem was I didn't always
know when the beginning-of-line occured; hence, I needed the
marg_ostream to keep track of this.  I can't remember specifics
yet.

The problem lies in what to do when reading in data from an external source like a file. In that instance, you have to manually scan the file for '\n' characters and indent then.

This is a problem with my design, one solution to which would be to provide a special method for string output that performs the indenting on '\n' characters and the default << operator for strings and characters does not do this.

I have made several improvements to the original code, including:

[1] added a security check for indentor::endIndent() to prevent m_indent.level dropping below 0

[2] added the ability for indentor::indent() to output a newline character

[3] indent() is now implemented using width() and fill() functions from OutputFileType, restoring their values afterwards - thanks to Larry Evans for the suggestion

[4] added char/wchar_t support by inheriting the character type from OutputFileType

-rhd-
mailto:[EMAIL PROTECTED]

_________________________________________________________________
Worried what your kids see online? Protect them better with MSN 8 http://join.msn.com/?page=features/parental&pgmarket=en-gb&XAPID=186&DI=1059

Attachment: indentor.zip
Description: Zip compressed data

_______________________________________________
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost

Reply via email to