Restructure ZoneDefinitionWriting

This commit is contained in:
Jan
2021-03-08 17:28:24 +01:00
parent e6a91c0305
commit d96f813e73
18 changed files with 285 additions and 221 deletions

View File

@ -24,4 +24,9 @@ public:
{
return static_cast<T*>(m_ptr);
}
const T* Asset() const
{
return static_cast<const T*>(const_cast<const void*>(m_ptr));
}
};

View File

@ -0,0 +1,13 @@
#include "ZoneDefinition.h"
ZoneDefinitionEntry::ZoneDefinitionEntry()
: m_is_reference(false)
{
}
ZoneDefinitionEntry::ZoneDefinitionEntry(std::string type, std::string name, bool isReference)
: m_asset_type(std::move(type)),
m_asset_name(std::move(name)),
m_is_reference(isReference)
{
}

View File

@ -0,0 +1,22 @@
#pragma once
#include <unordered_map>
#include <vector>
class ZoneDefinitionEntry
{
public:
std::string m_asset_type;
std::string m_asset_name;
bool m_is_reference;
ZoneDefinitionEntry();
ZoneDefinitionEntry(std::string type, std::string name, bool isReference);
};
class ZoneDefinition
{
public:
std::unordered_map<std::string, std::string> m_metadata;
std::vector<ZoneDefinitionEntry> m_assets;
};

View File

@ -0,0 +1,36 @@
#include "ZoneDefinitionStream.h"
ZoneDefinitionInputStream::ZoneDefinitionInputStream(std::istream& stream)
: m_stream(stream)
{
}
std::unique_ptr<ZoneDefinition> ZoneDefinitionInputStream::ReadDefinition()
{
return nullptr;
}
ZoneDefinitionOutputStream::ZoneDefinitionOutputStream(std::ostream& stream)
: m_stream(stream)
{
}
void ZoneDefinitionOutputStream::EmptyLine() const
{
m_stream << "\n";
}
void ZoneDefinitionOutputStream::WriteComment(const std::string& comment) const
{
m_stream << "// " << comment << "\n";
}
void ZoneDefinitionOutputStream::WriteMetaData(const std::string& metaDataKey, const std::string& metaDataValue) const
{
m_stream << ">" << metaDataKey << "," << metaDataValue << "\n";
}
void ZoneDefinitionOutputStream::WriteEntry(const std::string& entryKey, const std::string& entryValue) const
{
m_stream << entryKey << "," << entryValue << "\n";
}

View File

@ -0,0 +1,28 @@
#pragma once
#include <iostream>
#include <memory>
#include "ZoneDefinition.h"
class ZoneDefinitionInputStream
{
std::istream& m_stream;
public:
explicit ZoneDefinitionInputStream(std::istream& stream);
std::unique_ptr<ZoneDefinition> ReadDefinition();
};
class ZoneDefinitionOutputStream
{
std::ostream& m_stream;
public:
explicit ZoneDefinitionOutputStream(std::ostream& stream);
void EmptyLine() const;
void WriteComment(const std::string& comment) const;
void WriteMetaData(const std::string& metaDataKey, const std::string& metaDataValue) const;
void WriteEntry(const std::string& entryKey, const std::string& entryValue) const;
};