void check_assignment_target(Statement *);
virtual void visit(VariableReference &);
virtual void visit(InterfaceBlockReference &);
- void add_to_chain(Assignment::Target::ChainType, unsigned);
virtual void visit(MemberAccess &);
virtual void visit(Swizzle &);
virtual void visit(BinaryExpression &);
{
BasicTypeDeclaration *type;
unsigned component_count;
+
+ ArgumentInfo(): type(0), component_count(0) { }
};
Stage *stage;
bool apply(Stage &);
private:
- static bool is_scalar(BasicTypeDeclaration &);
- static bool is_vector_or_matrix(BasicTypeDeclaration &);
- static BasicTypeDeclaration *get_element_type(BasicTypeDeclaration &);
- static bool can_convert(BasicTypeDeclaration &, BasicTypeDeclaration &);
static Compatibility get_compatibility(BasicTypeDeclaration &, BasicTypeDeclaration &);
BasicTypeDeclaration *find_type(BasicTypeDeclaration::Kind, unsigned);
BasicTypeDeclaration *find_type(BasicTypeDeclaration &, BasicTypeDeclaration::Kind, unsigned);
bool apply(Stage &);
private:
+ static bool can_convert_arguments(const FunctionCall &, const FunctionDeclaration &);
+
virtual void visit(FunctionCall &);
virtual void visit(FunctionDeclaration &);
};