X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fglsl%2Fcompatibility.h;h=59e21c35a3644a78451f85b1100bc47b107a9547;hb=73bef37da97b6da0b99227f63235cb52c4e56c44;hp=f33768767b0b0909614e9c8181cf26a32cf66487;hpb=696a97bd7411d69953c1a9e4b5f3dfb4c1d848f1;p=libs%2Fgl.git diff --git a/source/glsl/compatibility.h b/source/glsl/compatibility.h index f3376876..59e21c35 100644 --- a/source/glsl/compatibility.h +++ b/source/glsl/compatibility.h @@ -8,32 +8,40 @@ namespace Msp { namespace GL { namespace SL { -class DefaultPrecisionGenerator: public BlockModifier +class DefaultPrecisionGenerator: private BlockModifier { private: + Stage::Type stage_type; bool toplevel; std::set have_default; public: DefaultPrecisionGenerator(); - using StageVisitor::visit; + void apply(Stage &); + +private: virtual void visit(Block &); virtual void visit(Precision &); virtual void visit(VariableDeclaration &); + using BlockModifier::visit; }; -class PrecisionRemover: public BlockModifier +class PrecisionRemover: private BlockModifier { public: - using StageVisitor::visit; + void apply(Stage &s) { visit(s.content); } + +private: virtual void visit(Precision &); virtual void visit(VariableDeclaration &); + using BlockModifier::visit; }; -class LegacyConverter: public BlockModifier +class LegacyConverter: private BlockModifier { private: + Stage *stage; GLApi target_api; Version target_version; std::string type; @@ -41,12 +49,12 @@ private: public: LegacyConverter(); - LegacyConverter(const Version &); + + virtual void apply(Stage &); private: bool check_version(const Version &) const; bool check_extension(const Extension &) const; - using StageVisitor::visit; bool supports_unified_interface_syntax() const; virtual void visit(VariableReference &); virtual void visit(Assignment &); @@ -58,6 +66,7 @@ private: virtual void visit(VariableDeclaration &); bool supports_interface_blocks(const std::string &) const; virtual void visit(InterfaceBlock &); + using BlockModifier::visit; }; } // namespace SL