[Click] ANNOUNCE/RFC: Type-safe argument parsing

Eddie Kohler kohler at cs.ucla.edu
Tue May 10 10:40:50 EDT 2011


Whoops!  Sorry about that; fixed.

E


On 5/10/11 2:52 AM, Roberto Riggio wrote:
> Something is missing:
>
> CXX ../elements/standard/addressinfo.cc
> ../elements/standard/addressinfo.cc: In member function ‘virtual int
> AddressInfo::configure(Vector<String>&, ErrorHandler*)’:
> ../elements/standard/addressinfo.cc:97: error: ‘EtherAddressArg’ was not
> declared in this scope
>
>
> Il 10/05/2011 02:35, Eddie Kohler ha scritto:
>> All,
>>
>> The argument parsing branch is merged!  Thanks for your comments.
>>
>> Eddie
>>
>>
>> On 04/28/2011 01:26 PM, Eddie Kohler wrote:
>>> Hi all,
>>>
>>> A longstanding Click annoyance is argument parsing, which has been rewritten
>>> more than once.
>>>
>>> There are still problems with the current cp_va_kparse versions.
>>>
>>> - Type safety: Did you know that this is a serious bug, that the compiler
>>> cannot catch?
>>>
>>> #include<click/confparse.hh>
>>> bool b;
>>> ...
>>> if (cp_va_kparse(conf, this, errh,
>>>                  "I_FORGOT_WHAT_B_WAS", cpkP+cpkM, cpInteger,&b,
>>>                  cpEnd)<    0)
>>>         return -1;
>>>
>>> - Multithread safety: Did you know that if cp_va_kparse is called in parallel
>>> in two threads, the two calls will unsafely collide on a static array of
>>> "cp_value" objects?
>>>
>>> - Multithread safety: Did you know that cp_integer() and friends set a global
>>> variable, cp_errno -- and that cp_errno settings can collide across threads?
>>>
>>> -*-
>>>
>>> The github "argparse" branch, which will soon be shifted to master, fixes
>>> these problems with a new Args class.  Args is much nicer to type and read
>>> than cp_va.
>>>
>>> #include<click/args.hh>
>>> bool b;
>>> ...
>>> if (Args(conf, this, errh)
>>>         .read_mp("B", b)
>>>         .complete()<    0)
>>>         return -1;
>>>
>>> There are other advantages: it's easier and cleaner to write and refer to new
>>> parser types, for example.
>>>
>>> -*-
>>>
>>> I am interested in feedback and comments.  Please look and report any
>>> problems.  Thanks to Cliff for discussion.
>>>
>>> Eddie
>>> _______________________________________________
>>> click mailing list
>>> click at amsterdam.lcs.mit.edu
>>> https://amsterdam.lcs.mit.edu/mailman/listinfo/click
>> _______________________________________________
>> click mailing list
>> click at amsterdam.lcs.mit.edu
>> https://amsterdam.lcs.mit.edu/mailman/listinfo/click
>
>



More information about the click mailing list