PhoenixGenerator  2.0.4
Set of tools to generate code
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 74 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 79 of file CppTraitCopy.cpp.

79{}

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 124 of file CppTraitCopy.cpp.

124 {
125 if(!mode.enableCopy || classConfig.getIsEnum()){return;}
126 PString name(classConfig.getName());
127 fs << "\t\tvoid copy" << name << "(const " << name << mode.defTemplate << " & other);" << std::endl;
128}
const PString & getName() const
Returns the class name.
bool getIsEnum() const
Say if the current PClassConfig is an enum.
PString defTemplate
Template definition for the class header.
bool enableCopy
True to enable copy trait generator.

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

+ Here is the call graph for this function:

◆ 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 135 of file CppTraitCopy.cpp.

135 {
136 if(!mode.enableCopy || classConfig.getIsEnum()){return;}
137 PString name(classConfig.getName());
138 fs << "///Copy Function of class " << name << std::endl;
139 fs << "/**\t@param other : " << name << " we want ot copy" << std::endl;
140 fs << "*/" << std::endl;
141 fs << mode.templateDeclaration;
142 fs << "void " << name << mode.defTemplate << "::copy" << name << "(const " << name << mode.defTemplate << " & other){" << std::endl;
143 const PVecClassAttribute & vecAttr(classConfig.getListAttribute());
144 for(PVecClassAttribute::const_iterator it(vecAttr.begin()); it != vecAttr.end(); ++it){
145 fs << "\tp_" << it->getName() << " = other.p_" << it->getName() << ";" << std::endl;
146 }
147 fs << "}" << std::endl << std::endl;
148}
std::vector< PClassAttribute > PVecClassAttribute
Definition PDataConfig.h:13
const std::vector< PClassAttribute > & getListAttribute() const
Returns the list of attributes of the class.
PString templateDeclaration
Template declaration of the method implementation.

References GeneratorMode::defTemplate, GeneratorMode::enableCopy, PClassConfig::getIsEnum(), PClassConfig::getListAttribute(), PClassConfig::getName(), and GeneratorMode::templateDeclaration.

+ Here is the call graph for this function:

◆ 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 86 of file CppTraitCopy.cpp.

86 {
87 if(!mode.enableCopy || classConfig.getIsEnum()){return;}
88 PString name(classConfig.getName());
89 fs << "\t\t" << name << "(const " << name << mode.defTemplate << " & other);" << std::endl;
90 fs << "\t\t" << name << " & operator = (const " << name << mode.defTemplate << " & other);" << std::endl;
91}

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

+ Here is the call graph for this function:

◆ 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 98 of file CppTraitCopy.cpp.

98 {
99 if(!mode.enableCopy || classConfig.getIsEnum()){return;}
100 PString name(classConfig.getName());
101 fs << "///Copy Constructor of class " << name << std::endl;
102 fs << "/**\t@param other : " << name << " we want ot copy" << std::endl;
103 fs << "*/" << std::endl;
104 fs << mode.templateDeclaration;
105 fs << name << mode.defTemplate << "::" << name << "(const " << name << mode.defTemplate << " & other){" << std::endl;
106 fs << "\tcopy" << name << "(other);" << std::endl;
107 fs << "}" << std::endl << std::endl;
108 fs << "///Operator = of class " << name << std::endl;
109 fs << "/**\t@param other : " << name << " we want ot copy" << std::endl;
110 fs << " * \t@return copied class " << name << std::endl;
111 fs << "*/" << std::endl;
112 fs << mode.templateDeclaration;
113 fs << name << mode.defTemplate << " & " << name << mode.defTemplate << "::operator =" << " (const " << name << mode.defTemplate << " & other){" << std::endl;
114 fs << "\tcopy" << name << "(other);" << std::endl;
115 fs << "\treturn *this;" << std::endl;
116 fs << "}" << std::endl << std::endl;
117}

References GeneratorMode::defTemplate, GeneratorMode::enableCopy, PClassConfig::getIsEnum(), PClassConfig::getName(), and GeneratorMode::templateDeclaration.

+ Here is the call graph for this function:

◆ 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 168 of file CppTraitCopy.cpp.

168 {
169 if(!mode.enableCopy || classConfig.getIsEnum()){return;}
170 PString name(classConfig.getName());
171 if(!mode.enableGetter){
172 fs << "\t//Cannot create check"+name+"Copy() because there is no getter enabled" << std::endl;
173 return;
174 }
175 fs << "\tcheck"+name+"Copy();\n";
176}
bool enableGetter
True to enable getters trait generator.

References 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 156 of file CppTraitCopy.cpp.

156 {
157 if(!mode.enableCopy || !mode.enableGetter || classConfig.getIsEnum()){return;}
158 class_createCheckClassEquality(fs, classConfig, false);
159 class_createCheckClassEquality(fs, classConfig, true);
160 class_createTestClassCopy(fs, classConfig, mode);
161}
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(), 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: