public CommandArgProto(string name, char mnemonic = '\0', UsageElement usage = null, string value = null, ArgValidator validator = null, CommandArgOptions options = CommandArgOptions.None)
     : base(name, mnemonic, value)
 {
     Usage      = Usage.CreateUsage(name, mnemonic, usage);
     _validator = validator ?? new ArgValidator();
     Options    = options & ~CommandArgOptions.IsPositional;
 }
 public CommandArgProto(string name, int index, UsageElement usage = null, string value = null, ArgValidator validator = null, CommandArgOptions options = CommandArgOptions.None)
     : base(index, name)
 {
     Usage      = Usage.CreateUsage(name, usage);
     _validator = validator ?? new ArgValidator();
     Options    = options | CommandArgOptions.IsPositional;
 }
        public CommandLineProto(string name, UsageElement usage, Func <CommandLineProto, CommandLine, CommandResult> func, params CommandArgProto[] args)
            : base(args)
        {
            CommandArgProto proto = new CommandArgProto(name, 0, usage, null, null, CommandArgOptions.IsCommand | CommandArgOptions.IsRequired);

            Insert(0, proto);
            _command = func;
        }