+++ /dev/null
-#ifndef MSP_GL_SL_COMPATIBILITY_H_
-#define MSP_GL_SL_COMPATIBILITY_H_
-
-#include <string>
-#include "visitor.h"
-
-namespace Msp {
-namespace GL {
-namespace SL {
-
-/** Generates default precision declarations if they are missing, to satisfy
-GLSL ES requirements. */
-class DefaultPrecisionGenerator: private TraversingVisitor
-{
-private:
- Stage *stage;
- std::set<std::string> have_default;
- NodeList<Statement>::iterator insert_point;
-
-public:
- DefaultPrecisionGenerator();
-
- void apply(Stage &);
-
-private:
- virtual void visit(Block &);
- virtual void visit(Precision &);
- virtual void visit(VariableDeclaration &);
-};
-
-/** Removes precision qualifiers from variable declarations, as well as
-default precision declarations. */
-class PrecisionRemover: private TraversingVisitor
-{
-private:
- std::set<Node *> nodes_to_remove;
-
-public:
- void apply(Stage &);
-
-private:
- virtual void visit(Precision &);
- virtual void visit(VariableDeclaration &);
-};
-
-/** Converts structures of the syntax tree to match a particular set of
-features. */
-class LegacyConverter: private TraversingVisitor
-{
-private:
- Stage *stage;
- Features features;
- std::string r_type;
- VariableDeclaration *frag_out;
- NodeList<Statement>::iterator uniform_insert_point;
- std::set<Node *> nodes_to_remove;
-
-public:
- LegacyConverter();
-
- virtual void apply(Stage &, const Features &);
-
-private:
- void unsupported(const std::string &);
-
- virtual void visit(Block &);
- bool check_version(const Version &) const;
- bool check_extension(bool Features::*) const;
- bool supports_stage(Stage::Type) const;
- bool supports_unified_interface_syntax() const;
- virtual void visit(VariableReference &);
- virtual void visit(Assignment &);
- bool supports_unified_sampling_functions() const;
- virtual void visit(FunctionCall &);
- bool supports_interface_layouts() const;
- bool supports_centroid_sampling() const;
- bool supports_sample_sampling() const;
- virtual void visit(VariableDeclaration &);
- bool supports_interface_blocks(const std::string &) const;
- virtual void visit(InterfaceBlock &);
-};
-
-} // namespace SL
-} // namespace GL
-} // namespace Msp
-
-#endif