From ce7d570459e34c99b1bcfc186bc00ccbff1e5226 Mon Sep 17 00:00:00 2001 From: Robert Haschke Date: Tue, 3 Oct 2017 22:17:41 +0200 Subject: [PATCH] pimpl_func() only in SubTask class --- include/moveit_task_constructor/subtask.h | 4 +--- src/container.cpp | 7 +++---- src/subtask.cpp | 5 ----- src/subtask_p.h | 7 +------ src/task.cpp | 4 ++-- src/test/container.cpp | 8 ++++---- 6 files changed, 11 insertions(+), 24 deletions(-) diff --git a/include/moveit_task_constructor/subtask.h b/include/moveit_task_constructor/subtask.h index 392eea10..ea00e23b 100644 --- a/include/moveit_task_constructor/subtask.h +++ b/include/moveit_task_constructor/subtask.h @@ -9,9 +9,7 @@ #include #define PRIVATE_CLASS(Class) \ - friend class Class##Private; \ - Class##Private* pimpl_func(); \ - const Class##Private* pimpl_func() const; + friend class Class##Private; namespace planning_scene { MOVEIT_CLASS_FORWARD(PlanningScene) diff --git a/src/container.cpp b/src/container.cpp index 183239df..434667e4 100644 --- a/src/container.cpp +++ b/src/container.cpp @@ -31,12 +31,13 @@ bool ContainerBasePrivate::traverseStages(const ContainerBase::StageCallback &pr continue; ContainerBase *container = dynamic_cast(stage.get()); if (container) - container->pimpl_func()->traverseStages(processor, depth+1); + static_cast(container->pimpl_func())->traverseStages(processor, depth+1); } return true; } -ContainerBasePrivate::iterator ContainerBasePrivate::insert(ContainerBasePrivate::value_type &&subtask, ContainerBasePrivate::const_iterator pos) { +ContainerBasePrivate::iterator ContainerBasePrivate::insert(ContainerBasePrivate::value_type &&subtask, + ContainerBasePrivate::const_iterator pos) { SubTaskPrivate *impl = subtask->pimpl_func(); impl->parent_ = this; subtask->setPlanningScene(scene_); @@ -46,7 +47,6 @@ ContainerBasePrivate::iterator ContainerBasePrivate::insert(ContainerBasePrivate } -PRIVATE_CLASS_IMPL(ContainerBase) ContainerBase::ContainerBase(ContainerBasePrivate *impl) : SubTask(impl) { @@ -86,7 +86,6 @@ const SubTaskPrivate *SerialContainerPrivate::next_(const SubTaskPrivate *child) } -PRIVATE_CLASS_IMPL(SerialContainer) SerialContainer::SerialContainer(SerialContainerPrivate *impl) : ContainerBase(impl) {} diff --git a/src/subtask.cpp b/src/subtask.cpp index 1074f7b5..8e6ee2a1 100644 --- a/src/subtask.cpp +++ b/src/subtask.cpp @@ -101,7 +101,6 @@ const SubTaskPrivate* SubTaskPrivate::next() const { } -PRIVATE_CLASS_IMPL(PropagatingAnyWay) PropagatingAnyWay::PropagatingAnyWay(const std::string &name) : SubTask(new PropagatingAnyWayPrivate(this, name)) {} @@ -179,19 +178,16 @@ void PropagatingAnyWay::newOutputState(const Interface::iterator &it) } -PRIVATE_CLASS_IMPL(PropagatingForward) PropagatingForward::PropagatingForward(const std::string& name) : PropagatingAnyWay(new PropagatingForwardPrivate(this, name)) {} -PRIVATE_CLASS_IMPL(PropagatingBackward) PropagatingBackward::PropagatingBackward(const std::string &name) : PropagatingAnyWay(new PropagatingBackwardPrivate(this, name)) {} -PRIVATE_CLASS_IMPL(Generator) Generator::Generator(const std::string &name) : SubTask(new GeneratorPrivate(this, name)) {} @@ -209,7 +205,6 @@ void Generator::spawn(const planning_scene::PlanningSceneConstPtr& ps, double co } -PRIVATE_CLASS_IMPL(Connecting) Connecting::Connecting(const std::string &name) : SubTask(new ConnectingPrivate(this, name)) { diff --git a/src/subtask_p.h b/src/subtask_p.h index 6d0c310d..43a7928e 100644 --- a/src/subtask_p.h +++ b/src/subtask_p.h @@ -143,10 +143,5 @@ private: } } -// implement pimpl_func() -#define PRIVATE_CLASS_IMPL(Class) \ - inline Class##Private* Class::pimpl_func() { return static_cast(pimpl_); } \ - inline const Class##Private* Class::pimpl_func() const { return static_cast(pimpl_); } \ - // get correctly casted private impl pointer -#define IMPL(Class) Class##Private * const impl = pimpl_func() +#define IMPL(Class) Class##Private * const impl = static_cast(pimpl_func()); diff --git a/src/task.cpp b/src/task.cpp index 7ac3e0c7..acfbb575 100644 --- a/src/task.cpp +++ b/src/task.cpp @@ -68,7 +68,6 @@ public: }; -PRIVATE_CLASS_IMPL(Task) Task::Task(const std::string &name) : SerialContainer(new TaskPrivate(this, name)) { @@ -135,7 +134,8 @@ bool traverseFullTrajectories( } bool Task::processSolutions(const Task::SolutionCallback& processor) { - const TaskPrivate::array_type& children = pimpl_func()->children(); + IMPL(Task); + const TaskPrivate::array_type& children = impl->children(); const size_t nr_of_trajectories = children.size(); std::vector trace; trace.reserve(nr_of_trajectories); diff --git a/src/test/container.cpp b/src/test/container.cpp index 5013a984..1359f870 100644 --- a/src/test/container.cpp +++ b/src/test/container.cpp @@ -90,7 +90,7 @@ TEST_F(SubTaskTest, interfaceFlags) { TEST_F(SubTaskTest, serialContainer) { SerialContainer c("serial"); - SerialContainerPrivate *cp = c.pimpl_func(); + SerialContainerPrivate *cp = static_cast(c.pimpl_func()); EXPECT_TRUE(bool(cp->input_)); EXPECT_TRUE(bool(cp->output_)); @@ -100,7 +100,7 @@ TEST_F(SubTaskTest, serialContainer) { /***** inserting first stage *****/ auto g = std::make_unique(); - GeneratorPrivate *gp = g->pimpl_func(); + GeneratorPrivate *gp = static_cast(g->pimpl_func()); ASSERT_TRUE(c.insert(std::move(g))); EXPECT_FALSE(g); // ownership transferred to container VALIDATE(gp); @@ -114,14 +114,14 @@ TEST_F(SubTaskTest, serialContainer) { /***** inserting second stage *****/ auto f = std::make_unique(); - PropagatingForwardPrivate *fp = f->pimpl_func(); + PropagatingForwardPrivate *fp = static_cast(f->pimpl_func()); ASSERT_TRUE(c.insert(std::move(f))); EXPECT_FALSE(f); // ownership transferred to container VALIDATE(gp, fp); /***** inserting third stage *****/ auto f2 = std::make_unique(); - PropagatingForwardPrivate *fp2 = f2->pimpl_func(); + PropagatingForwardPrivate *fp2 = static_cast(f2->pimpl_func()); #if 0 EXPECT_FALSE(c.insert(std::move(f2), 0)); // should fail at first position EXPECT_TRUE(bool(f)); // ownership not transferred to container