/* * Copyright 2011-2016, Rene Gollent, rene@gollent.com. * Distributed under the terms of the MIT License. */ #include "DebuggerUiSettingsFactory.h" #include #include "GuiTeamUiSettings.h" DebuggerUiSettingsFactory* DebuggerUiSettingsFactory::sDefaultInstance = NULL; DebuggerUiSettingsFactory::DebuggerUiSettingsFactory() { } DebuggerUiSettingsFactory::~DebuggerUiSettingsFactory() { } DebuggerUiSettingsFactory* DebuggerUiSettingsFactory::Default() { return sDefaultInstance; } status_t DebuggerUiSettingsFactory::CreateDefault() { sDefaultInstance = new(std::nothrow) DebuggerUiSettingsFactory(); if (sDefaultInstance == NULL) return B_NO_MEMORY; return B_OK; } void DebuggerUiSettingsFactory::DeleteDefault() { delete sDefaultInstance; sDefaultInstance = NULL; } status_t DebuggerUiSettingsFactory::Create(const BMessage& archive, TeamUiSettings*& settings) const { int32 type; status_t error = archive.FindInt32("type", &type); if (error != B_OK) return error; switch (type) { case TEAM_UI_SETTINGS_TYPE_GUI: settings = new(std::nothrow) GuiTeamUiSettings(); if (settings == NULL) return B_NO_MEMORY; error = settings->SetTo(archive); if (error != B_OK) { delete settings; settings = NULL; return error; } break; case TEAM_UI_SETTINGS_TYPE_CLI: // TODO: implement once we have a CLI interface // (and corresponding settings) return B_UNSUPPORTED; default: return B_BAD_DATA; } return B_OK; }