PhoenixGenerator  2.0.4
Set of tools to generate code
Loading...
Searching...
No Matches
CppTraitDataStream.cpp
Go to the documentation of this file.
1
2/***************************************
3 Auteur : Pierre Aubert
4 Mail : pierre.aubert@lapp.in2p3.fr
5 Licence : CeCILL-C
6****************************************/
7
9
14
17
19
22void CppTraitDataStream::headerExtraInclude(std::ofstream & fs, const GeneratorMode & mode) const{
23 if(!mode.enableDataStream){return;}
24 fs << "#include \"phoenix_data_stream.h\"" << std::endl;
25}
26
28
32void CppTraitDataStream::publicMethodDeclaration(std::ofstream & fs, const PClassConfig & classConfig, const GeneratorMode & mode) const{
33 if(!mode.enableDataStream || classConfig.getIsEnum()){return;}
34 PString name(classConfig.getName());
35 fs << std::endl;
36 fs << "\t\t///Load the current "<<name<<" with a stream" << std::endl;
37 fs << "\t\t/** @param[out] ds : stream to be used" << std::endl;
38 fs << "\t\t * @return true on success, false otherwise" << std::endl;
39 fs << "\t\t*/" << std::endl;
40 fs << "\t\ttemplate<typename Stream, DataStreamMode::DataStreamMode Mode>" << std::endl;
41 fs << "\t\tbool readWriteStream(Stream & ds){" << std::endl;
42 fs << "\t\t\tbool b(true);" << std::endl;
43
44 const PVecClassAttribute & vecAttr(classConfig.getListAttribute());
45 for(PVecClassAttribute::const_iterator it(vecAttr.begin()); it != vecAttr.end(); ++it){
46 fs << "\t\t\tb &= DataStream<Stream, Mode, "<<it->getType()<<" >::data_stream(ds, p_" << it->getName() << ");" << std::endl;
47 }
48
49 fs << "\t\t\treturn b;" << std::endl;
50 fs << "\t\t}" << std::endl << std::endl;
51}
52
54
58void CppTraitDataStream::publicMethodImplementation(std::ofstream & fs, const PClassConfig & classConfig, const GeneratorMode & mode) const{
59 if(!mode.enableDataStream){return;}
60
61}
62
64
68void CppTraitDataStream::protectedMethodDeclaration(std::ofstream & fs, const PClassConfig & classConfig, const GeneratorMode & mode) const{
69
70}
71
73
77void CppTraitDataStream::protectedMethodImplementation(std::ofstream & fs, const PClassConfig & classConfig, const GeneratorMode & mode) const{
78
79}
80
82
86void CppTraitDataStream::privateMethodDeclaration(std::ofstream & fs, const PClassConfig & classConfig, const GeneratorMode & mode) const{
87
88}
89
91
95void CppTraitDataStream::privateMethodImplementation(std::ofstream & fs, const PClassConfig & classConfig, const GeneratorMode & mode) const{
96
97}
98
100
104void CppTraitDataStream::classExtraFunctionDeclaration(std::ofstream & fs, const PClassConfig & classConfig, const GeneratorMode & mode) const{
105 if(!mode.enableDataStream){return;}
106 PString name(classConfig.getName());
107 if(classConfig.getIsEnum()){
108 fs << "PHOENIX_DATA_STREAM_ENUM("<<name<<"::"<<name<<")" << std::endl << std::endl;
109 return;
110 }
111 fs << "///@brief Generic "<<name<<" serialisation/deserialisation, load/save and size function for PhoenixDataStream" << std::endl;
112 fs << "template<typename Stream, DataStreamMode::DataStreamMode Mode>" << std::endl;
113 fs << "struct DataStream<Stream, Mode, "<<name<<">{" << std::endl;
114 fs << "\t///Generic function to load/save/serialise/deserialise "<<name << std::endl;
115 fs << "\t/**\t@param[out] ds : stream to be used" << std::endl;
116 fs << "\t * \t@param data : "<<name<<" to be used" << std::endl;
117 fs << "\t * \t@return true on success, false otherwise" << std::endl;
118 fs << "\t*/" << std::endl;
119 fs << "\tstatic bool data_stream(Stream & ds, "<<name<<" & data){" << std::endl;
120 fs << "\t\treturn data.readWriteStream<Stream, Mode>(ds);" << std::endl;
121 fs << "\t}" << std::endl;
122 fs << "};" << std::endl << std::endl;
123}
124
126
130void CppTraitDataStream::classExtraFunctionImplementation(std::ofstream & fs, const PClassConfig & classConfig, const GeneratorMode & mode) const{
131 if(!mode.enableDataStream){return;}
132
133}
134
135
136
137
std::vector< PClassAttribute > PVecClassAttribute
Definition PDataConfig.h:13
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 protectedMethodDeclaration(std::ofstream &fs, const PClassConfig &classConfig, const GeneratorMode &mode) const
Declaration of protected methods.
virtual void headerExtraInclude(std::ofstream &fs, const GeneratorMode &mode) const
Add extra include on the header.
virtual void classExtraFunctionImplementation(std::ofstream &fs, const PClassConfig &classConfig, const GeneratorMode &mode) const
Implementation of extra functions.
CppTraitDataStream()
Consctructor of CppTraitDataStream.
virtual void classExtraFunctionDeclaration(std::ofstream &fs, const PClassConfig &classConfig, const GeneratorMode &mode) const
Declaration of extra functions.
virtual ~CppTraitDataStream()
Desctructor of CppTraitDataStream.
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 publicMethodImplementation(std::ofstream &fs, const PClassConfig &classConfig, const GeneratorMode &mode) const
Implementation of public methods.
Class to describe a basic class.
const std::vector< PClassAttribute > & getListAttribute() const
Returns the list of attributes of the class.
const PString & getName() const
Returns the class name.
bool getIsEnum() const
Say if the current PClassConfig is an enum.
All the genertor modes.
bool enableDataStream
True to enable data stream interface generator.