MCPcopy Create free account
hub / github.com/KhronosGroup/SPIRV-Tools / parse_flag_value

Function parse_flag_value

tools/util/flags.cpp:83–107  ·  view source on GitHub ↗

Parse a uint32_t flag value.

Source from the content-addressed store, hash-verified

81
82// Parse a uint32_t flag value.
83bool parse_flag_value(Flag<uint32_t>& flag, const std::string& value) {
84 std::regex unsigned_pattern("^ *[0-9]+ *$");
85 if (!std::regex_match(value, unsigned_pattern)) {
86 std::cerr << "'" << value << "' is not a unsigned number." << std::endl;
87 return false;
88 }
89
90 errno = 0;
91 char* end_ptr = nullptr;
92 const uint64_t number = strtoull(value.c_str(), &end_ptr, 10);
93 if (end_ptr == nullptr || end_ptr != value.c_str() + value.size() ||
94 errno == EINVAL) {
95 std::cerr << "'" << value << "' is not a unsigned number." << std::endl;
96 return false;
97 }
98
99 if (errno == ERANGE || number > static_cast<size_t>(UINT32_MAX)) {
100 std::cerr << "'" << value << "' cannot be represented as a 32bit unsigned."
101 << std::endl;
102 return false;
103 }
104
105 flag.value() = static_cast<uint32_t>(number);
106 return true;
107}
108
109// "Parse" a string flag value (assigns it, cannot fail).
110bool parse_flag_value(Flag<std::string>& flag, const std::string& value) {

Callers 1

parse_flagFunction · 0.85

Calls 3

c_strMethod · 0.80
sizeMethod · 0.45
valueMethod · 0.45

Tested by

no test coverage detected