PhoenixGenerator  3.4.0
Generate code from template files and projects in C++, Rust, Python and wrapped C++ to Python
Loading...
Searching...
No Matches
CppTraitCopy Class Reference

Class generator for setter trait. More...

#include <CppTraitCopy.h>

Inheritance diagram for CppTraitCopy:
Collaboration diagram for CppTraitCopy:

Public Member Functions

virtual void classExtraFunctionDeclaration (std::ofstream &fs, const PClassConfig &classConfig, const GeneratorMode &mode) const
virtual void classExtraFunctionImplementation (std::ofstream &fs, const PClassConfig &classConfig, const GeneratorMode &mode) const
 CppTraitCopy ()
 Consctructor of CppTraitCopy.
virtual void headerExtraInclude (std::ofstream &fs, const GeneratorMode &mode) const
virtual void privateMethodDeclaration (std::ofstream &fs, const PClassConfig &classConfig, const GeneratorMode &mode) const
virtual void privateMethodImplementation (std::ofstream &fs, const PClassConfig &classConfig, const GeneratorMode &mode) const
virtual void protectedMethodDeclaration (std::ofstream &fs, const PClassConfig &classConfig, const GeneratorMode &mode) const
 Declaration of protected methods.
virtual void protectedMethodImplementation (std::ofstream &fs, const PClassConfig &classConfig, const GeneratorMode &mode) const
 Implementation of protected methods.
virtual void publicMethodDeclaration (std::ofstream &fs, const PClassConfig &classConfig, const GeneratorMode &mode) const
 Declaration of public methods.
virtual void publicMethodImplementation (std::ofstream &fs, const PClassConfig &classConfig, const GeneratorMode &mode) const
 Implementation of public methods.
virtual void testCallFunction (std::ofstream &fs, const PClassConfig &classConfig, const GeneratorMode &mode) const
 Call of the test function.
virtual void testFunction (std::ofstream &fs, const PClassConfig &classConfig, const GeneratorMode &mode) const
 Implementation of test function.
virtual ~CppTraitCopy ()
 Desctructor of CppTraitCopy.

Detailed Description

Class generator for setter trait.

Definition at line 16 of file CppTraitCopy.h.

Constructor & Destructor Documentation

◆ CppTraitCopy()

CppTraitCopy::CppTraitCopy ( )

Consctructor of CppTraitCopy.

Definition at line 87 of file CppTraitCopy.cpp.

References PAbstractTraitBackend::PAbstractTraitBackend().

Here is the call graph for this function:

◆ ~CppTraitCopy()

CppTraitCopy::~CppTraitCopy ( )
virtual

Desctructor of CppTraitCopy.

Definition at line 92 of file CppTraitCopy.cpp.

92{}

Member Function Documentation

◆ classExtraFunctionDeclaration()

virtual void PAbstractTraitBackend::classExtraFunctionDeclaration ( std::ofstream & fs,
const PClassConfig & classConfig,
const GeneratorMode & mode ) const
inlinevirtualinherited

◆ classExtraFunctionImplementation()

virtual void PAbstractTraitBackend::classExtraFunctionImplementation ( std::ofstream & fs,
const PClassConfig & classConfig,
const GeneratorMode & mode ) const
inlinevirtualinherited

◆ headerExtraInclude()

virtual void PAbstractTraitBackend::headerExtraInclude ( std::ofstream & fs,
const GeneratorMode & mode ) const
inlinevirtualinherited

◆ privateMethodDeclaration()

virtual void PAbstractTraitBackend::privateMethodDeclaration ( std::ofstream & fs,
const PClassConfig & classConfig,
const GeneratorMode & mode ) const
inlinevirtualinherited

◆ privateMethodImplementation()

virtual void PAbstractTraitBackend::privateMethodImplementation ( std::ofstream & fs,
const PClassConfig & classConfig,
const GeneratorMode & mode ) const
inlinevirtualinherited

◆ protectedMethodDeclaration()

void CppTraitCopy::protectedMethodDeclaration ( std::ofstream & fs,
const PClassConfig & classConfig,
const GeneratorMode & mode ) const
virtual

Declaration of protected methods.

Parameters
[out]fs: file to be completed
classConfig: PClassConfig to be used
mode: mode of the generator

Reimplemented from PAbstractTraitBackend.

Definition at line 117 of file CppTraitCopy.cpp.

117 {
118 //Rule of zero : no hand-written copy<Name>() helper anymore
119}

◆ protectedMethodImplementation()

void CppTraitCopy::protectedMethodImplementation ( std::ofstream & fs,
const PClassConfig & classConfig,
const GeneratorMode & mode ) const
virtual

Implementation of protected methods.

Parameters
[out]fs: file to be completed
classConfig: PClassConfig to be used
mode: mode of the generator

Reimplemented from PAbstractTraitBackend.

Definition at line 126 of file CppTraitCopy.cpp.

126 {
127 //Rule of zero : no hand-written copy<Name>() helper anymore
128}

◆ publicMethodDeclaration()

void CppTraitCopy::publicMethodDeclaration ( std::ofstream & fs,
const PClassConfig & classConfig,
const GeneratorMode & mode ) const
virtual

Declaration of public methods.

Parameters
[out]fs: file to be completed
classConfig: PClassConfig to be used
mode: mode of the generator

Reimplemented from PAbstractTraitBackend.

Definition at line 99 of file CppTraitCopy.cpp.

99 {
100 //Rule of zero : no hand-written copy constructor / operator= anymore, let the compiler generate them (or delete them, for classes owning a unique_ptr attribute)
101}

◆ publicMethodImplementation()

void CppTraitCopy::publicMethodImplementation ( std::ofstream & fs,
const PClassConfig & classConfig,
const GeneratorMode & mode ) const
virtual

Implementation of public methods.

Parameters
[out]fs: file to be completed
classConfig: PClassConfig to be used
mode: mode of the generator

Reimplemented from PAbstractTraitBackend.

Definition at line 108 of file CppTraitCopy.cpp.

108 {
109 //Rule of zero : no hand-written copy constructor / operator= anymore, let the compiler generate them (or delete them, for classes owning a unique_ptr attribute)
110}

◆ testCallFunction()

void CppTraitCopy::testCallFunction ( std::ofstream & fs,
const PClassConfig & classConfig,
const GeneratorMode & mode ) const
virtual

Call of the test function.

Parameters
[out]fs: file to be completed
classConfig: PClassConfig to be used
mode: mode of the generator

Reimplemented from PAbstractTraitBackend.

Definition at line 151 of file CppTraitCopy.cpp.

151 {
152 if(!mode.enableCopy || classConfig.getIsEnum()){return;}
153 PString name(classConfig.getName());
154 if(!mode.enableGetter){
155 fs << "\t//Cannot create check"+name+"Copy() because there is no getter enabled" << std::endl;
156 return;
157 }
158 if(copy_hasPointerAttribute(classConfig)){
159 fs << "\t//Cannot create check"+name+"Copy() because "+name+" owns a pointer attribute and is not copyable anymore" << std::endl;
160 return;
161 }
162 fs << "\tcheck"+name+"Copy();\n";
163}
bool copy_hasPointerAttribute(const PClassConfig &classConfig)
Check if the given class owns at least one pointer attribute.
const PString & getName() const
Returns the class name.
bool getIsEnum() const
Say if the current PClassConfig is an enum.
bool enableGetter
True to enable getters trait generator.
bool enableCopy
True to enable copy trait generator.

References copy_hasPointerAttribute(), GeneratorMode::enableCopy, GeneratorMode::enableGetter, PClassConfig::getIsEnum(), and PClassConfig::getName().

Here is the call graph for this function:

◆ testFunction()

void CppTraitCopy::testFunction ( std::ofstream & fs,
const PClassConfig & classConfig,
const GeneratorMode & mode ) const
virtual

Implementation of test function.

Parameters
[out]fs: file to be completed
classConfig: PClassConfig to be used
mode: mode of the generator

Reimplemented from PAbstractTraitBackend.

Definition at line 136 of file CppTraitCopy.cpp.

136 {
137 if(!mode.enableCopy || !mode.enableGetter || classConfig.getIsEnum()){return;}
138 class_createCheckClassEquality(fs, classConfig, false);
139 class_createCheckClassEquality(fs, classConfig, true);
140 //A class owning a pointer attribute (std::unique_ptr storage) is no longer copyable under rule of zero, so no copy test can be generated for it
141 if(!copy_hasPointerAttribute(classConfig)){
142 class_createTestClassCopy(fs, classConfig, mode);
143 }
144}
void class_createCheckClassEquality(std::ofstream &fs, const PClassConfig &classConfig, bool isConst)
Create the class check.
void class_createTestClassCopy(std::ofstream &fs, const PClassConfig &classConfig, const GeneratorMode &mode)
Create the class check.

References class_createCheckClassEquality(), class_createTestClassCopy(), copy_hasPointerAttribute(), GeneratorMode::enableCopy, GeneratorMode::enableGetter, and PClassConfig::getIsEnum().

Here is the call graph for this function:

The documentation for this class was generated from the following files:
  • /builds/CTA-LAPP/PHOENIX_LIBS2/code-generator/PhoenixGenerator/src/TraitBackEnd/CPP/CppTraitCopy/CppTraitCopy.h
  • /builds/CTA-LAPP/PHOENIX_LIBS2/code-generator/PhoenixGenerator/src/TraitBackEnd/CPP/CppTraitCopy/CppTraitCopy.cpp