1 #ifndef Rosebud_RoseGenerator_H
2 #define Rosebud_RoseGenerator_H
3 #include <Rosebud/CxxGenerator.h>
12 using Ptr = std::shared_ptr<RoseGenerator>;
15 boost::filesystem::path generatedDir;
21 static Ptr instance();
22 virtual std::string
name()
const override;
23 virtual std::string
purpose()
const override;
36 void genHeaderOpen(std::ostream &header,
const Ast::ClassPtr&);
37 void genHeaderClose(std::ostream &header,
const Ast::ClassPtr&);
40 void genPropertyAccessors(std::ostream &header, std::ostream &impl,
const Ast::PropertyPtr&);
41 void genPropertyMutators(std::ostream &header, std::ostream &impl,
const Ast::PropertyPtr&);
42 void genProperty(std::ostream &header, std::ostream &impl,
const Ast::PropertyPtr&);
43 void genDefaultConstructor(std::ostream &header, std::ostream &impl,
const Ast::ClassPtr&);
Base class for generators that produce C++ code.
Generator that produces ROSE code.
virtual void generate(const Ast::ProjectPtr &) override
Generate code.
Graph containing user-defined vertices and edges.
std::shared_ptr< Project > ProjectPtr
Shared-ownership pointer to a Project.
Rosebud is a tool to generate code for ROSE.
virtual void adjustParser(Sawyer::CommandLine::Parser &) override
Add command-line switches and documentation to a parser.
std::vector< Ast::ClassPtr > Classes
Ordered sequence of classes.
virtual std::string purpose() const override
Single-line description for documentation.
virtual std::string name() const override
Every generator should have a unique name.
The parser for a program command line.
virtual std::string valueType(const Ast::PropertyPtr &) override
Type of value for initializing a property.
std::shared_ptr< Property > PropertyPtr
Shared-ownership pointer to a Property.
std::shared_ptr< Class > ClassPtr
Shared-ownership pointer to a Class.
virtual std::string ctorInitializerExpression(const Ast::PropertyPtr &, const std::string &expr) override
Expression for initializing a property in a constructor, or empty.