Lines Matching refs:arg
200 [name](const auto &arg) { return arg->GetName() == name; });
207 std::for_each(sub_args_.begin(), sub_args_.end(), [](auto &arg) { arg->ResetDefaultValue(); });
221 bool Add(PandArgBase *arg)
223 if (arg == nullptr) {
227 bool success = args_.insert(arg).second;
229 errstr_ += "pandargs: Argument " + arg->GetName() + " has duplicate\n";
234 bool PushBackTail(PandArgBase *arg)
236 if (arg == nullptr) {
240 if (std::find(tail_args_.begin(), tail_args_.end(), arg) != tail_args_.end()) {
241 errstr_ += "pandargs: Tail argument " + arg->GetName() + " is already in tail arguments list\n";
244 tail_args_.emplace_back(arg);
345 bool IsArgSet(PandArgBase *arg) const
347 return args_.find(arg) != args_.end();
360 auto arg = static_cast<PandArgCompound *>(i);
363 for (auto sub_arg : arg->GetSubArgs()) {
510 auto arg = parent_arg->FindSubArg(arg_name);
511 if (arg == nullptr) {
520 ParseNextParam(arg, value_str);
525 if (arg->GetType() != PandArgType::BOOL) {
531 static_cast<PandArg<bool> *>(arg)->SetValue(true);
541 auto arg = static_cast<PandArgCompound *>(FindArg(arg_name));
542 if (arg == nullptr) {
546 arg->SetValue(true);
553 if (!ParseSubArgument(arg, arg_str)) {
558 if (!ParseSubArgument(arg, sub_args_str.substr(start))) {
563 return arg;
593 PandArgBase *arg = FindArg(arg_name);
594 if (arg == nullptr) {
598 if (arg->GetType() == PandArgType::COMPOUND) {
606 static_cast<PandArgCompound *>(arg)->SetValue(true);
609 return arg;
614 PandArgBase *arg = nullptr;
663 return arg;
717 size_t ParseNextParam(PandArgBase *arg, std::string_view argstr)
719 if (argv_index_ >= argv_vec_.size() || arg == nullptr) {
722 switch (arg->GetType()) {
724 return ParseStringArgParam(static_cast<PandArg<std::string> *>(arg), argstr);
726 return ParseIntArgParam(static_cast<PandArg<int> *>(arg), argstr);
728 return ParseDoubleArgParam(static_cast<PandArg<double> *>(arg), argstr);
730 return ParseBoolArgParam(static_cast<PandArg<bool> *>(arg), argstr);
732 return ParseUint32ArgParam(static_cast<PandArg<uint32_t> *>(arg), argstr);
734 return ParseUint64ArgParam(static_cast<PandArg<uint64_t> *>(arg), argstr);
736 return ParseListArgParam(static_cast<PandArg<arg_list_t> *>(arg), argstr);
741 errstr_.append(arg->GetName());
752 std::size_t ParseStringArgParam(PandArg<std::string> *arg, std::string_view argstr)
754 arg->SetValue(std::string(argstr));
758 std::size_t ParseIntArgParam(PandArg<int> *arg, std::string_view argstr)
773 "pandargs: \"" + arg->GetName() + "\" argument has invalid parameter value \"" + param_str + "\"\n";
776 if (IsIntegerArgInRange(arg, num)) {
777 arg->SetValue(num);
779 errstr_ += "pandargs: \"" + arg->GetName() + "\" argument has out of range parameter value \"" +
783 errstr_ += "pandargs: \"" + arg->GetName() + "\" argument has out of range parameter value \"" + param_str +
789 std::size_t ParseDoubleArgParam(PandArg<double> *arg, std::string_view argstr)
793 arg->SetValue(std::stod(param_str));
796 "pandargs: \"" + arg->GetName() + "\" argument has invalid parameter value \"" + param_str + "\"\n";
801 std::size_t ParseBoolArgParam(PandArg<bool> *arg, std::string_view argstr, bool is_tail_param = false)
807 arg->SetValue(true);
812 SetBoolUnexpectedValueError(arg, param_str);
816 // OR bool arg at the end of arguments line
820 SetBoolUnexpectedValueError(arg, param_str);
831 arg->SetValue(true);
837 arg->SetValue(false);
848 SetBoolUnexpectedValueError(arg, param_str);
850 arg->SetValue(true);
854 "pandargs: Tail argument " + arg->GetName() + " has unexpected parameter value " + param_str + "\n";
855 arg->ResetDefaultValue();
861 std::size_t ParseUint64ArgParam(PandArg<uint64_t> *arg, std::string_view argstr)
876 "pandargs: \"" + arg->GetName() + "\" argument has invalid parameter value \"" + param_str + "\"\n";
879 if (IsIntegerArgInRange<uint64_t>(arg, num)) {
880 arg->SetValue(num);
882 errstr_ += "pandargs: \"" + arg->GetName() + "\" argument has out of range parameter value \"" +
887 "pandargs: \"" + arg->GetName() + "\" argument has invalid parameter value \"" + param_str + "\"\n";
892 std::size_t ParseUint32ArgParam(PandArg<uint32_t> *arg, std::string_view argstr)
907 "pandargs: \"" + arg->GetName() + "\" argument has invalid parameter value \"" + param_str + "\"\n";
910 if (IsIntegerArgInRange<uint32_t>(arg, num)) {
911 arg->SetValue(num);
913 errstr_ += "pandargs: \"" + arg->GetName() + "\" argument has out of range parameter value \"" +
918 "pandargs: \"" + arg->GetName() + "\" argument has invalid parameter value \"" + param_str + "\"\n";
923 std::size_t ParseListArgParam(PandArg<arg_list_t> *arg, std::string_view argstr)
927 if (arg->WasSet()) {
928 value = arg->GetValue();
932 if (!arg->GetDelimiter().has_value()) {
934 arg->SetValue(value);
937 std::string delimiter = arg->GetDelimiter().value();
948 arg->SetValue(value);
1008 bool IsIntegerArgInRange(PandArg<T> *arg, T num)
1010 if (!(arg->GetMinMaxVal().has_value())) {
1013 std::pair<T, T> min_max = arg->GetMinMaxVal().value();
1022 void SetBoolUnexpectedValueError(PandArg<bool> *arg, const std::string &wrongvalue)
1024 errstr_ += "pandargs: Bool argument " + arg->GetName() + " has unexpected parameter value " + wrongvalue + "\n";
1025 arg->ResetDefaultValue();