mirror of
https://gitlab.com/OpenMW/openmw.git
synced 2025-01-26 09:35:28 +00:00
72 lines
1.4 KiB
C++
72 lines
1.4 KiB
C++
|
#ifndef _ESM_WRITER_H
|
||
|
#define _ESM_WRITER_H
|
||
|
|
||
|
#include <iostream>
|
||
|
#include <assert.h>
|
||
|
|
||
|
#include "esm_common.hpp"
|
||
|
|
||
|
namespace ESM {
|
||
|
|
||
|
class ESMWriter
|
||
|
{
|
||
|
public:
|
||
|
void writeHNString(const std::string& name, const std::string& data);
|
||
|
void writeHNOString(const std::string& name, const std::string& data)
|
||
|
{
|
||
|
if (!data.empty())
|
||
|
writeHNString(name, data);
|
||
|
}
|
||
|
|
||
|
template<typename T>
|
||
|
void writeHNT(const std::string& name, const T& data)
|
||
|
{
|
||
|
writeName(name);
|
||
|
writeT(data);
|
||
|
}
|
||
|
|
||
|
template<typename T>
|
||
|
void writeHNT(const std::string& name, const T& data, int size)
|
||
|
{
|
||
|
assert(sizeof(T) == size);
|
||
|
writeHNT(name, data);
|
||
|
}
|
||
|
|
||
|
template<typename T>
|
||
|
void writeHT(const T& data)
|
||
|
{
|
||
|
writeT((unsigned int)sizeof(T));
|
||
|
writeT(data);
|
||
|
}
|
||
|
|
||
|
template<typename T>
|
||
|
void writeHT(const T& data, int size)
|
||
|
{
|
||
|
assert(sizeof(T) == size);
|
||
|
writeHT(data);
|
||
|
}
|
||
|
|
||
|
template<typename T>
|
||
|
void writeT(const T& data)
|
||
|
{
|
||
|
write((char*)&data, sizeof(T));
|
||
|
}
|
||
|
|
||
|
template<typename T>
|
||
|
void writeT(const T& data, int size)
|
||
|
{
|
||
|
assert(sizeof(T) == size);
|
||
|
writeT(data);
|
||
|
}
|
||
|
|
||
|
void writeHString(const std::string& data);
|
||
|
void writeName(const std::string& data);
|
||
|
void write(const char* data, int size);
|
||
|
|
||
|
private:
|
||
|
std::ostream m_stream;
|
||
|
};
|
||
|
|
||
|
}
|
||
|
#endif
|