ROSE 0.11.145.147
|
Base class for generators that produce C++ code.
Definition at line 8 of file CxxGenerator.h.
#include <Rosebud/CxxGenerator.h>
Protected Member Functions | |
virtual std::string | machineGenerated (char commentType='/') |
Return a title comment that says the file is machine generated. | |
virtual std::string | ctorInitializerExpression (const Ast::PropertyPtr &, const std::string &expr) |
Expression for initializing a property in a constructor, or empty. | |
virtual std::string | resetStatement (const Ast::PropertyPtr &) |
Statement to initialize a property. | |
virtual std::string | propertyDataMemberType (const Ast::PropertyPtr &) |
Type for the data member for a property. | |
virtual std::string | propertyAccessorReturnType (const Ast::PropertyPtr &) |
Type for the return value for a property accessor. | |
virtual std::string | propertyMutatorArgumentType (const Ast::PropertyPtr &) |
Type for the argument for a property mutator. | |
virtual std::string | initialValue (const Ast::PropertyPtr &) |
Initial value expression for the property. | |
virtual std::string | valueType (const Ast::PropertyPtr &) |
Type of value for initializing a property. | |
virtual void | genDestructor (std::ostream &header, std::ostream &impl, const Ast::ClassPtr &) |
Emit code for the class destructor. | |
virtual void | genDefaultConstructor (std::ostream &header, std::ostream &impl, const Ast::ClassPtr &, Access) |
Emit code for the class default constructor. | |
virtual bool | genArgsConstructor (std::ostream &header, std::ostream &impl, const Ast::ClassPtr &, const Hierarchy &, Access) |
Emit code for the constructor with ctor_args property arguments. | |
virtual void | genConstructorBody (std::ostream &, const Ast::ClassPtr &) |
Emit code for the constructor body. | |
virtual void | genInitProperties (std::ostream &header, std::ostream &impl, const Ast::ClassPtr &) |
Emit code that initializes all local properties. | |
virtual std::string | removePointer (const std::string &) const |
Given a type name, remove the outer pointer if present. | |
Protected Member Functions inherited from Rosebud::Generator | |
std::string | generatedByRosebud (const std::string &prefix) |
Return a multi-line comment that this file was generated by Rosebud. | |
Protected Attributes | |
size_t | outputWidth = 130 |
Additional Inherited Members | |
Public Types inherited from Rosebud::Generator | |
using | Ptr = GeneratorPtr |
Public Member Functions inherited from Rosebud::Generator | |
virtual void | adjustParser (Sawyer::CommandLine::Parser &) |
Add command-line switches and documentation to a parser. | |
virtual std::string | name () const =0 |
Property: Every generator should have a unique name. | |
virtual std::string | purpose () const =0 |
Property: Single-line description for documentation. | |
virtual void | generate (const Ast::ProjectPtr &)=0 |
Generate code. | |
virtual std::string | propertyDataMemberName (const Ast::PropertyPtr &) const |
Data member name for a property. | |
virtual std::vector< std::string > | propertyAccessorNames (const Ast::PropertyPtr &) const |
Accessor names for a property. | |
virtual std::vector< std::string > | propertyMutatorNames (const Ast::PropertyPtr &) const |
Mutator names for a property. | |
void | commandLine (const std::vector< std::string > &) |
Property: Entire Rosebud command line. | |
const std::vector< std::string > & | commandLine () const |
Property: Entire Rosebud command line. | |
Static Public Member Functions inherited from Rosebud::Generator | |
static void | registerGenerator (const Ptr &) |
Register a backend for use later. | |
static const std::vector< Ptr > & | registeredGenerators () |
Return all registered backends. | |
static Ptr | lookup (const std::string &) |
Return the registered generator with the specified name. | |
static void | addAllToParser (Sawyer::CommandLine::Parser &) |
Add all known generator switches to parser. | |
|
protectedvirtual |
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 in Rosebud::SawyerGenerator.
|
protectedvirtual |
Statement to initialize a property.
The return string is a statement that initializes the property data member if the data member needs to be initialized other than with a default constructor. This is used in the generated "initializeProperties" member function which is called by user-defined constructors prior to the user assigning a different value. The returned string is either empty or includes the terminating semicolon.
|
protectedvirtual |
Type for the data member for a property.
The base implementation simply returns the property type from the input.
Reimplemented in Rosebud::SawyerGenerator.
|
protectedvirtual |
Type for the return value for a property accessor.
This is usually the same as the property data member type but without any 'mutable'. Do not add reference or 'const'.
|
protectedvirtual |
Type for the argument for a property mutator.
If the property data member type is T
, then this is usually const T&
.
Reimplemented in Rosebud::SawyerGenerator.
|
protectedvirtual |
Initial value expression for the property.
The base implementation returns whatever expression was to the right of the "=" in the property definition.
|
protectedvirtual |
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 in Rosebud::SawyerGenerator.
|
protectedvirtual |
Emit code for the class default constructor.
Reimplemented in Rosebud::SawyerGenerator.
|
protectedvirtual |
Emit code for the constructor with ctor_args property arguments.
Returns true if it generated a constructor.
Reimplemented in Rosebud::SawyerGenerator.
|
protectedvirtual |
Emit code for the constructor body.
Reimplemented in Rosebud::SawyerGenerator.
|
protectedvirtual |
Given a type name, remove the outer pointer if present.
|
protected |
Definition at line 10 of file CxxGenerator.h.