#ifndef INCLUDE_SHADER_PROGRAM_DATA_IMPLEMENTATION # error Never include this file directly include 'shader_program_data.hpp' #endif #include #include "util/for_each.hpp" #include "util/logger.hpp" #include "opengl/error.hpp" namespace zgl { inline shader_program_data::shader_program_data(GLuint program_id) : m_handle{ program_id } {} inline shader_program_data::shader_program_data(shader_program_data&& other) noexcept { m_handle = other.m_handle; other.m_handle.program_id = 0; } inline shader_program_data& shader_program_data::operator=(shader_program_data&& other) noexcept { if (&other != this) { this->~shader_program_data(); m_handle = other.m_handle; other.m_handle.program_id = 0; } return *this; } inline shader_program_data::~shader_program_data() { if (m_handle.program_id) { glDeleteProgram(m_handle.program_id); } } [[nodiscard]] inline shader_program_handle shader_program_data::handle() const { return m_handle; } }