What have you done with UDAs?

Alex Parrill via Digitalmars-d digitalmars-d at puremagic.com
Tue Jun 23 08:05:25 PDT 2015


On Tuesday, 23 June 2015 at 14:52:30 UTC, Dmitry Olshansky wrote:
>> An example command:
>>
>> @("<nanoseconds>") // arguments
>> @("Sets the amount of time to increment the clock on each 
>> frame.") //
>> description
>> @ShellOnly // can't be ran from command line
>> int cmd_set_time_per_frame(string[] args) {
>>      // ...
>> }
>
> Awesome. Is it open-sourced?
> How about handling argument conversion automatically (via to! 
> and/or custom functions)?
>
> Say :
> @("<num1> <num2>")
> @CmdName("plus")
> void add(int a, int b)
> {
> 	writelen(a+b);
> }
>
>
> To be automagically callable like:
>
> ./prog plus 2 4

Not yet; its ATM a bit coupled with the application I'm writing.

Specifying types with the arguments is definitely feasible, but I 
haven't gotten around to writing it yet. You could also possibly 
specify flag arguments (--foo) by specifying default parameters.

(somewhat related: std.getopts is kinda bad; you can't get help 
text without successfully parsing arguments and `required` breaks 
`--help`)


More information about the Digitalmars-d mailing list