#pragma once

#include <filesystem>
#include <map>
#include <string>

class ApplicationIconCache
{
public:
    ~ApplicationIconCache();

    ApplicationIconCache(const ApplicationIconCache &) = delete;
    ApplicationIconCache &operator=(const ApplicationIconCache &) = delete;
    ApplicationIconCache() = default;

    unsigned int textureFor(const std::filesystem::path &executable);
    void shutdown();

private:
    unsigned int loadTexture(const std::filesystem::path &executable) const;
    std::map<std::string, unsigned int> textures_;
};
