summaryrefslogtreecommitdiff
path: root/src/libs/glsl/glslsemantic.cpp
diff options
context:
space:
mode:
authorRoberto Raggi <roberto.raggi@nokia.com>2010-11-25 13:27:03 +0100
committerRoberto Raggi <roberto.raggi@nokia.com>2010-11-25 13:27:18 +0100
commit392fa4ab7e38f81f68e33b05e5cc82099a604754 (patch)
treecfbf5396bc7c1f302de0b920f9ec26ec8a4b9c5a /src/libs/glsl/glslsemantic.cpp
parentccab280b21f53505c1a9dccf183b651619f7065a (diff)
downloadqt-creator-392fa4ab7e38f81f68e33b05e5cc82099a604754.tar.gz
Process the basic types.
Diffstat (limited to 'src/libs/glsl/glslsemantic.cpp')
-rw-r--r--src/libs/glsl/glslsemantic.cpp182
1 files changed, 181 insertions, 1 deletions
diff --git a/src/libs/glsl/glslsemantic.cpp b/src/libs/glsl/glslsemantic.cpp
index 4469acca8e..3750893bda 100644
--- a/src/libs/glsl/glslsemantic.cpp
+++ b/src/libs/glsl/glslsemantic.cpp
@@ -29,6 +29,8 @@
#include "glslsemantic.h"
#include "glslengine.h"
+#include "glslparser.h"
+#include <QtCore/QDebug>
using namespace GLSL;
@@ -262,7 +264,185 @@ bool Semantic::visit(DeclarationStatementAST *ast)
// types
bool Semantic::visit(BasicTypeAST *ast)
{
- Q_UNUSED(ast);
+ switch (ast->token) {
+ case Parser::T_VOID:
+ _type = _engine->voidType();
+ break;
+
+ case Parser::T_BOOL:
+ _type = _engine->boolType();
+ break;
+
+ case Parser::T_INT:
+ _type = _engine->intType();
+ break;
+
+ case Parser::T_UINT:
+ _type = _engine->uintType();
+ break;
+
+ case Parser::T_FLOAT:
+ _type = _engine->floatType();
+ break;
+
+ case Parser::T_DOUBLE:
+ _type = _engine->doubleType();
+ break;
+
+ // bvec
+ case Parser::T_BVEC2:
+ _type = _engine->vectorType(_engine->boolType(), 2);
+ break;
+
+ case Parser::T_BVEC3:
+ _type = _engine->vectorType(_engine->boolType(), 3);
+ break;
+
+ case Parser::T_BVEC4:
+ _type = _engine->vectorType(_engine->boolType(), 4);
+ break;
+
+ // ivec
+ case Parser::T_IVEC2:
+ _type = _engine->vectorType(_engine->intType(), 2);
+ break;
+
+ case Parser::T_IVEC3:
+ _type = _engine->vectorType(_engine->intType(), 3);
+ break;
+
+ case Parser::T_IVEC4:
+ _type = _engine->vectorType(_engine->intType(), 4);
+ break;
+
+ // uvec
+ case Parser::T_UVEC2:
+ _type = _engine->vectorType(_engine->uintType(), 2);
+ break;
+
+ case Parser::T_UVEC3:
+ _type = _engine->vectorType(_engine->uintType(), 3);
+ break;
+
+ case Parser::T_UVEC4:
+ _type = _engine->vectorType(_engine->uintType(), 4);
+ break;
+
+ // vec
+ case Parser::T_VEC2:
+ _type = _engine->vectorType(_engine->floatType(), 2);
+ break;
+
+ case Parser::T_VEC3:
+ _type = _engine->vectorType(_engine->floatType(), 3);
+ break;
+
+ case Parser::T_VEC4:
+ _type = _engine->vectorType(_engine->floatType(), 4);
+ break;
+
+ // dvec
+ case Parser::T_DVEC2:
+ _type = _engine->vectorType(_engine->doubleType(), 2);
+ break;
+
+ case Parser::T_DVEC3:
+ _type = _engine->vectorType(_engine->doubleType(), 3);
+ break;
+
+ case Parser::T_DVEC4:
+ _type = _engine->vectorType(_engine->doubleType(), 4);
+ break;
+
+ // mat2
+ case Parser::T_MAT2:
+ case Parser::T_MAT2X2:
+ _type = _engine->matrixType(_engine->floatType(), 2, 2);
+ break;
+
+ case Parser::T_MAT2X3:
+ _type = _engine->matrixType(_engine->floatType(), 2, 3);
+ break;
+
+ case Parser::T_MAT2X4:
+ _type = _engine->matrixType(_engine->floatType(), 2, 4);
+ break;
+
+ // mat3
+ case Parser::T_MAT3X2:
+ _type = _engine->matrixType(_engine->floatType(), 3, 2);
+ break;
+
+ case Parser::T_MAT3:
+ case Parser::T_MAT3X3:
+ _type = _engine->matrixType(_engine->floatType(), 3, 3);
+ break;
+
+ case Parser::T_MAT3X4:
+ _type = _engine->matrixType(_engine->floatType(), 3, 4);
+ break;
+
+ // mat4
+ case Parser::T_MAT4X2:
+ _type = _engine->matrixType(_engine->floatType(), 4, 2);
+ break;
+
+ case Parser::T_MAT4X3:
+ _type = _engine->matrixType(_engine->floatType(), 4, 3);
+ break;
+
+ case Parser::T_MAT4:
+ case Parser::T_MAT4X4:
+ _type = _engine->matrixType(_engine->floatType(), 4, 4);
+ break;
+
+
+ // dmat2
+ case Parser::T_DMAT2:
+ case Parser::T_DMAT2X2:
+ _type = _engine->matrixType(_engine->doubleType(), 2, 2);
+ break;
+
+ case Parser::T_DMAT2X3:
+ _type = _engine->matrixType(_engine->doubleType(), 2, 3);
+ break;
+
+ case Parser::T_DMAT2X4:
+ _type = _engine->matrixType(_engine->doubleType(), 2, 4);
+ break;
+
+ // dmat3
+ case Parser::T_DMAT3X2:
+ _type = _engine->matrixType(_engine->doubleType(), 3, 2);
+ break;
+
+ case Parser::T_DMAT3:
+ case Parser::T_DMAT3X3:
+ _type = _engine->matrixType(_engine->doubleType(), 3, 3);
+ break;
+
+ case Parser::T_DMAT3X4:
+ _type = _engine->matrixType(_engine->doubleType(), 3, 4);
+ break;
+
+ // dmat4
+ case Parser::T_DMAT4X2:
+ _type = _engine->matrixType(_engine->doubleType(), 4, 2);
+ break;
+
+ case Parser::T_DMAT4X3:
+ _type = _engine->matrixType(_engine->doubleType(), 4, 3);
+ break;
+
+ case Parser::T_DMAT4:
+ case Parser::T_DMAT4X4:
+ _type = _engine->matrixType(_engine->doubleType(), 4, 4);
+ break;
+
+ default:
+ qDebug() << "unknown type:" << GLSLParserTable::spell[ast->token];
+ }
+
return false;
}