Boost logo

Boost :

From: Miguel Tadeu (m_tadeu_at_[hidden])
Date: 2007-10-19 11:00:35


Ok, a little bit of explanation...

Let's follow a real life example that occured to me a while ago. I wrote a
piece of software that received a buffer through rs232. I had to interpret
that buffer and, depending on the opcode I had to call the right function.
Lest's just say there were about 100 different opcodes. Their destination
were to several different objects.

Solution at that time:
- read opcode from the buffer
- creat a big switch/case to call the right object::function

Switch/case are apopriate if the opcode is not a string, in which case
you'll just have 100 if/else if clauses.

My solution:
- [begining]register each function in a container
- [on each communication]pack each parameter in a vector<any>
- call get the function by it's opcode(number/string/whatever) and call it

Miguel Tadeu

Miguel Tadeu wrote:

> I wrote a small library that attempts to abstract function calls. This
> proved me useful in the following situations:
>
> - when I need to find a callback function( lots of if's or big switch )
> - when I deal with communication frames with opcodes
> - several other libraries use callback mechanisms( i.e: dbus )
>
> and brings these advantages:
> - cleaner code( main objective )
> - makes possible to isolate class implementations from the low level call
> - makes it easy to implement a polymorphism like mechanism
>
> Currentely, it's in beta phase. If enough interest is shown, there is
> surely room for minor improvements.
>
>
> Thanks,
> Miguel Tadeu
> _______________________________________________
> Unsubscribe & other changes:
> http://lists.boost.org/mailman/listinfo.cgi/boost


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