ROSE
0.11.137.0
|
Generator that produces ROSE code.
Definition at line 8 of file RoseGenerator.h.
#include <Rosebud/RoseGenerator.h>
Public Types | |
using | Ptr = std::shared_ptr< RoseGenerator > |
![]() | |
using | Ptr = GeneratorPtr |
Public Member Functions | |
virtual std::string | name () const override |
Every generator should have a unique name. More... | |
virtual std::string | purpose () const override |
Single-line description for documentation. More... | |
virtual void | adjustParser (Sawyer::CommandLine::Parser &) override |
Add command-line switches and documentation to a parser. More... | |
virtual void | generate (const Ast::ProjectPtr &) override |
Generate code. More... | |
![]() | |
virtual std::string | propertyDataMemberName (const Ast::PropertyPtr &) const |
Data member name for a property. More... | |
virtual std::vector< std::string > | propertyAccessorNames (const Ast::PropertyPtr &) const |
Accessor names for a property. More... | |
virtual std::vector< std::string > | propertyMutatorNames (const Ast::PropertyPtr &) const |
Mutator names for a property. More... | |
Static Public Member Functions | |
static Ptr | instance () |
![]() | |
static void | registerGenerator (const Ptr &) |
Register a backend for use later. More... | |
static const std::vector< Ptr > & | registeredGenerators () |
Return all registered backends. More... | |
static Ptr | lookup (const std::string &) |
Return the registered generator with the specified name. More... | |
static void | addAllToParser (Sawyer::CommandLine::Parser &) |
Add all known generator switches to parser. More... | |
Protected Member Functions | |
virtual std::string | ctorInitializerExpression (const Ast::PropertyPtr &, const std::string &expr) override |
Expression for initializing a property in a constructor, or empty. More... | |
virtual std::string | valueType (const Ast::PropertyPtr &) override |
Type of value for initializing a property. More... | |
![]() | |
virtual std::string | machineGenerated (char commentType= '/') |
Return a title comment that says the file is machine generated. More... | |
virtual std::string | resetStatement (const Ast::PropertyPtr &) |
Statement to initialize a property. More... | |
virtual std::string | dataMemberType (const Ast::PropertyPtr &) |
Type for the data member for a property. More... | |
virtual std::string | initialValue (const Ast::PropertyPtr &) |
Initial value expression for the property. More... | |
virtual void | genDestructor (std::ostream &header, std::ostream &impl, const Ast::ClassPtr &) |
Emit code for the class destructor. More... | |
virtual void | genDefaultConstructor (std::ostream &header, std::ostream &impl, const Ast::ClassPtr &, Access) |
Emit code for the class default constructor. More... | |
virtual void | genArgsConstructor (std::ostream &header, std::ostream &impl, const Ast::ClassPtr &, const Hierarchy &, Access) |
Emit code for the constructor with ctor_args property arguments. More... | |
virtual void | genInitProperties (std::ostream &header, std::ostream &impl, const Ast::ClassPtr &) |
Emit code that initializes all local properties. More... | |
Additional Inherited Members | |
![]() | |
size_t | outputWidth = 130 |
|
overridevirtual |
Every generator should have a unique name.
Implements Rosebud::Generator.
|
overridevirtual |
Single-line description for documentation.
Implements Rosebud::Generator.
|
overridevirtual |
Add command-line switches and documentation to a parser.
Any command-line switches and documentation that is specific to the backend are added to the specified parser. In order to not conflict with other backends that might also be adding switch parsers, the backend should create a switch group and give it a unique prefix.
Reimplemented from Rosebud::Generator.
|
overridevirtual |
|
overrideprotectedvirtual |
Expression for initializing a property in a constructor, or empty.
For most properties, this is simply the initialization expression parsed from the input. However, some properties need extra arguments, etc. that can be returned by this funciton. For instance, a TreeEdge property is initialized in a special way:
So the initializer expression for the "foo" property is overridden to add the "*this" argument, but for "bar" it is not overridden.
The expr
argument is the default initializer expression such as the string from the right hand side of the "=" in the property definition, or some other expression.
Reimplemented from Rosebud::CxxGenerator.
|
overrideprotectedvirtual |
Type of value for initializing a property.
This is the type used by mutator arguments, but without the const reference part. The base implementation simply returns the type from the property definition after removing volatile
and mutable
, but sometimes we need something else. For instance, a property of type TreeEdge<T>
is never initialized from another tree edge, but rather from a std::shared_ptr<T>
, as follows:
Reimplemented from Rosebud::CxxGenerator.