PhoenixGenerator  2.0.4
Set of tools to generate code
Loading...
Searching...
No Matches
WrapperTraitGetterSetter Class Reference

Class generator for setter trait. More...

#include <WrapperTraitGetterSetter.h>

+ Inheritance diagram for WrapperTraitGetterSetter:
+ Collaboration diagram for WrapperTraitGetterSetter:

Public Member Functions

virtual void classMethodDeclaration (std::ofstream &fs, const PClassConfig &classConfig, const GeneratorMode &mode) const
 Declaration of class method.
 
virtual void classMethodImplementation (std::ofstream &fs, const PClassConfig &classConfig, const GeneratorMode &mode) const
 Implementation of class method.
 
virtual void headerExtraInclude (std::ofstream &fs, const GeneratorMode &mode) const
 Add extra include on the header.
 
virtual void registerClassGetterSetter (std::ofstream &fs, const PClassConfig &classConfig, const GeneratorMode &mode) const
 Register class getter and setter.
 
virtual void registerClassMember (std::ofstream &fs, const PClassConfig &classConfig, const GeneratorMode &mode) const
 Register class member.
 
virtual void registerClassMethod (std::ofstream &fs, const PClassConfig &classConfig, const GeneratorMode &mode) const
 Register class method.
 
virtual void setupAddDependency (std::ofstream &fs, const GeneratorMode &mode) const
 
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.
 
 WrapperTraitGetterSetter ()
 Consctructor of WrapperTraitGetterSetter.
 
virtual ~WrapperTraitGetterSetter ()
 Desctructor of WrapperTraitGetterSetter.
 

Detailed Description

Class generator for setter trait.

Definition at line 16 of file WrapperTraitGetterSetter.h.

Constructor & Destructor Documentation

◆ WrapperTraitGetterSetter()

WrapperTraitGetterSetter::WrapperTraitGetterSetter ( )

Consctructor of WrapperTraitGetterSetter.

Definition at line 11 of file WrapperTraitGetterSetter.cpp.

References PAbstractWrapperTraitBackend::PAbstractWrapperTraitBackend().

+ Here is the call graph for this function:

◆ ~WrapperTraitGetterSetter()

WrapperTraitGetterSetter::~WrapperTraitGetterSetter ( )
virtual

Desctructor of WrapperTraitGetterSetter.

Definition at line 16 of file WrapperTraitGetterSetter.cpp.

16{}

Member Function Documentation

◆ classMethodDeclaration()

void WrapperTraitGetterSetter::classMethodDeclaration ( std::ofstream & fs,
const PClassConfig & classConfig,
const GeneratorMode & mode ) const
virtual

Declaration of class method.

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

Reimplemented from PAbstractWrapperTraitBackend.

Definition at line 32 of file WrapperTraitGetterSetter.cpp.

32 {
33 if(!mode.enableSetter || !mode.enableGetter || classConfig.getIsEnum()){return;}
34 PString className(wrapper_getClassName(classConfig));
35 const PVecClassAttribute & vecAttr = classConfig.getListAttribute();
36 for(PVecClassAttribute::const_iterator it(vecAttr.begin()); it != vecAttr.end(); ++it){
37 //If the type is simple, we do not need getter, setter and other methods
38 if(getIsSimpleType(it->getType())){continue;}
39 fs << "int "+className+"_set"+it->getName()+"("+className+" * self, PyObject * value, void * closure);\n";
40 fs << "PyObject * "+className+"_get"+it->getName()+"("+className+" * self, void * closure);\n";
41 }
42}
std::vector< PClassAttribute > PVecClassAttribute
Definition PDataConfig.h:13
const std::vector< PClassAttribute > & getListAttribute() const
Returns the list of attributes of the class.
bool getIsEnum() const
Say if the current PClassConfig is an enum.
bool enableGetter
True to enable getters trait generator.
bool enableSetter
True to enable setters trait generator.
bool getIsSimpleType(const PString &varType)
Check if the given type is a simple type.
PString wrapper_getClassName(const PClassConfig &classConfig)
Get the corresponding wrapper class name.

References GeneratorMode::enableGetter, GeneratorMode::enableSetter, PClassConfig::getIsEnum(), getIsSimpleType(), PClassConfig::getListAttribute(), and wrapper_getClassName().

+ Here is the call graph for this function:

◆ classMethodImplementation()

void WrapperTraitGetterSetter::classMethodImplementation ( std::ofstream & fs,
const PClassConfig & classConfig,
const GeneratorMode & mode ) const
virtual

Implementation of class method.

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

Reimplemented from PAbstractWrapperTraitBackend.

Definition at line 49 of file WrapperTraitGetterSetter.cpp.

49 {
50 if(!mode.enableSetter || !mode.enableGetter || classConfig.getIsEnum()){return;}
51 PString body, className(wrapper_getClassName(classConfig));
52 const PVecClassAttribute & vecAttr = classConfig.getListAttribute();
53 for(PVecClassAttribute::const_iterator it(vecAttr.begin()); it != vecAttr.end(); ++it){
54 if(getIsSimpleType(it->getType())){continue;}
55 PString attrName(it->getName()), attrDoc(it->getDocumentation());
56 fs << "///Setter of the "+attrName+"\n";
57 fs << "/**\t@param self : object "+className+"\n";
58 fs << " * \t@param value : "+attrDoc+"\n";
59 fs << " * \t@param closure : object closure for python API (it is a wrapper python grosse bidouille)\n";
60 fs << " * \t@return 0 on success, -1 otherwise\n";
61 fs << "*/\n";
62 fs << "int "+className+"_set"+attrName+"("+className+" * self, PyObject * value, void * closure){\n";
63 fs << "\tif(value == NULL){\n";
64 fs << "\t\tPyErr_SetString(PyExc_TypeError, \"Cannot delete the "+className+"."+attrName+" attribute\");\n";
65 fs << "\t\treturn -1;\n";
66 fs << "\t}\n";
67 fs << "\tPy_DECREF(self->"+attrName+");\n";
68 fs << "\tPy_INCREF(value);\n";
69 fs << "\tself->"+attrName+" = value;\n";
70 fs << "\treturn 0;\n";
71 fs << "}\n\n";
72
73 fs << "///Setter of the "+attrName+"\n";
74 fs << "/**\t@param self : object "+className+"\n";
75 fs << " * \t@param closure : object closure for python API (it is a wrapper python grosse bidouille)\n";
76 fs << " * \t@return "+attrDoc+"\n";
77 fs << "*/\n";
78 fs << "PyObject * "+className+"_get"+attrName+"("+className+" * self, void * closure){\n";
79 fs << "\tPy_INCREF(self->"+attrName+");\n";
80 fs << "\treturn self->"+attrName+";\n";
81 fs << "}\n\n";
82
83 }
84}

References GeneratorMode::enableGetter, GeneratorMode::enableSetter, PClassConfig::getIsEnum(), getIsSimpleType(), PClassConfig::getListAttribute(), and wrapper_getClassName().

+ Here is the call graph for this function:

◆ headerExtraInclude()

void WrapperTraitGetterSetter::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 PAbstractWrapperTraitBackend.

Definition at line 22 of file WrapperTraitGetterSetter.cpp.

22 {
23 if(!mode.enableSetter || !mode.enableGetter){return;}
24
25}

References GeneratorMode::enableGetter, and GeneratorMode::enableSetter.

◆ registerClassGetterSetter()

void WrapperTraitGetterSetter::registerClassGetterSetter ( std::ofstream & fs,
const PClassConfig & classConfig,
const GeneratorMode & mode ) const
virtual

Register class getter and setter.

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

Reimplemented from PAbstractWrapperTraitBackend.

Definition at line 108 of file WrapperTraitGetterSetter.cpp.

108 {
109 if(!mode.enableSetter || !mode.enableGetter){return;}
110 PString className(wrapper_getClassName(classConfig));
111 const PVecClassAttribute & vecAttr = classConfig.getListAttribute();
112 for(PVecClassAttribute::const_iterator it(vecAttr.begin()); it != vecAttr.end(); ++it){
113 if(getIsSimpleType(it->getType())){
114 continue;
115 }
116 fs << "\t{(char*)\""<<it->getName()+"\", (getter)"<<className+"_get"<<it->getName()<<", (setter)"<<className+"_set"+it->getName()<<", (char*)\""+it->getDocumentation().replace("///", "")+"\", NULL},\n";
117 }
118}

References GeneratorMode::enableGetter, GeneratorMode::enableSetter, getIsSimpleType(), PClassConfig::getListAttribute(), and wrapper_getClassName().

+ Here is the call graph for this function:

◆ registerClassMember()

void WrapperTraitGetterSetter::registerClassMember ( std::ofstream & fs,
const PClassConfig & classConfig,
const GeneratorMode & mode ) const
virtual

Register class member.

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

Reimplemented from PAbstractWrapperTraitBackend.

Definition at line 91 of file WrapperTraitGetterSetter.cpp.

91 {
92 if(!mode.enableSetter || !mode.enableGetter){return;}
93 PString className(wrapper_getClassName(classConfig));
94 const PVecClassAttribute & vecAttr = classConfig.getListAttribute();
95 for(PVecClassAttribute::const_iterator it(vecAttr.begin()); it != vecAttr.end(); ++it){
96 if(!getIsSimpleType(it->getType())){
97 continue;
98 }
99 fs << "\t{(char*)\""<<it->getName()<<"\", "+getPythonStrForPythonApiType(it->getType())<<", offsetof("<<className<<", "<<it->getName()<<"), 0, (char*)\"Doc : "<<it->getDocumentation().replace("///", "")<<"\"},\n";
100 }
101}
PString getPythonStrForPythonApiType(const PString &typeStr)
Gets the python API str type of the correcponding numpy C/C++ type.

References GeneratorMode::enableGetter, GeneratorMode::enableSetter, getIsSimpleType(), PClassConfig::getListAttribute(), getPythonStrForPythonApiType(), and wrapper_getClassName().

+ Here is the call graph for this function:

◆ registerClassMethod()

void WrapperTraitGetterSetter::registerClassMethod ( std::ofstream & fs,
const PClassConfig & classConfig,
const GeneratorMode & mode ) const
virtual

Register class method.

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

Reimplemented from PAbstractWrapperTraitBackend.

Definition at line 125 of file WrapperTraitGetterSetter.cpp.

125 {
126 if(!mode.enableSetter || !mode.enableGetter){return;}
127
128}

References GeneratorMode::enableGetter, and GeneratorMode::enableSetter.

◆ setupAddDependency()

virtual void PAbstractWrapperTraitBackend::setupAddDependency ( std::ofstream & fs,
const GeneratorMode & mode ) const
inlinevirtualinherited

Reimplemented in WrapperTraitDataStream, and WrapperTraitTypeStream.

Definition at line 60 of file PAbstractTraitBackend.h.

60{}

◆ testCallFunction()

void WrapperTraitGetterSetter::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 PAbstractWrapperTraitBackend.

Definition at line 145 of file WrapperTraitGetterSetter.cpp.

145 {
146 if(!mode.enableSetter || !mode.enableGetter){return;}
147
148}

References GeneratorMode::enableGetter, and GeneratorMode::enableSetter.

◆ testFunction()

void WrapperTraitGetterSetter::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 PAbstractWrapperTraitBackend.

Definition at line 135 of file WrapperTraitGetterSetter.cpp.

135 {
136 if(!mode.enableSetter || !mode.enableGetter){return;}
137
138}

References GeneratorMode::enableGetter, and GeneratorMode::enableSetter.


The documentation for this class was generated from the following files: