Program Listing for File PAL.hpp

Return to documentation for file (engine/include/Cacao/PAL.hpp)

#pragma once

#include "DllHelper.hpp"

#include <string>
#include <memory>

namespace Cacao {
    class CACAO_API PAL {
      public:
        static PAL& Get();

        PAL(const PAL&) = delete;
        PAL(PAL&&) = delete;
        PAL& operator=(const PAL&) = delete;
        PAL& operator=(PAL&&) = delete;

        void SetModule(const std::string& mod);

        bool InitializeModule();

        void GfxConnect();

        void GfxDisconnect();

        void TerminateModule();

        template<typename T>
        void ConfigureImplPtr(T& obj) = delete;

        struct Impl;
      private:
        std::unique_ptr<Impl> impl;
        friend class ImplAccessor;

        PAL();
        ~PAL();
    };
}