From 45a1ced065d2d6dba57f9660e71ed03402a5788b Mon Sep 17 00:00:00 2001 From: merakulix Date: Wed, 11 Dec 2024 16:35:46 +0100 Subject: [PATCH 1/6] add getter functions --- src/CCPACSPositionings.cpp | 18 ++++++++++++++++++ src/CCPACSPositionings.h | 6 ++++++ 2 files changed, 24 insertions(+) diff --git a/src/CCPACSPositionings.cpp b/src/CCPACSPositionings.cpp index f28396aec..7c397fbb1 100644 --- a/src/CCPACSPositionings.cpp +++ b/src/CCPACSPositionings.cpp @@ -73,6 +73,24 @@ CTiglTransformation CCPACSPositionings::GetPositioningTransformation(const std:: return CTiglTransformation(); } +//TODO write test +int CCPACSPositionings::GetPositioningCount() const +{ + return CPACSPositionings::m_positionings.size(); +} + +//TODO write test +CCPACSPositioning& CCPACSPositionings::GetPositioning(int index) +{ + { + index --; + if (index < 0 || index >= GetPositioningCount()) { + throw CTiglError("Invalid index in CCPACSPositionings::GetPositioning", TIGL_INDEX_ERROR); + } + return *m_positionings[index]; + } +} + namespace { void UpdateNextPositioning(CCPACSPositioning* currPos, int depth) diff --git a/src/CCPACSPositionings.h b/src/CCPACSPositionings.h index 6c15dc29f..28b136bfb 100644 --- a/src/CCPACSPositionings.h +++ b/src/CCPACSPositionings.h @@ -56,6 +56,12 @@ class CCPACSPositionings : public generated::CPACSPositionings // Returns the positioning matrix for a given section-uid TIGL_EXPORT CTiglTransformation GetPositioningTransformation(const std::string& sectionIndex); + // Returns the total count of positionings in a configuration + TIGL_EXPORT int GetPositioningCount() const; + + // Returns the positioning for a given index + TIGL_EXPORT CCPACSPositioning& GetPositioning(int index); + // Cleanup routine TIGL_EXPORT void Cleanup(); From 63abe35acdaa63b40c7c686e9fa773fa63fd5b28 Mon Sep 17 00:00:00 2001 From: merakulix Date: Wed, 18 Dec 2024 12:35:19 +0100 Subject: [PATCH 2/6] update docstring --- src/CCPACSPositionings.cpp | 2 -- src/CCPACSPositionings.h | 4 ++-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/src/CCPACSPositionings.cpp b/src/CCPACSPositionings.cpp index 7c397fbb1..abce95442 100644 --- a/src/CCPACSPositionings.cpp +++ b/src/CCPACSPositionings.cpp @@ -73,13 +73,11 @@ CTiglTransformation CCPACSPositionings::GetPositioningTransformation(const std:: return CTiglTransformation(); } -//TODO write test int CCPACSPositionings::GetPositioningCount() const { return CPACSPositionings::m_positionings.size(); } -//TODO write test CCPACSPositioning& CCPACSPositionings::GetPositioning(int index) { { diff --git a/src/CCPACSPositionings.h b/src/CCPACSPositionings.h index 28b136bfb..811a33146 100644 --- a/src/CCPACSPositionings.h +++ b/src/CCPACSPositionings.h @@ -56,10 +56,10 @@ class CCPACSPositionings : public generated::CPACSPositionings // Returns the positioning matrix for a given section-uid TIGL_EXPORT CTiglTransformation GetPositioningTransformation(const std::string& sectionIndex); - // Returns the total count of positionings in a configuration + // Returns the total count of positionings in a configuration per element (e.g. wing) TIGL_EXPORT int GetPositioningCount() const; - // Returns the positioning for a given index + // Returns the positioning for a given index, starting at 1 TIGL_EXPORT CCPACSPositioning& GetPositioning(int index); // Cleanup routine From 57db31114d9a2638eabb5ef5eaa7a640fb3b325d Mon Sep 17 00:00:00 2001 From: merakulix Date: Wed, 18 Dec 2024 12:37:03 +0100 Subject: [PATCH 3/6] add test for new getter functions in CCPACSPositionings.h --- tests/unittests/tiglWingSegment.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/tests/unittests/tiglWingSegment.cpp b/tests/unittests/tiglWingSegment.cpp index 30ec5625e..4f75420e9 100644 --- a/tests/unittests/tiglWingSegment.cpp +++ b/tests/unittests/tiglWingSegment.cpp @@ -19,6 +19,7 @@ * @brief Tests for testing behavior of the routines for segment handling/query. */ + #include "test.h" // Brings in the GTest framework #include "tigl.h" @@ -709,6 +710,17 @@ TEST_F(WingSegment, tiglWingGetOuterSectionAndElementUID_success) ASSERT_TRUE(strcmp(elementUID, "D150_VAMP_W1_Sec4_Elem1") == 0); } +TEST_F(WingSegment, testGetPositioningCount) +{ + tigl::CCPACSConfigurationManager & manager = tigl::CCPACSConfigurationManager::GetInstance(); + tigl::CCPACSConfiguration & config = manager.GetConfiguration(tiglHandle); + tigl::CCPACSWing& wing = config.GetWing(1); + ASSERT_EQ(4, wing.GetPositionings()->GetPositioningCount()); + ASSERT_NO_THROW(wing.GetPositionings()->GetPositioning(1)); + ASSERT_THROW(wing.GetPositionings()->GetPositioning(0), tigl::CTiglError); + ASSERT_THROW(wing.GetPositionings()->GetPositioning(5), tigl::CTiglError); +} + /* Tests on simple geometry__________________________ */ TEST_F(WingSegmentSimple, getPoint_accuracy_onLinearLoft) { From 4c563f8bf3e7c91b539fc2f2ac2e5be8f14ef5ef Mon Sep 17 00:00:00 2001 From: merakulix Date: Wed, 18 Dec 2024 12:56:52 +0100 Subject: [PATCH 4/6] add docstrings --- tests/unittests/tiglWingSegment.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tests/unittests/tiglWingSegment.cpp b/tests/unittests/tiglWingSegment.cpp index 4f75420e9..c428dee06 100644 --- a/tests/unittests/tiglWingSegment.cpp +++ b/tests/unittests/tiglWingSegment.cpp @@ -710,12 +710,16 @@ TEST_F(WingSegment, tiglWingGetOuterSectionAndElementUID_success) ASSERT_TRUE(strcmp(elementUID, "D150_VAMP_W1_Sec4_Elem1") == 0); } +/* Test on positionings concerning the wings, using the CPACS_30_D150.xml */ TEST_F(WingSegment, testGetPositioningCount) { tigl::CCPACSConfigurationManager & manager = tigl::CCPACSConfigurationManager::GetInstance(); tigl::CCPACSConfiguration & config = manager.GetConfiguration(tiglHandle); tigl::CCPACSWing& wing = config.GetWing(1); + //check if function output matches values from xml file ASSERT_EQ(4, wing.GetPositionings()->GetPositioningCount()); + ASSERT_STREQ("Wing_Position1" , wing.GetPositionings()->GetPositioning(1).GetName().c_str()); + //check if index implementation is correct ASSERT_NO_THROW(wing.GetPositionings()->GetPositioning(1)); ASSERT_THROW(wing.GetPositionings()->GetPositioning(0), tigl::CTiglError); ASSERT_THROW(wing.GetPositionings()->GetPositioning(5), tigl::CTiglError); From 7ae7a08cc97aa9d761b231d885482d85db5330b9 Mon Sep 17 00:00:00 2001 From: merakulix Date: Wed, 18 Dec 2024 14:30:47 +0100 Subject: [PATCH 5/6] update changelog --- ChangeLog.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/ChangeLog.md b/ChangeLog.md index 33425e3bd..4a0ccdaca 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -3,6 +3,10 @@ Changelog Changes since last release ------------- +18/12/2024 +- Fixes + - #936 A particular defined positioning (of the C++-type CCPACSPositioning) was not available via Python bindings since the std::vector> is not exposed to swig. New getter functions have been implemented in CCPACSPositioning.h to make these elements accesible via index, similar to the implementation of for several other classes. For more information see https://github.com/RISCSoftware/cpacs_tigl_gen/issues/59. + 13/11/2024 - Fixes: From 95b5f3c0d71cb763533f8d9eac3f5ebd30b8b1f0 Mon Sep 17 00:00:00 2001 From: merakulix Date: Wed, 18 Dec 2024 14:33:00 +0100 Subject: [PATCH 6/6] make docstrings accessible to doxygen --- src/CCPACSPositionings.h | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/src/CCPACSPositionings.h b/src/CCPACSPositionings.h index 811a33146..a7d804e78 100644 --- a/src/CCPACSPositionings.h +++ b/src/CCPACSPositionings.h @@ -53,13 +53,24 @@ class CCPACSPositionings : public generated::CPACSPositionings // Read CPACS positionings element TIGL_EXPORT void ReadCPACS(const TixiDocumentHandle& tixiHandle, const std::string& wingXPath) override; - // Returns the positioning matrix for a given section-uid + /** + * @brief GetPositioningTransformation returns the positioning matrix for a given section-uid + * @param sectionIndex + * @return Returns CTiglTransformation positioning matrix by sectionIndex + */ TIGL_EXPORT CTiglTransformation GetPositioningTransformation(const std::string& sectionIndex); - // Returns the total count of positionings in a configuration per element (e.g. wing) + /** + * @brief GetPositioningCount returns the total count of positionings in a configuration per element (e.g. wing) + * @return int Return total count of positionings + */ TIGL_EXPORT int GetPositioningCount() const; - // Returns the positioning for a given index, starting at 1 + /** + * @brief GetPositioning + * @param index Note that index starts at 1 + * @return Returns CCPACSPositioning& by index + */ TIGL_EXPORT CCPACSPositioning& GetPositioning(int index); // Cleanup routine