1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118
|
#include "clDapSettingsStore.hpp"
#include "fileutils.h"
JSONItem DapEntry::To() const
{
auto json = JSONItem::createObject();
json.addProperty("name", m_name);
json.addProperty("command", m_command);
json.addProperty("connection_string", m_connection_string);
json.addProperty("environment", m_environment);
json.addProperty("flags", m_flags);
json.addProperty("env_format", (int)m_envFormat);
json.addProperty("launch_type", (int)m_launch_type);
return json;
}
void DapEntry::From(const JSONItem& json)
{
m_name = json["name"].toString();
m_command = json["command"].toString();
m_connection_string = json["connection_string"].toString();
m_environment = json["environment"].toString();
m_flags = json["flags"].toSize_t(m_flags);
m_envFormat = (dap::EnvFormat)json["env_format"].toInt((int)dap::EnvFormat::LIST);
m_launch_type = (DapLaunchType)json["launch_type"].toInt((int)m_launch_type);
}
//////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////
clDapSettingsStore::clDapSettingsStore() {}
clDapSettingsStore::~clDapSettingsStore() {}
void clDapSettingsStore::Clear() { m_entries.clear(); }
void clDapSettingsStore::Load(const wxFileName& file)
{
Clear();
// ensure that we have something to load
if(!file.FileExists()) {
wxFileName::Mkdir(file.GetPath(), wxS_DIR_DEFAULT, wxPATH_MKDIR_FULL);
FileUtils::WriteFileContent(file, "[]");
}
JSON root(file);
if(!root.isOk()) {
return;
}
JSONItem arr = root.toElement();
int count = arr.arraySize();
for(int i = 0; i < count; ++i) {
DapEntry d;
d.From(arr[i]);
m_entries.insert({ d.GetName(), d });
}
}
void clDapSettingsStore::Save(const wxFileName& path)
{
if(!path.IsOk()) {
return;
}
JSON root(cJSON_Array);
for(const auto& vt : m_entries) {
root.toElement().arrayAppend(vt.second.To());
}
root.save(path);
}
bool clDapSettingsStore::Get(const wxString& name, DapEntry* entry) const
{
if(!entry || m_entries.count(name) == 0) {
return false;
}
*entry = m_entries.find(name)->second;
return true;
}
bool clDapSettingsStore::Contains(const wxString& name) const
{
DapEntry entry;
return Get(name, &entry);
}
bool clDapSettingsStore::Set(const DapEntry& entry)
{
m_entries.erase(entry.GetName());
return m_entries.insert({ entry.GetName(), entry }).second;
}
bool clDapSettingsStore::Delete(const wxString& name)
{
if(m_entries.count(name) == 0) {
return false;
}
m_entries.erase(name);
return true;
}
void clDapSettingsStore::Set(const std::vector<DapEntry>& entries)
{
m_entries.clear();
Update(entries);
}
void clDapSettingsStore::Update(const std::vector<DapEntry>& entries)
{
for(const auto& d : entries) {
m_entries.erase(d.GetName());
m_entries.insert({ d.GetName(), d });
}
}
|