Added code to allow moving TShaders (and storing them inside STL containers).
This commit is contained in:
		
							parent
							
								
									8f0a4c64db
								
							
						
					
					
						commit
						ec5a3c423e
					
				@ -1742,13 +1742,45 @@ TShader::TShader(EShLanguage s)
 | 
				
			|||||||
    environment.target.hlslFunctionality1 = false;
 | 
					    environment.target.hlslFunctionality1 = false;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// BEGIN @MEWIN - 2022-12-08 - Added code to allow moving TShaders (and storing them inside STL containers).
 | 
				
			||||||
 | 
					TShader::TShader(TShader&& other)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    (*this) = std::move(other);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					TShader& TShader::operator=(TShader&& other)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    if (this != &other)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        pool = std::exchange(other.pool, nullptr);
 | 
				
			||||||
 | 
					        stage = other.stage;
 | 
				
			||||||
 | 
					        compiler = std::exchange(other.compiler, nullptr);
 | 
				
			||||||
 | 
					        intermediate = std::exchange(other.intermediate, nullptr);
 | 
				
			||||||
 | 
					        infoSink = std::exchange(other.infoSink, nullptr);
 | 
				
			||||||
 | 
					        strings = other.strings;
 | 
				
			||||||
 | 
					        lengths = other.lengths;
 | 
				
			||||||
 | 
					        stringNames = other.stringNames;
 | 
				
			||||||
 | 
					        numStrings = other.numStrings;
 | 
				
			||||||
 | 
					        preamble = other.preamble;
 | 
				
			||||||
 | 
					        sourceEntryPointName = other.sourceEntryPointName;
 | 
				
			||||||
 | 
					        overrideVersion = other.overrideVersion;
 | 
				
			||||||
 | 
					        environment = other.environment;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return *this;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
TShader::~TShader()
 | 
					TShader::~TShader()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    delete infoSink;
 | 
					    if (infoSink)
 | 
				
			||||||
    delete compiler;
 | 
					    {
 | 
				
			||||||
    delete intermediate;
 | 
					        delete infoSink;
 | 
				
			||||||
    delete pool;
 | 
					        delete compiler;
 | 
				
			||||||
 | 
					        delete intermediate;
 | 
				
			||||||
 | 
					        delete pool;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					// END @MEWIN
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void TShader::setStrings(const char* const* s, int n)
 | 
					void TShader::setStrings(const char* const* s, int n)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
				
			|||||||
@ -464,7 +464,14 @@ enum TBlockStorageClass
 | 
				
			|||||||
class TShader {
 | 
					class TShader {
 | 
				
			||||||
public:
 | 
					public:
 | 
				
			||||||
    GLSLANG_EXPORT explicit TShader(EShLanguage);
 | 
					    GLSLANG_EXPORT explicit TShader(EShLanguage);
 | 
				
			||||||
    GLSLANG_EXPORT virtual ~TShader();
 | 
					    // BEGIN @MEWIN - 2022-12-08 - Added code to allow moving TShaders (and storing them inside STL containers).
 | 
				
			||||||
 | 
					    GLSLANG_EXPORT TShader(const TShader&) = delete;
 | 
				
			||||||
 | 
					    GLSLANG_EXPORT TShader(TShader&& other);
 | 
				
			||||||
 | 
					    GLSLANG_EXPORT ~TShader();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    GLSLANG_EXPORT TShader& operator=(const TShader&) = delete;
 | 
				
			||||||
 | 
					    GLSLANG_EXPORT TShader& operator=(TShader&& other);
 | 
				
			||||||
 | 
					    // END @MEWIN
 | 
				
			||||||
    GLSLANG_EXPORT void setStrings(const char* const* s, int n);
 | 
					    GLSLANG_EXPORT void setStrings(const char* const* s, int n);
 | 
				
			||||||
    GLSLANG_EXPORT void setStringsWithLengths(
 | 
					    GLSLANG_EXPORT void setStringsWithLengths(
 | 
				
			||||||
        const char* const* s, const int* l, int n);
 | 
					        const char* const* s, const int* l, int n);
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user