On Sun, Nov 16, 2008 at 12:43 PM, Jean-Philippe Barette-LaPierre <
[EMAIL PROTECTED]> wrote:

>
>
> On Sun, Nov 16, 2008 at 6:45 AM, Piotr Dobrogost <[EMAIL PROTECTED]>wrote:
>
>> Jean
>>
>> Jean-Philippe Barette-LaPierre wrote:
>> >
>> >
>> > On Fri, Nov 14, 2008 at 4:12 PM, Piotr Dobrogost <
>> [EMAIL PROTECTED]
>> > <mailto:[EMAIL PROTECTED]>> wrote:
>> >
>> >     Jean
>> >
>> >     Using Easy::setOpt is not as convenient as it should be.
>> >
>> >     Now we have
>> >
>> >     std::string address = "http://example.com";
>> >     // Setting the URL to retrive.
>> >     request.setOpt(new cURLpp::Options::Url(address));
>> >
>> >     Could we do better?
>> >
>> >     std::string url = "http://example.com";
>> >     // Setting the URL to retrive.
>> >     request.set<url>(address);
>> >
>> >
>> > Well... No... The thing is setOpt wouldn't be able to distinguish
>> > between different "string" options (Url, Proxy, Interface, etc).
>> However:
>>
>> I know you use this scheme to be able to make this distinction. The point
>> is that passing an option type as template's argument to set<typename T>
>> gives the same information like passing an option type as a type of the
>> argument of function.
>> The question is what does wrapping arguments of setOpt in the Options::X
>> type give us? Later on it's convenient to have all options' types be derived
>> from one base class (OptionBase) to treat them polymorphically in containers
>> and alghorithms . But in the moment of setting an option using setOpt we
>> don't really need this and we shouldn't force users to wrap all these values
>> only to give them to setOpt method.
>> What do you think?
>
>
> So, if I take your previous example:
> >     std::string url = "http://example.com";
> >     // Setting the URL to retrive.
> >     request.set<url>(address);
>
> and I fix the typo:
>
> request.set<Url>(address);
>

sorry, I made a typo doing it. Take two:
  std::string address = "http://example.com";
  // Setting the URL to retrive.
  request.set<cURLpp::Options::Url>(address);


>
>
> Then, I would say that I don't see any argument against. However, I
> wouldn't remove the former
> method, since people already had done some coding using it.
>
> So, we could add something like this:
>
> template< OptionType >
> void setOpt(T::ParamValue value)
> {
>    setOpt(new Option(value));
> }
>
> then, we would be able to call
> request.setOpt<cURLpp::Options::Url>(address);
>
> Now, if you really want "set" instead of setOpt, I don't have any problems
> with it, but with one restriction:
>  - "set" should be only an alias to "setOpt".
> Again, code has already been done with setOpt, and I don't want
> a different set of functionalities for set or setOpt. setOpt is more in
> line
> with libcURL and I want to keep its name scheme.
>
>
>
>>
>>
>> Regards
>> Piotr Dobrogost
>> _______________________________________________
>> cURLpp mailing list
>> [email protected]
>> http://www.rrette.com/mailman/listinfo/curlpp
>>
>
>
_______________________________________________
cURLpp mailing list
[email protected]
http://www.rrette.com/mailman/listinfo/curlpp

Reply via email to