//===-- OptionValuePathMappings.cpp -----------------------------*- C++ -*-===// // // The LLVM Compiler Infrastructure // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// #include "lldb/Interpreter/OptionValuePathMappings.h" // C Includes // C++ Includes // Other libraries and framework includes // Project includes #include "lldb/Core/Stream.h" #include "lldb/Interpreter/Args.h" using namespace lldb; using namespace lldb_private; void OptionValuePathMappings::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", (m_path_mappings.GetSize() > 0) ? "\n" : ""); m_path_mappings.Dump(&strm); } } Error OptionValuePathMappings::SetValueFromCString (const char *value, VarSetOperationType op) { Error error; Args args(value); const size_t argc = args.GetArgumentCount(); switch (op) { case eVarSetOperationClear: Clear (); break; case eVarSetOperationReplace: // Must be at least one index + 1 pair of paths, and the pair count must be even if (argc >= 3 && (((argc - 1) & 1) == 0)) { uint32_t idx = Args::StringToUInt32(args.GetArgumentAtIndex(0), UINT32_MAX); const uint32_t count = m_path_mappings.GetSize(); if (idx > count) { error.SetErrorStringWithFormat("invalid file list index %u, index must be 0 through %u", idx, count); } else { for (size_t i=1; i= 3 && (((argc - 1) & 1) == 0)) { uint32_t idx = Args::StringToUInt32(args.GetArgumentAtIndex(0), UINT32_MAX); const uint32_t count = m_path_mappings.GetSize(); if (idx > count) { error.SetErrorStringWithFormat("invalid file list index %u, index must be 0 through %u", idx, count); } else { if (op == eVarSetOperationInsertAfter) ++idx; for (size_t i=1; i 0) { std::vector remove_indexes; bool all_indexes_valid = true; size_t i; for (i=0; all_indexes_valid && i