
----- Original Message ----- From: "Steven Watanabe" <watanabesj@gmail.com> To: <boost@lists.boost.org> Sent: Tuesday, October 14, 2008 9:12 PM Subject: Re: [boost] boost.org Source-Code, Concepts & Idioms.
AMDG
Hartmut Kaiser wrote:
Can this be made to format macro expansions nicely?
What do you mean by that?
Since the point is to make the code more readable, if we do any macro expansion for instance:
#define SOME_MACRO(...) \ template<class T> \ class C { \ /*stuff*/ \ };
SOME_MACRO(x, y, z)
We don't want this all to end up on one line.
In Christ, Steven Watanabe
Hi, I'm not sure to understand what exactly you want, which are the two generated sources you are locking for. Any way here they are my 2 cts. If the problem is to have a single source able to generate the current files, and on the other hand a more readable pseudo C++, I think that we need a different preprocesor. I've made something like that some years ago (lost now) The preprocessor * allow to define one line macros @@define SOME_MACRO(...) XXXX * allow to define multi line macros preserving white spaces and line breaks @@define_begin SOME_MACRO(...) template<class T> class C { /*stuff*/ }; @@define_end * allow conditional preprocesing @@if @@else @@endif * file inclusion @@include "file" The preprocessing was done using some sed/awk and the CPP preprocessor, on three phases. 1st. Prepare the input to the CPP . Replace all the CPP preprocessing # directives by $$ . Add a end of line pattern $$ . Replace n white spaces by " $$n$$ " . Add the \ at the end of the multi line macros and remove the @@define_end . Replace the new preprocesing directives @@ by # . Replace C comments /* */ by $$* *$$ . Replace C++ comments // by $$$$ 2nd. apply the CPP preprocessor 3rd. restore the initial CPP directives . Replace all the CPP preprocessing $$ directives by # . Replace the pattern $$ by a end of line . Replace the pattern " $$n$$ " by n white spaces . Replace the patterns by $$* *$$ by /* */ . Replace the pattern $$$$ by // The problem is if library authors will use this preprocessing to get the two required outputs. I don't know if this can help. Vicente