#pragma once #include #include "WaylandProtocol.hpp" #include "hyprland-toplevel-mapping-v1.hpp" class CToplevelWindowMappingHandle { public: CToplevelWindowMappingHandle(SP resource_); private: SP resource; friend class CToplevelMappingManager; friend class CToplevelMappingProtocol; }; class CToplevelMappingManager { public: CToplevelMappingManager(SP resource_); bool good() const; private: SP resource; }; class CToplevelMappingProtocol : IWaylandProtocol { public: CToplevelMappingProtocol(const wl_interface* iface, const int& ver, const std::string& name); virtual void bindManager(wl_client* client, void* data, uint32_t ver, uint32_t id); private: void onManagerResourceDestroy(CToplevelMappingManager* mgr); void destroyHandle(CHyprlandToplevelWindowMappingHandleV1* handle); std::vector> m_vManagers; std::vector> m_vHandles; friend class CToplevelMappingManager; }; namespace PROTO { inline UP toplevelMapping; };