1 /**************************************************************************** 2 ** 3 ** Copyright (C) 2016 The Qt Company Ltd. 4 ** Contact: https://www.qt.io/licensing/ 5 ** 6 ** This file is part of Qt Creator. 7 ** 8 ** Commercial License Usage 9 ** Licensees holding valid commercial Qt licenses may use this file in 10 ** accordance with the commercial license agreement provided with the 11 ** Software or, alternatively, in accordance with the terms contained in 12 ** a written agreement between you and The Qt Company. For licensing terms 13 ** and conditions see https://www.qt.io/terms-conditions. For further 14 ** information use the contact form at https://www.qt.io/contact-us. 15 ** 16 ** GNU General Public License Usage 17 ** Alternatively, this file may be used under the terms of the GNU 18 ** General Public License version 3 as published by the Free Software 19 ** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT 20 ** included in the packaging of this file. Please review the following 21 ** information to ensure the GNU General Public License requirements will 22 ** be met: https://www.gnu.org/licenses/gpl-3.0.html. 23 ** 24 ****************************************************************************/ 25 26 #pragma once 27 28 #include "glsl.h" 29 30 namespace GLSL { 31 32 class GLSL_EXPORT Type 33 { 34 public: 35 virtual ~Type(); 36 37 virtual QString toString() const = 0; 38 asUndefinedType()39 virtual const UndefinedType *asUndefinedType() const { return nullptr; } asVoidType()40 virtual const VoidType *asVoidType() const { return nullptr; } asBoolType()41 virtual const BoolType *asBoolType() const { return nullptr; } asIntType()42 virtual const IntType *asIntType() const { return nullptr; } asUIntType()43 virtual const UIntType *asUIntType() const { return nullptr; } asFloatType()44 virtual const FloatType *asFloatType() const { return nullptr; } asDoubleType()45 virtual const DoubleType *asDoubleType() const { return nullptr; } asScalarType()46 virtual const ScalarType *asScalarType() const { return nullptr; } asIndexType()47 virtual const IndexType *asIndexType() const { return nullptr; } asVectorType()48 virtual const VectorType *asVectorType() const { return nullptr; } asMatrixType()49 virtual const MatrixType *asMatrixType() const { return nullptr; } asArrayType()50 virtual const ArrayType *asArrayType() const { return nullptr; } asSamplerType()51 virtual const SamplerType *asSamplerType() const { return nullptr; } asOverloadSetType()52 virtual const OverloadSet *asOverloadSetType() const { return nullptr; } 53 asStructType()54 virtual const Struct *asStructType() const { return nullptr; } asFunctionType()55 virtual const Function *asFunctionType() const { return nullptr; } 56 57 virtual bool isEqualTo(const Type *other) const = 0; 58 virtual bool isLessThan(const Type *other) const = 0; 59 }; 60 61 } // namespace GLSL 62