1
0
mirror of https://github.com/borgesdan/xn65 synced 2024-12-29 21:54:47 +01:00
xn65/framework/content/defaultreaders.hpp
2024-05-07 17:27:04 -03:00

38 lines
992 B
C++

#ifndef XNA_CONTENT_DEFAULTREADERS_ARRAY_HPP
#define XNA_CONTENT_DEFAULTREADERS_ARRAY_HPP
#include "reader.hpp"
#include "../default.hpp"
namespace xna {
template <typename T>
class ArrayReader : public ContentTypeReaderT<std::vector<T>> {
public:
void Initialize(sptr<ContentTypeReaderManager> const& manager) {
elementReader = manager->GetTypeReader(typeof<T>());
}
sptr<std::vector<T>> Read(ContentReader& input, std::vector<T>& existingInstance) override {
const auto length = input.ReadInt32();
std::vector<T> objArray(length);
for (size_t index = 0; index < length; ++index)
objArray[index] = input.ReadObject<T>(elementReader);
return objArray;
}
private:
sptr<ContentTypeReaderManager> elementReader = nullptr;
};
class BooleanReader : public ContentTypeReaderT<bool> {
sptr<bool> Read(ContentReader& input, bool& existingInstance) override {
auto value = input.ReadBoolean();
auto b = New<bool>(value);
return b;
}
};
}
#endif