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

Class generator for setter trait. More...

#include <CppTraitDataStream.h>

Inheritance diagram for CppTraitDataStream:
Collaboration diagram for CppTraitDataStream:

Public Member Functions

virtual void classExtraFunctionDeclaration (std::ofstream &fs, const PClassConfig &classConfig, const GeneratorMode &mode) const
 Declaration of extra functions.
virtual void classExtraFunctionImplementation (std::ofstream &fs, const PClassConfig &classConfig, const GeneratorMode &mode) const
 Implementation of extra functions.
 CppTraitDataStream ()
 Consctructor of CppTraitDataStream.
virtual void headerExtraInclude (std::ofstream &fs, const GeneratorMode &mode) const
 Add extra include on the header.
virtual void privateMethodDeclaration (std::ofstream &fs, const PClassConfig &classConfig, const GeneratorMode &mode) const
 Declaration of private methods.
virtual void privateMethodImplementation (std::ofstream &fs, const PClassConfig &classConfig, const GeneratorMode &mode) const
 Implementation of private methods.
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
virtual void testFunction (std::ofstream &fs, const PClassConfig &classConfig, const GeneratorMode &mode) const
virtual ~CppTraitDataStream ()
 Desctructor of CppTraitDataStream.

Detailed Description

Class generator for setter trait.

Definition at line 16 of file CppTraitDataStream.h.

Constructor & Destructor Documentation

◆ CppTraitDataStream()

CppTraitDataStream::CppTraitDataStream ( )

Consctructor of CppTraitDataStream.

Definition at line 12 of file CppTraitDataStream.cpp.

References PAbstractTraitBackend::PAbstractTraitBackend().

Here is the call graph for this function:

◆ ~CppTraitDataStream()

CppTraitDataStream::~CppTraitDataStream ( )
virtual

Desctructor of CppTraitDataStream.

Definition at line 17 of file CppTraitDataStream.cpp.

17{}

Member Function Documentation

◆ classExtraFunctionDeclaration()

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

Declaration of extra functions.

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

Reimplemented from PAbstractTraitBackend.

Definition at line 125 of file CppTraitDataStream.cpp.

125 {
126 if(!mode.enableDataStream){return;}
127 PString name(classConfig.getName());
128 PString fullName(classConfig.getFullName());
129 if(classConfig.getIsEnum()){
130 fs << "PHOENIX_DATA_STREAM_ENUM("<<name<<"::"<<name<<")" << std::endl << std::endl;
131 return;
132 }
133 fs << "///@brief Generic "<<name<<" serialisation/deserialisation, load/save and size function for PhoenixDataStream" << std::endl;
134 fs << "template<typename Stream, DataStreamMode::DataStreamMode Mode>" << std::endl;
135 fs << "struct DataStream<Stream, Mode, "<<fullName<<">{" << std::endl;
136 fs << "\t///Generic function to load/save/serialise/deserialise "<<name << std::endl;
137 fs << "\t/**\t@param[out] ds : stream to be used" << std::endl;
138 fs << "\t * \t@param data : "<<name<<" to be used" << std::endl;
139 fs << "\t * \t@return true on success, false otherwise" << std::endl;
140 fs << "\t*/" << std::endl;
141 fs << "\tstatic bool data_stream(Stream & ds, "<<fullName<<" & data){" << std::endl;
142 fs << "\t\treturn data.readWriteStream<Stream, Mode>(ds);" << std::endl;
143 fs << "\t}" << std::endl;
144 fs << "};" << std::endl << std::endl;
145}
PString getFullName() const
Returns the full name of the class including the namespace.
const PString & getName() const
Returns the class name.
bool getIsEnum() const
Say if the current PClassConfig is an enum.
bool enableDataStream
True to enable data stream interface generator.

References GeneratorMode::enableDataStream, PClassConfig::getFullName(), PClassConfig::getIsEnum(), and PClassConfig::getName().

Here is the call graph for this function:

◆ classExtraFunctionImplementation()

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

Implementation of extra functions.

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

Reimplemented from PAbstractTraitBackend.

Definition at line 152 of file CppTraitDataStream.cpp.

152 {
153 if(!mode.enableDataStream){return;}
154
155}

References GeneratorMode::enableDataStream.

◆ headerExtraInclude()

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

Add extra include on the header.

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

Reimplemented from PAbstractTraitBackend.

Definition at line 23 of file CppTraitDataStream.cpp.

23 {
24 if(!mode.enableDataStream){return;}
25 fs << "#include <array>" << std::endl;
26 fs << "#include <algorithm>" << std::endl;
27 fs << "#include \"phoenix_data_stream.h\"" << std::endl;
28}

References GeneratorMode::enableDataStream.

◆ privateMethodDeclaration()

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

Declaration of private methods.

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

Reimplemented from PAbstractTraitBackend.

Definition at line 107 of file CppTraitDataStream.cpp.

107 {
108
109}

◆ privateMethodImplementation()

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

Implementation of private methods.

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

Reimplemented from PAbstractTraitBackend.

Definition at line 116 of file CppTraitDataStream.cpp.

116 {
117
118}

◆ protectedMethodDeclaration()

void CppTraitDataStream::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 79 of file CppTraitDataStream.cpp.

79 {
80 if(!mode.enableDataStream || classConfig.getIsEnum()){return;}
81 fs << std::endl;
82 fs << "\t\t///Streams a single attribute" << std::endl;
83 fs << "\t\t/** @param[out] ds : stream to be used" << std::endl;
84 fs << "\t\t * @param data : attribute to be streamed" << std::endl;
85 fs << "\t\t * @return true on success, false otherwise" << std::endl;
86 fs << "\t\t*/" << std::endl;
87 fs << "\t\ttemplate<typename Stream, DataStreamMode::DataStreamMode Mode, typename T>" << std::endl;
88 fs << "\t\tstatic bool streamAttribute(Stream & ds, T & data){" << std::endl;
89 fs << "\t\t\treturn DataStream<Stream, Mode, T>::data_stream(ds, data);" << std::endl;
90 fs << "\t\t}" << std::endl << std::endl;
91}

References GeneratorMode::enableDataStream, and PClassConfig::getIsEnum().

Here is the call graph for this function:

◆ protectedMethodImplementation()

void CppTraitDataStream::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 98 of file CppTraitDataStream.cpp.

98 {
99
100}

◆ publicMethodDeclaration()

void CppTraitDataStream::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 35 of file CppTraitDataStream.cpp.

35 {
36 if(!mode.enableDataStream || classConfig.getIsEnum()){return;}
37 PString name(classConfig.getName());
38 fs << std::endl;
39 fs << "\t\t///Load the current "<<name<<" with a stream" << std::endl;
40 fs << "\t\t/** @param[out] ds : stream to be used" << std::endl;
41 fs << "\t\t * @return true on success, false otherwise" << std::endl;
42 fs << "\t\t*/" << std::endl;
43 fs << "\t\ttemplate<typename Stream, DataStreamMode::DataStreamMode Mode>" << std::endl;
44 fs << "\t\tbool readWriteStream(Stream & ds){" << std::endl;
45
46 const PVecClassAttribute & vecAttr(classConfig.getListAttribute());
47 if(vecAttr.size() == 0lu){
48 fs << "\t\t\treturn true;" << std::endl;
49 }else{
50 //Neither "b = f() && b" (each && counts toward SonarQube's cognitive complexity) nor "b &= f()" (SonarQube flags bitwise ops on bool) scale to many attributes.
51 //Collecting every (always-evaluated, no short-circuit) result in an array and reducing it with a single std::all_of keeps cognitive complexity constant regardless of attribute count.
52 fs << "\t\t\tconst std::array<bool, " << vecAttr.size() << "> vecIsOk{" << std::endl;
53 PString separator("\t\t\t\t");
54 for(PVecClassAttribute::const_iterator it(vecAttr.begin()); it != vecAttr.end(); ++it){
55 fs << separator << "streamAttribute<Stream, Mode>(ds, p_" << it->getName() << ")";
56 separator = ",\n\t\t\t\t";
57 }
58 fs << std::endl << "\t\t\t};" << std::endl;
59 fs << "\t\t\treturn std::all_of(vecIsOk.begin(), vecIsOk.end(), [](bool isOk){return isOk;});" << std::endl;
60 }
61 fs << "\t\t}" << std::endl << std::endl;
62}
std::vector< PClassAttribute > PVecClassAttribute
Definition PDataConfig.h:13
const std::vector< PClassAttribute > & getListAttribute() const
Returns the list of attributes of the class.

References GeneratorMode::enableDataStream, PClassConfig::getIsEnum(), PClassConfig::getListAttribute(), and PClassConfig::getName().

Here is the call graph for this function:

◆ publicMethodImplementation()

void CppTraitDataStream::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 69 of file CppTraitDataStream.cpp.

69 {
70 if(!mode.enableDataStream){return;}
71
72}

References GeneratorMode::enableDataStream.

◆ testCallFunction()

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

Reimplemented in CppTraitCopy, CppTraitEmpty, CppTraitFromString, and CppTraitTypeStream.

Definition at line 38 of file PAbstractTraitBackend.h.

38{}

◆ testFunction()

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

Reimplemented in CppTraitCopy, CppTraitEmpty, CppTraitFromString, and CppTraitTypeStream.

Definition at line 37 of file PAbstractTraitBackend.h.

37{}

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