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

Eddie Kohler kohler at cs.ucla.edu
Mon May 9 20:35:11 EDT 2011


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


More information about the click mailing list