blob: a9fd4abdf6cf55feeb703a41c2b179bd75122b98 [file] [log] [blame]
// Copyright 2020 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "src/developer/debug/zxdb/client/breakpoint_settings.h"
#include "src/developer/debug/zxdb/client/setting_schema_definition.h"
namespace zxdb {
// static
const char* BreakpointSettings::StopModeToString(StopMode stop_mode) {
switch (stop_mode) {
case BreakpointSettings::StopMode::kNone:
return ClientSettings::Breakpoint::kStopMode_None;
case BreakpointSettings::StopMode::kThread:
return ClientSettings::Breakpoint::kStopMode_Thread;
case BreakpointSettings::StopMode::kProcess:
return ClientSettings::Breakpoint::kStopMode_Process;
case BreakpointSettings::StopMode::kAll:
return ClientSettings::Breakpoint::kStopMode_All;
}
return "<invalid>";
}
// static
std::optional<BreakpointSettings::StopMode> BreakpointSettings::StringToStopMode(
std::string_view value) {
if (value == ClientSettings::Breakpoint::kStopMode_None) {
return BreakpointSettings::StopMode::kNone;
} else if (value == ClientSettings::Breakpoint::kStopMode_Thread) {
return BreakpointSettings::StopMode::kThread;
} else if (value == ClientSettings::Breakpoint::kStopMode_Process) {
return BreakpointSettings::StopMode::kProcess;
} else if (value == ClientSettings::Breakpoint::kStopMode_All) {
return BreakpointSettings::StopMode::kAll;
}
return std::nullopt;
}
// static
const char* BreakpointSettings::TypeToString(BreakpointSettings::Type t) {
switch (t) {
case BreakpointSettings::Type::kSoftware:
return ClientSettings::Breakpoint::kType_Software;
case BreakpointSettings::Type::kHardware:
return ClientSettings::Breakpoint::kType_Hardware;
case BreakpointSettings::Type::kReadWrite:
return ClientSettings::Breakpoint::kType_ReadWrite;
case BreakpointSettings::Type::kWrite:
return ClientSettings::Breakpoint::kType_Write;
case BreakpointSettings::Type::kLast:
break; // Not valid.
}
FXL_NOTREACHED();
return "<invalid>";
}
// static
std::optional<BreakpointSettings::Type> BreakpointSettings::StringToType(std::string_view value) {
if (value == ClientSettings::Breakpoint::kType_Software) {
return BreakpointSettings::Type::kSoftware;
} else if (value == ClientSettings::Breakpoint::kType_Hardware) {
return BreakpointSettings::Type::kHardware;
} else if (value == ClientSettings::Breakpoint::kType_ReadWrite) {
return BreakpointSettings::Type::kReadWrite;
} else if (value == ClientSettings::Breakpoint::kType_Write) {
return BreakpointSettings::Type::kWrite;
}
return std::nullopt;
}
} // namespace zxdb