# class glw::ProgramList

    #include <ShaderProgramList.h>

    class ProgramList {
    public:
        // construction

        ProgramList();
        ~ProgramList();

        // methods

        static PProgramList Create();
        void ClearAll();
        void Reload();
        void AddFromFile(const std::string& program_name, const ShaderPipeline& files, const std::map<std::string, std::string> replace_map = std::map<std::string, std::string>());
        void AddFromSource(const std::string& program_name, const ShaderPipeline& sources, const std::map<std::string, std::string> replace_map = std::map<std::string, std::string>());
        bool Exist(const std::string& program_name);
        void Use(const std::string& program_name) const;
        std::vector<std::string> GetAllProgramNames() const;
        glw::PProgram GetProgram(const std::string& program_name);
        bool IsEmpty();
    };