<commit_before>#ifndef INSANITY_INTERFACE_SHADER_PROGRAM
#define INSANITY_INTERFACE_SHADER_PROGRAM

#include "Constants.hpp"
#include "IObject.hpp"
#include "TMatrix.hpp"

namespace Insanity
{
	template<typename _ctype>
	class IString;

	template<typename _elemType, u8 _elemCount>
	class TVector;

	enum class EShaderType
	{
		Vertex,
		Fragment,
		TessellationControl,
		TessellationEvaluate,
		Geometry,
		Compute
	};

	class INSANITY_API IShaderProgram : public virtual IObject
	{
	public:
		//=================================================
		//Load, compile, and add the shader to the program.
		//Returns bool: Was compilation successful?
		//=================================================
		virtual bool AddShader(EShaderType type, char const * filename) = 0;
		
		//=================================================
		//Links the program.<commit_msg>Mark IShaderProgram as deprecated<commit_after>#ifndef INSANITY_INTERFACE_SHADER_PROGRAM
#define INSANITY_INTERFACE_SHADER_PROGRAM

#include "Constants.hpp"
#include "IObject.hpp"
#include "TMatrix.hpp"

namespace Insanity
{
	template<typename _ctype>
	class IString;

	template<typename _elemType, u8 _elemCount>
	class TVector;

	ATTRIBUTE_DEPRECATED enum class EShaderType
	{
		Vertex,
		Fragment,
		TessellationControl,
		TessellationEvaluate,
		Geometry,
		Compute
	};

	class ATTRIBUTE_DEPRECATED INSANITY_API IShaderProgram : public virtual IObject
	{
	public:
		//=================================================
		//Load, compile, and add the shader to the program.
		//Returns bool: Was compilation successful?
		//=================================================
		virtual bool AddShader(EShaderType type, char const * filename) = 0;
		
		//=================================================
		//Links the program.
{'fraction_non_alphanumeric': 0.23128491620111732, 'fraction_numerical': 0.0022346368715083797, 'mean_word_length': 5.584558823529412, 'pattern_counts': {'":': 0, '<': 7, '<?xml version=': 0, '>': 7, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '6480883', 'n_tokens_mistral': 572, 'n_tokens_neox': 505, 'n_words': 130}