VariableReference(const VariableReference &);
virtual VariableReference *clone() const { return new VariableReference(*this); }
VariableReference(const VariableReference &);
virtual VariableReference *clone() const { return new VariableReference(*this); }
InterfaceBlockReference(const InterfaceBlockReference &);
virtual InterfaceBlockReference *clone() const { return new InterfaceBlockReference(*this); }
InterfaceBlockReference(const InterfaceBlockReference &);
virtual InterfaceBlockReference *clone() const { return new InterfaceBlockReference(*this); }
MemberAccess(const MemberAccess &);
virtual MemberAccess *clone() const { return new MemberAccess(*this); }
MemberAccess(const MemberAccess &);
virtual MemberAccess *clone() const { return new MemberAccess(*this); }
FunctionCall(const FunctionCall &);
virtual FunctionCall *clone() const { return new FunctionCall(*this); }
FunctionCall(const FunctionCall &);
virtual FunctionCall *clone() const { return new FunctionCall(*this); }
BasicTypeDeclaration(const BasicTypeDeclaration &);
virtual BasicTypeDeclaration *clone() const { return new BasicTypeDeclaration(*this); }
BasicTypeDeclaration(const BasicTypeDeclaration &);
virtual BasicTypeDeclaration *clone() const { return new BasicTypeDeclaration(*this); }
virtual ImageTypeDeclaration *clone() const { return new ImageTypeDeclaration(*this); }
virtual void visit(NodeVisitor &);
virtual ImageTypeDeclaration *clone() const { return new ImageTypeDeclaration(*this); }
virtual void visit(NodeVisitor &);
/* An interface block's ultimate base type is always a struct. The
immediate type may be either that same struct or an array of it. */
/* An interface block's ultimate base type is always a struct. The
immediate type may be either that same struct or an array of it. */
- TypeDeclaration *type_declaration;
- StructDeclaration *struct_declaration;
- InterfaceBlock *linked_block;
+ TypeDeclaration *type_declaration = 0;
+ StructDeclaration *struct_declaration = 0;
+ InterfaceBlock *linked_block = 0;
FunctionDeclaration(const FunctionDeclaration &);
virtual FunctionDeclaration *clone() const { return new FunctionDeclaration(*this); }
FunctionDeclaration(const FunctionDeclaration &);
virtual FunctionDeclaration *clone() const { return new FunctionDeclaration(*this); }
Block content;
std::map<std::string, TypeDeclaration *> types;
std::map<std::string, InterfaceBlock *> interface_blocks;
Block content;
std::map<std::string, TypeDeclaration *> types;
std::map<std::string, InterfaceBlock *> interface_blocks;
std::map<std::string, unsigned> locations;
std::map<std::string, unsigned> texture_bindings;
std::map<std::string, unsigned> uniform_block_bindings;
std::map<std::string, unsigned> locations;
std::map<std::string, unsigned> texture_bindings;
std::map<std::string, unsigned> uniform_block_bindings;
int get_layout_value(const Layout &, const std::string &, int = -1);
void add_to_chain(Assignment::Target &, Assignment::Target::ChainType, unsigned);
int get_layout_value(const Layout &, const std::string &, int = -1);
void add_to_chain(Assignment::Target &, Assignment::Target::ChainType, unsigned);