[olympic/studio/modlib] East const Studio

This commit is contained in:
2023-12-15 00:33:09 -06:00
parent 5ae6df7e05
commit 58d13a3ad9
25 changed files with 113 additions and 126 deletions

View File

@ -23,9 +23,9 @@ ox::String configPath(keel::Context const&ctx) noexcept;
template<typename T>
ox::Result<T> readConfig(keel::Context &ctx, ox::CRStringView name) noexcept {
oxAssert(name != "", "Config type has no TypeName");
const auto path = ox::sfmt("/{}.json", name);
auto const path = ox::sfmt("/{}.json", name);
ox::PassThroughFS fs(configPath(ctx));
const auto [buff, err] = fs.read(path);
auto const [buff, err] = fs.read(path);
if (err) {
oxErrf("Could not read config file: {}\n", toStr(err));
return err;
@ -42,19 +42,19 @@ ox::Result<T> readConfig(keel::Context &ctx) noexcept {
template<typename T>
ox::Error writeConfig(keel::Context &ctx, ox::CRStringView name, T *data) noexcept {
oxAssert(name != "", "Config type has no TypeName");
const auto path = ox::sfmt("/{}.json", name);
auto const path = ox::sfmt("/{}.json", name);
ox::PassThroughFS fs(configPath(ctx));
if (const auto err = fs.mkdir("/", true)) {
if (auto const err = fs.mkdir("/", true)) {
oxErrf("Could not create config directory: {}\n", toStr(err));
return err;
}
oxRequireM(buff, ox::writeOC(*data));
*buff.back().value = '\n';
if (const auto err = fs.write(path, buff.data(), buff.size())) {
if (auto const err = fs.write(path, buff.data(), buff.size())) {
oxErrf("Could not read config file: {}\n", toStr(err));
return OxError(2, "Could not read config file");
}
return OxError(0);
return {};
}
template<typename T>
@ -66,7 +66,7 @@ ox::Error writeConfig(keel::Context &ctx, T *data) noexcept {
template<typename T, typename Func>
void openConfig(keel::Context &ctx, ox::CRStringView name, Func f) noexcept {
oxAssert(name != "", "Config type has no TypeName");
const auto [c, err] = readConfig<T>(ctx, name);
auto const [c, err] = readConfig<T>(ctx, name);
oxLogError(err);
f(&c);
}

View File

@ -15,9 +15,9 @@ namespace studio {
class ItemMaker {
public:
const ox::String name;
const ox::String parentDir;
const ox::String fileExt;
ox::String const name;
ox::String const parentDir;
ox::String const fileExt;
constexpr explicit ItemMaker(ox::StringView pName, ox::StringView pParentDir, ox::CRStringView pFileExt) noexcept:
name(pName),
parentDir(pParentDir),
@ -30,8 +30,8 @@ class ItemMaker {
template<typename T>
class ItemMakerT: public ItemMaker {
private:
const T item;
const ox::ClawFormat fmt;
T const item;
ox::ClawFormat const fmt;
public:
constexpr ItemMakerT(
ox::StringView pDisplayName,
@ -62,7 +62,7 @@ class ItemMakerT: public ItemMaker {
fmt(pFmt) {
}
ox::Error write(turbine::Context &ctx, ox::CRStringView pName) const noexcept override {
const auto path = ox::sfmt("/{}/{}.{}", parentDir, pName, fileExt);
auto const path = ox::sfmt("/{}/{}.{}", parentDir, pName, fileExt);
auto sctx = turbine::applicationData<studio::StudioContext>(ctx);
keel::createUuidMapping(keelCtx(ctx), path, ox::UUID::generate().unwrap());
return sctx->project->writeObj(path, item, fmt);

View File

@ -21,7 +21,7 @@ class Popup {
ox::String m_title;
public:
// emits path parameter
ox::Signal<ox::Error(const ox::String&)> finished;
ox::Signal<ox::Error(ox::String const&)> finished;
virtual ~Popup() noexcept = default;
@ -43,7 +43,7 @@ class Popup {
m_title = std::move(title);
}
constexpr const ox::String &title() const noexcept {
constexpr ox::String const&title() const noexcept {
return m_title;
}

View File

@ -29,7 +29,7 @@ enum class ProjectEvent {
[[nodiscard]]
constexpr ox::Result<ox::StringView> fileExt(ox::CRStringView path) noexcept {
const auto extStart = ox::find(path.crbegin(), path.crend(), '.').offset();
auto const extStart = ox::find(path.crbegin(), path.crend(), '.').offset();
if (!extStart) {
return OxError(1, "Cannot open a file without valid extension.");
}
@ -76,7 +76,7 @@ class Project {
ox::Error subscribe(ProjectEvent e, ox::SignalHandler *tgt, Functor &&slot) const noexcept;
[[nodiscard]]
const ox::Vector<ox::String> &fileList(ox::CRStringView ext) noexcept;
ox::Vector<ox::String> const&fileList(ox::CRStringView ext) noexcept;
private:
void buildFileIndex() noexcept;
@ -114,14 +114,14 @@ ox::Error Project::writeObj(ox::CRStringView path, T const&obj, ox::ClawFormat f
oxReturnError(ox::buildTypeDef(&m_typeStore, &obj));
}
// write out type store
const auto descPath = ox::sfmt("/{}/type_descriptors", m_projectDataDir);
auto const descPath = ox::sfmt("/{}/type_descriptors", m_projectDataDir);
oxReturnError(mkdir(descPath));
for (auto const&t : m_typeStore.typeList()) {
oxRequireM(typeOut, ox::writeClaw(*t, ox::ClawFormat::Organic));
// replace garbage last character with new line
*typeOut.back().value = '\n';
// write to FS
const auto typePath = ox::sfmt("/{}/{}", descPath, buildTypeId(*t));
auto const typePath = ox::sfmt("/{}/{}", descPath, buildTypeId(*t));
oxReturnError(writeBuff(typePath, typeOut));
}
oxReturnError(keel::setAsset(m_ctx, path, obj));

View File

@ -18,7 +18,7 @@ class UndoCommand {
virtual void undo() noexcept = 0;
[[nodiscard]]
virtual int commandId() const noexcept = 0;
virtual bool mergeWith(const UndoCommand *cmd) noexcept;
virtual bool mergeWith(UndoCommand const*cmd) noexcept;
};
class UndoStack {
@ -43,9 +43,9 @@ class UndoStack {
return m_stackIdx;
}
ox::Signal<ox::Error(const studio::UndoCommand*)> redoTriggered;
ox::Signal<ox::Error(const studio::UndoCommand*)> undoTriggered;
ox::Signal<ox::Error(const studio::UndoCommand*)> changeTriggered;
ox::Signal<ox::Error(studio::UndoCommand const*)> redoTriggered;
ox::Signal<ox::Error(studio::UndoCommand const*)> undoTriggered;
ox::Signal<ox::Error(studio::UndoCommand const*)> changeTriggered;
};
}