18 OptionValueFormatEntity::OptionValueFormatEntity(
const char *default_format) {
19 if (default_format && default_format[0]) {
20 llvm::StringRef default_format_str(default_format);
21 Status error = FormatEntity::Parse(default_format_str, m_default_entry);
22 if (
error.Success()) {
23 m_default_format = default_format;
24 m_current_format = default_format;
25 m_current_entry = m_default_entry;
30 void OptionValueFormatEntity::Clear() {
31 m_current_entry = m_default_entry;
32 m_current_format = m_default_format;
33 m_value_was_set =
false;
38 dst.reserve(str.size());
40 for (
size_t i = 0, e = str.size(); i != e; ++i) {
43 if (i == 0 || str[i - 1] !=
'\\')
52 if (dump_mask & eDumpOptionType)
53 strm.
Printf(
"(%s)", GetTypeAsCString());
54 if (dump_mask & eDumpOptionValue) {
55 if (dump_mask & eDumpOptionType)
59 strm <<
'"' << escaped <<
'"';
63 Status OptionValueFormatEntity::SetValueFromString(llvm::StringRef value_str,
79 llvm::StringRef trimmed_value_str = value_str.trim();
80 if (!trimmed_value_str.empty()) {
81 const char first_char = trimmed_value_str[0];
82 if (first_char ==
'"' || first_char ==
'\'') {
83 const size_t trimmed_len = trimmed_value_str.size();
84 if (trimmed_len == 1 || value_str[trimmed_len - 1] != first_char) {
85 error.SetErrorString(
"mismatched quotes");
88 value_str = trimmed_value_str.substr(1, trimmed_len - 2);
92 error = FormatEntity::Parse(value_str, entry);
93 if (
error.Success()) {
94 m_current_entry = std::move(entry);
96 m_value_was_set =
true;
106 error = OptionValue::SetValueFromString(value_str, op);
114 FormatEntity::AutoComplete(request);