Boost logo

Boost :

Subject: Re: [boost] Interest in Remote Procedure Call Library?
From: vicente.botet (vicente.botet_at_[hidden])
Date: 2010-02-07 15:08:29


Hi,

----- Original Message -----
From: "Daniel Larimer" <dlarimer_at_[hidden]>
To: <boost_at_[hidden]>
Sent: Sunday, February 07, 2010 5:58 PM
Subject: Re: [boost] Interest in Remote Procedure Call Library?

>
> The macro system currently does not provide a way to handle "overloading" though I would love to hear your ideas on how to achieve it.

It is not easy to give you my idead on hwo to achieve overloading on your library as far as we don't have access to docummentation and code. I hope you company will let you show it to us.
 
> The macro currently generates something along the general idea of the code below only using a lot of "typeof" and other template tricks to automatically determine the signatures:
>
> MetaClass
> {
> class methodNameMeta
> {
> RTN operator( ARG, ... );
> }methodName;
> class anotherMethodMeta
> {
> RTN operator( ARG, ... );
> }anotherMethod;
> }
>
> Thus allowing the syntax:
>
> MetaClass mc;
> mc.methodName(...)
>
> Effectively I would need to define the operator() for each of the overloaded versions and thus I would need to get a member function pointer which would require the developer to specify more than just the method name in the TMETHOD() macro. So I suppose I could probably achieve it with the following syntax:

If you define an operator() by overloaded function, the user will don't need to give more information that the name and the specific parameters, preserving the current C++ syntax. Which other informations do you need to select the correct oberloading?

> META_METHOD( CLassName,
> TMETHOD_OVERLOAD(methodName,
> SIGNATURE( int (float) ),
> SIGNATURE( void (float, float) ), ...
> )
> )
>
> As the code is currently written the TMETHOD() macro is relatively short and simply derives from a template base class based upon the arity, parameters, and class name. I would either need to adopt multiple inheritance or place more "real code" inside the macro.

I can not help you in this as I have not enough information.

BTW, the interface you presented initialy was really simple.

META_INTERFACE( SomeClass,
METHOD(add)
METHOD(sub)
METHOD(inout)
)

And was able to get the single function signature for add. I don't know which techniques do you use to get this, but can't the same techniques get all the signatures sharing the same function name? Could you explain how do you get the complete signature?
 
> So, to answer your question, it is possible though not as straight forward as the non-overloaded methods.
>
> Thoughts?

I'm sure that some C++ developers will not use the library if they can not overload the member functions.
 
> Dan
>
> On Feb 7, 2010, at 5:24 AM, vicente.botet wrote:
>
>> Does the library takes care of overloading? Could you show an example?

Please don't top post, it is against the guidelines of this ML as we lost the context.

Best,
Vicente


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