Boost logo

Boost :

From: Alexander Nasonov (alnsn_at_[hidden])
Date: 2004-11-14 11:51:13


Markus Sch?pflin wrote:
> 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 is fine except that it doesn't look like a valid function call.
IMO, function call style is easier to remember.

> 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.

This is nice for general things but not that nice for call traces.
They are special case of logging with some specific requirements.
Some of them might be:

  - strace/ltrace format
  - function decls
  - Object identities (== dynamic_cast<void*>(this) for poly classes)
    primarily for sequence diagrams

Uniform interface could let you switch between different formats without
rewriting any tracing code.

-- 
Alexander Nasonov

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