diff options
author | Dimitry Andric <dim@FreeBSD.org> | 2017-01-02 19:26:05 +0000 |
---|---|---|
committer | Dimitry Andric <dim@FreeBSD.org> | 2017-01-02 19:26:05 +0000 |
commit | 14f1b3e8826ce43b978db93a62d1166055db5394 (patch) | |
tree | 0a00ad8d3498783fe0193f3b656bca17c4c8697d /source/Interpreter/OptionValueFileSpec.cpp | |
parent | 4ee8c119c71a06dcad1e0fecc8c675e480e59337 (diff) | |
download | src-14f1b3e8826ce43b978db93a62d1166055db5394.tar.gz src-14f1b3e8826ce43b978db93a62d1166055db5394.zip |
Vendor import of lldb trunk r290819:vendor/lldb/lldb-trunk-r290819
Notes
Notes:
svn path=/vendor/lldb/dist/; revision=311128
svn path=/vendor/lldb/lldb-trunk-r290819/; revision=311129; tag=vendor/lldb/lldb-trunk-r290819
Diffstat (limited to 'source/Interpreter/OptionValueFileSpec.cpp')
-rw-r--r-- | source/Interpreter/OptionValueFileSpec.cpp | 232 |
1 files changed, 95 insertions, 137 deletions
diff --git a/source/Interpreter/OptionValueFileSpec.cpp b/source/Interpreter/OptionValueFileSpec.cpp index 3a282f177fea..a6eb5375851d 100644 --- a/source/Interpreter/OptionValueFileSpec.cpp +++ b/source/Interpreter/OptionValueFileSpec.cpp @@ -9,162 +9,120 @@ #include "lldb/Interpreter/OptionValueFileSpec.h" -// C Includes -// C++ Includes -// Other libraries and framework includes -// Project includes #include "lldb/Core/State.h" #include "lldb/DataFormatters/FormatManager.h" +#include "lldb/Host/FileSystem.h" #include "lldb/Interpreter/Args.h" #include "lldb/Interpreter/CommandCompletions.h" +#include "lldb/Interpreter/CommandInterpreter.h" using namespace lldb; using namespace lldb_private; - -OptionValueFileSpec::OptionValueFileSpec (bool resolve) : - OptionValue(), - m_current_value (), - m_default_value (), - m_data_sp(), - m_data_mod_time (), - m_completion_mask (CommandCompletions::eDiskFileCompletion), - m_resolve (resolve) -{ -} - -OptionValueFileSpec::OptionValueFileSpec (const FileSpec &value, - bool resolve) : - OptionValue(), - m_current_value (value), - m_default_value (value), - m_data_sp(), - m_data_mod_time (), - m_completion_mask (CommandCompletions::eDiskFileCompletion), - m_resolve (resolve) -{ -} - -OptionValueFileSpec::OptionValueFileSpec (const FileSpec ¤t_value, - const FileSpec &default_value, - bool resolve) : - OptionValue(), - m_current_value (current_value), - m_default_value (default_value), - m_data_sp(), - m_data_mod_time (), - m_completion_mask (CommandCompletions::eDiskFileCompletion), - m_resolve (resolve) -{ -} - -void -OptionValueFileSpec::DumpValue (const ExecutionContext *exe_ctx, Stream &strm, uint32_t dump_mask) -{ +OptionValueFileSpec::OptionValueFileSpec(bool resolve) + : OptionValue(), m_current_value(), m_default_value(), m_data_sp(), + m_data_mod_time(), + m_completion_mask(CommandCompletions::eDiskFileCompletion), + m_resolve(resolve) {} + +OptionValueFileSpec::OptionValueFileSpec(const FileSpec &value, bool resolve) + : OptionValue(), m_current_value(value), m_default_value(value), + m_data_sp(), m_data_mod_time(), + m_completion_mask(CommandCompletions::eDiskFileCompletion), + m_resolve(resolve) {} + +OptionValueFileSpec::OptionValueFileSpec(const FileSpec ¤t_value, + const FileSpec &default_value, + bool resolve) + : OptionValue(), m_current_value(current_value), + m_default_value(default_value), m_data_sp(), m_data_mod_time(), + m_completion_mask(CommandCompletions::eDiskFileCompletion), + m_resolve(resolve) {} + +void OptionValueFileSpec::DumpValue(const ExecutionContext *exe_ctx, + Stream &strm, uint32_t dump_mask) { + if (dump_mask & eDumpOptionType) + strm.Printf("(%s)", GetTypeAsCString()); + if (dump_mask & eDumpOptionValue) { if (dump_mask & eDumpOptionType) - strm.Printf ("(%s)", GetTypeAsCString ()); - if (dump_mask & eDumpOptionValue) - { - if (dump_mask & eDumpOptionType) - strm.PutCString (" = "); + strm.PutCString(" = "); - if (m_current_value) - { - strm << '"' << m_current_value.GetPath().c_str() << '"'; - } + if (m_current_value) { + strm << '"' << m_current_value.GetPath().c_str() << '"'; } + } } -Error -OptionValueFileSpec::SetValueFromString (llvm::StringRef value, - VarSetOperationType op) -{ - Error error; - switch (op) - { - case eVarSetOperationClear: - Clear (); - NotifyValueChanged(); - break; - - case eVarSetOperationReplace: - case eVarSetOperationAssign: - if (value.size() > 0) - { - // The setting value may have whitespace, double-quotes, or single-quotes around the file - // path to indicate that internal spaces are not word breaks. Strip off any ws & quotes - // from the start and end of the file path - we aren't doing any word // breaking here so - // the quoting is unnecessary. NB this will cause a problem if someone tries to specify - // a file path that legitimately begins or ends with a " or ' character, or whitespace. - value = value.trim("\"' \t"); - m_value_was_set = true; - m_current_value.SetFile(value.str().c_str(), m_resolve); - m_data_sp.reset(); - m_data_mod_time.Clear(); - NotifyValueChanged(); - } - else - { - error.SetErrorString("invalid value string"); - } - break; - - case eVarSetOperationInsertBefore: - case eVarSetOperationInsertAfter: - case eVarSetOperationRemove: - case eVarSetOperationAppend: - case eVarSetOperationInvalid: - error = OptionValue::SetValueFromString (value, op); - break; +Error OptionValueFileSpec::SetValueFromString(llvm::StringRef value, + VarSetOperationType op) { + Error error; + switch (op) { + case eVarSetOperationClear: + Clear(); + NotifyValueChanged(); + break; + + case eVarSetOperationReplace: + case eVarSetOperationAssign: + if (value.size() > 0) { + // The setting value may have whitespace, double-quotes, or single-quotes + // around the file + // path to indicate that internal spaces are not word breaks. Strip off + // any ws & quotes + // from the start and end of the file path - we aren't doing any word // + // breaking here so + // the quoting is unnecessary. NB this will cause a problem if someone + // tries to specify + // a file path that legitimately begins or ends with a " or ' character, + // or whitespace. + value = value.trim("\"' \t"); + m_value_was_set = true; + m_current_value.SetFile(value.str(), m_resolve); + m_data_sp.reset(); + m_data_mod_time = llvm::sys::TimePoint<>(); + NotifyValueChanged(); + } else { + error.SetErrorString("invalid value string"); } - return error; + break; + + case eVarSetOperationInsertBefore: + case eVarSetOperationInsertAfter: + case eVarSetOperationRemove: + case eVarSetOperationAppend: + case eVarSetOperationInvalid: + error = OptionValue::SetValueFromString(value, op); + break; + } + return error; } -lldb::OptionValueSP -OptionValueFileSpec::DeepCopy () const -{ - return OptionValueSP(new OptionValueFileSpec(*this)); +lldb::OptionValueSP OptionValueFileSpec::DeepCopy() const { + return OptionValueSP(new OptionValueFileSpec(*this)); } - -size_t -OptionValueFileSpec::AutoComplete (CommandInterpreter &interpreter, - const char *s, - int match_start_point, - int max_return_elements, - bool &word_complete, - StringList &matches) -{ - word_complete = false; - matches.Clear(); - CommandCompletions::InvokeCommonCompletionCallbacks (interpreter, - m_completion_mask, - s, - match_start_point, - max_return_elements, - nullptr, - word_complete, - matches); - return matches.GetSize(); +size_t OptionValueFileSpec::AutoComplete( + CommandInterpreter &interpreter, llvm::StringRef s, int match_start_point, + int max_return_elements, bool &word_complete, StringList &matches) { + word_complete = false; + matches.Clear(); + CommandCompletions::InvokeCommonCompletionCallbacks( + interpreter, m_completion_mask, s, match_start_point, max_return_elements, + nullptr, word_complete, matches); + return matches.GetSize(); } - - const lldb::DataBufferSP & -OptionValueFileSpec::GetFileContents(bool null_terminate) -{ - if (m_current_value) - { - const TimeValue file_mod_time = m_current_value.GetModificationTime(); - if (m_data_sp && m_data_mod_time == file_mod_time) - return m_data_sp; - if (null_terminate) - m_data_sp = m_current_value.ReadFileContentsAsCString(); - else - m_data_sp = m_current_value.ReadFileContents(); - m_data_mod_time = file_mod_time; - } - return m_data_sp; +OptionValueFileSpec::GetFileContents(bool null_terminate) { + if (m_current_value) { + const auto file_mod_time = FileSystem::GetModificationTime(m_current_value); + if (m_data_sp && m_data_mod_time == file_mod_time) + return m_data_sp; + if (null_terminate) + m_data_sp = m_current_value.ReadFileContentsAsCString(); + else + m_data_sp = m_current_value.ReadFileContents(); + m_data_mod_time = file_mod_time; + } + return m_data_sp; } - - |