X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fglsl%2Fresolve.h;h=633ff11d27b4382e66ce6240847ac84907b54f5a;hb=c4aeeced7b397d46772577775bd3a0d6c4706cba;hp=ca9c4f3231f8416c69b493ba1a0a218ea200e135;hpb=bbe2fb7bc1384d7683f1795b5cfa9168df18c580;p=libs%2Fgl.git diff --git a/source/glsl/resolve.h b/source/glsl/resolve.h index ca9c4f32..633ff11d 100644 --- a/source/glsl/resolve.h +++ b/source/glsl/resolve.h @@ -79,7 +79,6 @@ private: 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 &); @@ -105,6 +104,8 @@ private: { BasicTypeDeclaration *type; unsigned component_count; + + ArgumentInfo(): type(0), component_count(0) { } }; Stage *stage; @@ -118,12 +119,8 @@ public: 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::Kind, unsigned, bool = true); BasicTypeDeclaration *find_type(BasicTypeDeclaration &, BasicTypeDeclaration::Kind, unsigned); void convert_to(RefPtr &, BasicTypeDeclaration &); bool convert_to_element(RefPtr &, BasicTypeDeclaration &); @@ -159,6 +156,8 @@ public: bool apply(Stage &); private: + static bool can_convert_arguments(const FunctionCall &, const FunctionDeclaration &); + virtual void visit(FunctionCall &); virtual void visit(FunctionDeclaration &); };