diff --git a/PolyEngine/Core/Src/pe/core/io/IProtocolSAX.hpp b/PolyEngine/Core/Src/pe/core/io/IProtocolSAX.hpp new file mode 100644 index 00000000..2450ef5b --- /dev/null +++ b/PolyEngine/Core/Src/pe/core/io/IProtocolSAX.hpp @@ -0,0 +1,58 @@ +#include +#include +#include + +namespace pe::core::io { + +enum class ErrorSAX { + INTERNAL, + _COUNT +}; + +using ResultSAX = utils::Result; + +class IProtocolSAX : public BaseObject<> +{ + virtual ResultSAX key(std::string_view name) = 0; + virtual ResultSAX metakey(std::string_view name) = 0; + + virtual ResultSAX null() = 0; + + virtual ResultSAX boolean(bool value) = 0; + + virtual ResultSAX number(int32_t value) = 0; + virtual ResultSAX number(uint32_t value) = 0; + virtual ResultSAX number(int64_t value) = 0; + virtual ResultSAX number(uint64_t value) = 0; + virtual ResultSAX number(float value) = 0; + virtual ResultSAX number(double value) = 0; + + virtual ResultSAX text(std::string_view text) = 0; + virtual ResultSAX text(storage::String&& text) = 0; + + virtual ResultSAX binaryStream(const uint8_t* bytes, size_t size) = 0; + + virtual ResultSAX startObject() = 0; + virtual ResultSAX endObject() = 0; + + virtual ResultSAX startArray() = 0; + virtual ResultSAX endArray() = 0; +}; + +class IEventHandlerSAX : IProtocolSAX +{ + virtual uint8_t* binaryStreamBufferRequest(size_t size) { return nullptr; } + virtual void binaryStreamBufferFilled(const ResultSAX& status) {} +}; + +class IReaderSAX +{ + virtual ResultSAX read(IEventHandlerSAX& handler); +}; + +class IWriterSAX : IProtocolSAX +{ + virtual ResultSAX write(); +}; + +} // namespace pe::core::io \ No newline at end of file diff --git a/PolyEngine/Engine/Src/pe/engine/EnginePCH.hpp b/PolyEngine/Engine/Src/pe/engine/EnginePCH.hpp index 9e3e1fcb..d8cec4bc 100644 --- a/PolyEngine/Engine/Src/pe/engine/EnginePCH.hpp +++ b/PolyEngine/Engine/Src/pe/engine/EnginePCH.hpp @@ -43,6 +43,8 @@ #include #include +// IO +#include // Other #include @@ -50,7 +52,8 @@ #include #include #include -#include +#include +#include // OpenAL #include