Exemplo n.º 1
0
TIntermDeclaration* ir_add_declaration(TIntermSymbol* symbol, TIntermTyped* initializer, TSourceLoc line, TInfoSink& infoSink)
{
	TIntermDeclaration* decl = new TIntermDeclaration(symbol->getType());
	decl->setLine(line);
	
	if (!initializer)
		decl->getDeclaration() = symbol;
	else
		decl->getDeclaration() = ir_add_assign(EOpAssign, symbol, initializer, line, infoSink);
	
	return decl;
}
Exemplo n.º 2
0
TIntermDeclaration* ir_add_declaration(TIntermSymbol* symbol, TIntermTyped* initializer, TSourceLoc line, TParseContext& ctx)
{
	TIntermDeclaration* decl = new TIntermDeclaration(symbol->getType());
	decl->setLine(line);
	
	if (!initializer)
		decl->getDeclaration() = symbol;
	else
	{
		TIntermTyped* t = ir_add_assign(EOpAssign, symbol, initializer, line, ctx);
		if (!t) {
			delete decl;
			return NULL;
		}
		decl->getDeclaration() = t;
	}
	
	return decl;
}
Exemplo n.º 3
0
TIntermDeclaration* ir_grow_declaration(TIntermDeclaration* declaration, TIntermSymbol *symbol, TIntermTyped *initializer, TInfoSink& infoSink)
{
	TIntermTyped* added_decl = symbol;
	if (initializer)
		added_decl = ir_add_assign(EOpAssign, symbol, initializer, symbol->getLine(), infoSink);
	
	if (declaration->isSingleDeclaration()) {
		TIntermTyped* current = declaration->getDeclaration();
		TIntermAggregate* aggregate = ir_make_aggregate(current, current->getLine());
		aggregate->setOperator(EOpComma);
		declaration->getDeclaration() = aggregate;
	}
		
	TIntermAggregate* aggregate = ir_grow_aggregate(declaration->getDeclaration(), added_decl, added_decl->getLine());
	aggregate->setOperator(EOpComma);
	declaration->getDeclaration() = aggregate;
	
	return declaration;
}