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

Method evaluateExpressionType

src/GLSLCompiler.cpp:796–941  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

794 }
795 }
796 GLSLCompiler::ExpressionType GLSLCompiler::evaluateExpressionType(glsl::astExpression* expr)
797 {
798 switch (expr->type) {
799 case glsl::astExpression::kIntConstant:
800 return GLSLCompiler::ExpressionType("int", ag::Type::Int, 1, 1);
801 case glsl::astExpression::kUIntConstant:
802 return GLSLCompiler::ExpressionType("uint", ag::Type::UInt, 1, 1);
803 case glsl::astExpression::kFloatConstant:
804 return GLSLCompiler::ExpressionType("float", ag::Type::Float, 1, 1);
805 case glsl::astExpression::kDoubleConstant:
806 return GLSLCompiler::ExpressionType("double", ag::Type::Float, 1, 1);
807 case glsl::astExpression::kBoolConstant:
808 return GLSLCompiler::ExpressionType("bool", ag::Type::UChar, 1, 1);
809 case glsl::astExpression::kFunctionCall: {
810 glsl::astFunctionCall* func = (glsl::astFunctionCall*)expr;
811 Function data = matchFunction(func->name, func->parameters);
812 std::string retType = data.ReturnType;
813 if (data.Name == "")
814 retType = getReturnType(func->name, func->parameters);
815 return m_convertExprType(retType);
816 } break;
817 case glsl::astExpression::kConstructorCall: {
818 glsl::astConstructorCall* constr = (glsl::astConstructorCall*)expr;
819
820 std::string vartype = "";
821 if (constr->type->builtin)
822 vartype = kTypes[((glsl::astBuiltin*)constr->type)->type];
823 else
824 vartype = ((glsl::astStruct*)constr->type)->name;
825
826 return m_convertExprType(vartype);
827 } break;
828 case glsl::astExpression::kPostIncrement: {
829 glsl::astPostIncrementExpression* opdata = (glsl::astPostIncrementExpression*)expr;
830 return evaluateExpressionType(opdata->operand);
831 } break;
832 case glsl::astExpression::kPostDecrement: {
833 glsl::astPostDecrementExpression* opdata = (glsl::astPostDecrementExpression*)expr;
834 return evaluateExpressionType(opdata->operand);
835 } break;
836 case glsl::astExpression::kUnaryMinus: {
837 glsl::astUnaryMinusExpression* opdata = (glsl::astUnaryMinusExpression*)expr;
838 return evaluateExpressionType(opdata->operand);
839 } break;
840 case glsl::astExpression::kUnaryPlus: {
841 glsl::astUnaryPlusExpression* opdata = (glsl::astUnaryPlusExpression*)expr;
842 return evaluateExpressionType(opdata->operand);
843 } break;
844 case glsl::astExpression::kBitNot: {
845 glsl::astUnaryBitNotExpression* opdata = (glsl::astUnaryBitNotExpression*)expr;
846 return evaluateExpressionType(opdata->operand);
847 } break;
848 case glsl::astExpression::kLogicalNot: {
849 glsl::astUnaryLogicalNotExpression* opdata = (glsl::astUnaryLogicalNotExpression*)expr;
850 return evaluateExpressionType(opdata->operand);
851 } break;
852 case glsl::astExpression::kPrefixIncrement: {
853 glsl::astPrefixIncrementExpression* opdata = (glsl::astPrefixIncrementExpression*)expr;

Callers

nothing calls this directly

Calls 2

sizeMethod · 0.80
ExpressionTypeClass · 0.50

Tested by

no test coverage detected