MCPcopy Create free account
hub / github.com/dfranx/ShaderDebugger / translateFunctionCall

Method translateFunctionCall

src/GLSLCompiler.cpp:430–459  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

428 }
429
430 void GLSLCompiler::translateFunctionCall(glsl::astFunctionCall *expression) {
431 m_exportLine(expression);
432
433 Function data = matchFunction(expression->name, expression->parameters);
434 std::vector<GLSLCompiler::ExpressionType> paramTypes(expression->parameters.size());
435 for (int i = 0; i < data.Arguments.size(); i++)
436 paramTypes[i] = m_convertExprType(data.Arguments[i].Type);
437
438 for (int i = expression->parameters.size() - 1; i >= 0; i--) {
439 bool temp_usePointer = m_usePointer;
440
441 if (data.Name.empty()) {
442 if (m_builtInFuncsPtrs.count(expression->name) > 0)
443 if (std::count(m_builtInFuncsPtrs[expression->name].begin(), m_builtInFuncsPtrs[expression->name].end(), i) > 0)
444 m_usePointer = true;
445 }
446 else if (data.Arguments[i].Storage == sd::Variable::StorageType::Out)
447 m_usePointer = true;
448
449 translateExpression(expression->parameters[i]);
450
451 m_usePointer = temp_usePointer;
452
453 if (!data.Name.empty() && paramTypes[i] != evaluateExpressionType(expression->parameters[i]))
454 generateConvert(paramTypes[i]);
455 }
456
457
458 m_gen.Function.CallReturn(expression->name, expression->parameters.size());
459 }
460
461 void GLSLCompiler::translateConstructorCall(glsl::astConstructorCall *expression) {
462 m_exportLine(expression);

Callers

nothing calls this directly

Calls 3

sizeMethod · 0.80
beginMethod · 0.80
endMethod · 0.80

Tested by

no test coverage detected