Boost logo

Boost :

From: Markus Schöpflin (markus.schoepflin_at_[hidden])
Date: 2004-11-14 04:42:09


Alexander Nasonov wrote:

> I have a couple of ideas about making function traces nicer:
>
> 1. Use of PP_SEQ interface to "parse" function name and arguments
>
> int X::foo(char* buf, size_t len)
> {
> BOOST_TRACE_MEM_FUN( (foo)(buf, len) );
> // ...
> }
>

[snip]

I have been using some helper macros for tracing which use the boost PP
library.

Basically it looks liket this:

int X::foo(char* buf, size_t len)
{
     some_log_object << STREAM_VARS_SEQ((buf)(len));
}

This expands to

   "buf=" << buf << ",len=" << len

What I like most is that you can specify expressions during tracing like
this: STREAM_VARS_SEQ((buf[0])(2*len)) which of course gets you

   "buf[0]=" << buf[0] << ",2*len" << 2*len

While usage is not really restricted to tracing, that where it gets used
currently.

Markus


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk