namespace GL {
namespace SL {
-/** Generates default precision declarations if they are missing, to satisfy
-GLSL ES requirements. */
-class DefaultPrecisionGenerator: private TraversingVisitor
+/** Generates default precision declarations or removes precision declarations
+according to the requirements of the target API. */
+class PrecisionConverter: private TraversingVisitor
{
private:
Stage *stage;
std::set<std::string> have_default;
NodeList<Statement>::iterator insert_point;
+ std::set<Node *> nodes_to_remove;
public:
- DefaultPrecisionGenerator();
+ PrecisionConverter();
void apply(Stage &);
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;