| Line | Branch | Exec | Source |
|---|---|---|---|
| 1 | /*************************************** | ||
| 2 | Auteur : Thibaut Oprinsen, Pierre Aubert | ||
| 3 | Mail : thibaut.oprinsen@lapp.in2p3.fr, pierre.aubert@lapp.in2p3.fr | ||
| 4 | Licence : CeCILL-C | ||
| 5 | ****************************************/ | ||
| 6 | |||
| 7 | #include "NanobindTraitProperty.h" | ||
| 8 | |||
| 9 | ///Constructor of NanobindTraitProperty | ||
| 10 | 1 | NanobindTraitProperty::NanobindTraitProperty() | |
| 11 | 1 | : PAbstractNanobindTraitBackend() | |
| 12 | 1 | {} | |
| 13 | |||
| 14 | ///Destructor of NanobindTraitProperty | ||
| 15 | 2 | NanobindTraitProperty::~NanobindTraitProperty(){} | |
| 16 | |||
| 17 | ///Creates a getter method name | ||
| 18 | /** @param varName : name of the var to get | ||
| 19 | * @return getter method name | ||
| 20 | */ | ||
| 21 | 9 | PString createGetterMethodName(const PString & varName){ | |
| 22 |
3/3✓ Branch 0 (2→3) taken 9 times.
✓ Branch 2 (3→4) taken 9 times.
✓ Branch 4 (4→5) taken 9 times.
|
18 | return "get" + varName.firstToUpper(); |
| 23 | } | ||
| 24 | |||
| 25 | ///Creates a setter method name | ||
| 26 | /** @param varName : name of the var to set | ||
| 27 | * @return setter method name | ||
| 28 | */ | ||
| 29 | 9 | PString createSetterMethodName(const PString & varName){ | |
| 30 |
3/3✓ Branch 0 (2→3) taken 9 times.
✓ Branch 2 (3→4) taken 9 times.
✓ Branch 4 (4→5) taken 9 times.
|
18 | return "set" + varName.firstToUpper(); |
| 31 | } | ||
| 32 | |||
| 33 | ///Registration of property | ||
| 34 | /// @param fs stream to write to | ||
| 35 | /// @param classConfig config of the class | ||
| 36 | /// @param mode generator mode | ||
| 37 | 4 | void NanobindTraitProperty::registerProperty(std::ofstream & fs, const PClassConfig & classConfig, const GeneratorMode & mode) const{ | |
| 38 | 4 | const PVecClassAttribute & listAttr(classConfig.getListAttribute()); | |
| 39 |
2/2✓ Branch 0 (4→5) taken 1 times.
✓ Branch 1 (4→37) taken 3 times.
|
4 | if(classConfig.getIsEnum()){ |
| 40 |
2/2✓ Branch 0 (5→6) taken 1 times.
✓ Branch 2 (6→7) taken 1 times.
|
1 | PString enumName = classConfig.getName(); |
| 41 |
2/2✓ Branch 0 (34→8) taken 2 times.
✓ Branch 1 (34→35) taken 1 times.
|
6 | for(PVecClassAttribute::const_iterator it(listAttr.begin()); it != listAttr.end(); ++it){ |
| 42 |
2/2✓ Branch 0 (10→11) taken 2 times.
✓ Branch 2 (11→12) taken 2 times.
|
4 | PString attributeValue(it->getName()); |
| 43 |
9/9✓ Branch 0 (12→13) taken 2 times.
✓ Branch 2 (15→16) taken 2 times.
✓ Branch 4 (16→17) taken 2 times.
✓ Branch 6 (17→18) taken 2 times.
✓ Branch 8 (18→19) taken 2 times.
✓ Branch 10 (19→20) taken 2 times.
✓ Branch 12 (20→21) taken 2 times.
✓ Branch 14 (21→22) taken 2 times.
✓ Branch 16 (22→23) taken 2 times.
|
4 | fs << "\t\t.value(\"" << it->getName() << "\"," << enumName << "::" << attributeValue << ")" << std::endl; |
| 44 | 2 | } | |
| 45 | 1 | return; | |
| 46 | 1 | } | |
| 47 |
2/4✓ Branch 0 (37→38) taken 3 times.
✗ Branch 1 (37→39) not taken.
✗ Branch 2 (38→39) not taken.
✓ Branch 3 (38→40) taken 3 times.
|
3 | if(!mode.enableSetter || !mode.enableGetter){return;} |
| 48 |
2/2✓ Branch 0 (103→41) taken 9 times.
✓ Branch 1 (103→104) taken 3 times.
|
24 | for(PVecClassAttribute::const_iterator it(listAttr.begin()); it != listAttr.end(); ++it){ |
| 49 |
4/4✓ Branch 0 (41→42) taken 9 times.
✓ Branch 2 (44→45) taken 9 times.
✓ Branch 4 (45→46) taken 9 times.
✓ Branch 6 (46→47) taken 9 times.
|
18 | fs << "\t\t.def_prop_rw(\"" << it->getName() << "\","; |
| 50 |
9/9✓ Branch 0 (47→48) taken 9 times.
✓ Branch 2 (48→49) taken 9 times.
✓ Branch 4 (49→50) taken 9 times.
✓ Branch 6 (50→51) taken 9 times.
✓ Branch 8 (51→52) taken 9 times.
✓ Branch 10 (54→55) taken 9 times.
✓ Branch 12 (55→56) taken 9 times.
✓ Branch 14 (56→57) taken 9 times.
✓ Branch 16 (57→58) taken 9 times.
|
18 | fs << std::endl << "\t\t\t[]( " << classConfig.getName() << " &c) { return c." << createGetterMethodName(it->getName()) << "(); },"; |
| 51 |
14/14✓ Branch 0 (59→60) taken 9 times.
✓ Branch 2 (60→61) taken 9 times.
✓ Branch 4 (61→62) taken 9 times.
✓ Branch 6 (62→63) taken 9 times.
✓ Branch 8 (63→64) taken 9 times.
✓ Branch 10 (66→67) taken 9 times.
✓ Branch 12 (69→70) taken 9 times.
✓ Branch 14 (70→71) taken 9 times.
✓ Branch 16 (71→72) taken 9 times.
✓ Branch 18 (72→73) taken 9 times.
✓ Branch 20 (75→76) taken 9 times.
✓ Branch 22 (76→77) taken 9 times.
✓ Branch 24 (77→78) taken 9 times.
✓ Branch 26 (78→79) taken 9 times.
|
36 | fs << std::endl << "\t\t\t[]( " << classConfig.getName() << " &c, " << makeVarType(it->getType(), true, false, false, it->getIsPointer()) << " value) { c." << createSetterMethodName(it->getName()) << "(value); })"; |
| 52 |
2/2✓ Branch 0 (91→92) taken 6 times.
✓ Branch 1 (91→93) taken 3 times.
|
27 | if(it != listAttr.end() - 1){ |
| 53 |
1/1✓ Branch 0 (92→93) taken 6 times.
|
6 | fs << std::endl; |
| 54 | } | ||
| 55 | } | ||
| 56 | } | ||
| 57 | |||
| 58 | ///Generate test function for property | ||
| 59 | /// @param fs stream to write to | ||
| 60 | /// @param classConfig config of the class | ||
| 61 | /// @param mode generator mode | ||
| 62 | /// @param baseFileName : base name of the configuration | ||
| 63 | 4 | void NanobindTraitProperty::testFunction(std::ofstream & fs, const PClassConfig & classConfig, const GeneratorMode & mode, const PString & baseFileName) const{ | |
| 64 |
7/9✓ Branch 0 (2→3) taken 4 times.
✗ Branch 1 (2→6) not taken.
✓ Branch 2 (3→4) taken 4 times.
✗ Branch 3 (3→6) not taken.
✓ Branch 4 (4→5) taken 4 times.
✓ Branch 6 (5→6) taken 1 times.
✓ Branch 7 (5→7) taken 3 times.
✓ Branch 8 (8→9) taken 1 times.
✓ Branch 9 (8→10) taken 3 times.
|
4 | if(!mode.enableSetter || !mode.enableSetter || classConfig.getIsEnum()){return;} |
| 65 |
1/1✓ Branch 0 (10→11) taken 3 times.
|
3 | PString moduleName = baseFileName.toLower(); |
| 66 |
2/2✓ Branch 0 (11→12) taken 3 times.
✓ Branch 2 (12→13) taken 3 times.
|
3 | PString className = classConfig.getName().toLower(); |
| 67 |
5/5✓ Branch 0 (13→14) taken 3 times.
✓ Branch 2 (14→15) taken 3 times.
✓ Branch 4 (15→16) taken 3 times.
✓ Branch 6 (16→17) taken 3 times.
✓ Branch 8 (17→18) taken 3 times.
|
3 | fs << "#Test getters and setters of the " << classConfig.getName() << " property trait" << std::endl; |
| 68 |
2/2✓ Branch 0 (18→19) taken 3 times.
✓ Branch 2 (19→20) taken 3 times.
|
3 | fs << "def test_attributes_setters_getters():" << std::endl; |
| 69 |
2/2✓ Branch 0 (20→21) taken 3 times.
✓ Branch 2 (21→22) taken 3 times.
|
3 | fs << "\t\"\"\"Test setters and getters of attributes generated by Nanobind\"\"\"" << std::endl; |
| 70 |
3/3✓ Branch 0 (22→23) taken 3 times.
✓ Branch 2 (23→24) taken 3 times.
✓ Branch 4 (24→25) taken 3 times.
|
3 | fs << "\t" << "# Test default constructor" << std::endl; |
| 71 |
9/9✓ Branch 0 (25→26) taken 3 times.
✓ Branch 2 (26→27) taken 3 times.
✓ Branch 4 (27→28) taken 3 times.
✓ Branch 6 (28→29) taken 3 times.
✓ Branch 8 (29→30) taken 3 times.
✓ Branch 10 (30→31) taken 3 times.
✓ Branch 12 (31→32) taken 3 times.
✓ Branch 14 (32→33) taken 3 times.
✓ Branch 16 (33→34) taken 3 times.
|
3 | fs << "\t" << className << " = " << moduleName << "." << classConfig.getName() << "()" << std::endl; |
| 72 |
3/3✓ Branch 0 (34→35) taken 3 times.
✓ Branch 2 (35→36) taken 3 times.
✓ Branch 4 (36→37) taken 3 times.
|
3 | fs << "\t" << "# Test properties" << std::endl; |
| 73 |
1/1✓ Branch 0 (37→38) taken 3 times.
|
3 | const PVecClassAttribute & listAttr(classConfig.getListAttribute()); |
| 74 |
2/2✓ Branch 0 (77→39) taken 9 times.
✓ Branch 1 (77→78) taken 3 times.
|
24 | for(PVecClassAttribute::const_iterator it(listAttr.begin()); it != listAttr.end(); ++it){ |
| 75 |
2/2✓ Branch 0 (41→42) taken 9 times.
✓ Branch 2 (42→43) taken 9 times.
|
18 | PString defaultValue = getTestDefaultValueTypeInPython(it->getType()); |
| 76 |
3/3✓ Branch 0 (43→44) taken 9 times.
✓ Branch 2 (44→45) taken 7 times.
✓ Branch 3 (44→66) taken 2 times.
|
9 | if(defaultValue != ""){ |
| 77 |
8/8✓ Branch 0 (45→46) taken 7 times.
✓ Branch 2 (46→47) taken 7 times.
✓ Branch 4 (47→48) taken 7 times.
✓ Branch 6 (50→51) taken 7 times.
✓ Branch 8 (51→52) taken 7 times.
✓ Branch 10 (52→53) taken 7 times.
✓ Branch 12 (53→54) taken 7 times.
✓ Branch 14 (54→55) taken 7 times.
|
14 | fs << "\t" << className << "." << it->getName() << " = " << defaultValue << std::endl; |
| 78 |
9/9✓ Branch 0 (55→56) taken 7 times.
✓ Branch 2 (56→57) taken 7 times.
✓ Branch 4 (57→58) taken 7 times.
✓ Branch 6 (58→59) taken 7 times.
✓ Branch 8 (61→62) taken 7 times.
✓ Branch 10 (62→63) taken 7 times.
✓ Branch 12 (63→64) taken 7 times.
✓ Branch 14 (64→65) taken 7 times.
✓ Branch 16 (65→66) taken 7 times.
|
14 | fs << "\t" << "assert " << className << "." << it->getName() << " == " << defaultValue << std::endl; |
| 79 | } | ||
| 80 | 9 | } | |
| 81 |
1/1✓ Branch 0 (78→79) taken 3 times.
|
3 | fs << std::endl; |
| 82 | 3 | } | |
| 83 | |||
| 84 | ///Call of the test function | ||
| 85 | /// @param fs stream to write to | ||
| 86 | /// @param classConfig config of the class | ||
| 87 | /// @param mode generator mode | ||
| 88 | ✗ | void NanobindTraitProperty::testCallFunction(std::ofstream & fs, const PClassConfig & classConfig, const GeneratorMode & mode) const{ | |
| 89 | ✗ | if(!mode.enableSetter || !mode.enableSetter || classConfig.getIsEnum()){return;} | |
| 90 | |||
| 91 | ✗ | fs << "\ttest_attributes_setters_getters()" << std::endl; | |
| 92 | } | ||
| 93 |