#pragma once #include #include #include #include template struct ObjectInfo { std::size_t GetSize() const { return sizeof(T); } T data; }; template <> struct ObjectInfo { std::size_t GetSize() const { return data.size(); } std::size_t SetSize(std::size_t size) { data.resize(size); return data.size(); } std::string data; }; template <> struct ObjectInfo> { std::size_t GetSize() const { return data.size(); } std::size_t SetSize(std::size_t size) { data.resize(size); return data.size(); } std::vector data; }; struct OLEObjectHeader { ObjectInfo OLEVersion; ObjectInfo FormatID; ObjectInfo ClassName; ObjectInfo TopicName; ObjectInfo ItemName; }; struct EmbededObject { OLEObjectHeader Header; ObjectInfo> NativeData; }; struct LinkedObject {}; struct OLEObject { OLEObjectHeader Header; std::unique_ptr EObject = nullptr; std::unique_ptr LOobject = nullptr; }; OLEObject OLEObjectParser(std::span data);