namespace GL {
namespace SL {
+bool is_scalar(const BasicTypeDeclaration &);
+bool is_vector_or_matrix(const BasicTypeDeclaration &);
+BasicTypeDeclaration *get_element_type(BasicTypeDeclaration &);
+bool can_convert(const BasicTypeDeclaration &, const BasicTypeDeclaration &);
+
/** Compares two types for equality. Struct types are compared recursively. */
class TypeComparer: private NodeVisitor
{
T *multi_visit(T &);
virtual void visit(Literal &);
virtual void visit(VariableReference &);
+ virtual void visit(UnaryExpression &);
+ virtual void visit(BinaryExpression &);
+ virtual void visit(TernaryExpression &);
virtual void visit(BasicTypeDeclaration &);
virtual void visit(ImageTypeDeclaration &);
virtual void visit(StructDeclaration &);