From fc9215129e27d5fd96ee7159e2ff63570e4b16e8 Mon Sep 17 00:00:00 2001 From: Jens Verwiebe Date: Mon, 17 Feb 2014 16:39:03 +0100 Subject: =?UTF-8?q?Adapt=20KDL=20for=20compile=20with=20clang=203.4,=20whi?= =?UTF-8?q?ch=20is=20stricter=20with=20friend=20classes,=20fixes=20?= =?UTF-8?q?=E2=80=98friend=20declaration=20specifying=20a=20default=20argu?= =?UTF-8?q?ment=20must=20be=20a=20definition=E2=80=99,=20based=20on=20info?= =?UTF-8?q?rmation=20from=20here:=20http://www.orocos.org/forum/rtt/rtt-de?= =?UTF-8?q?v/bug-1053-new-compile-error-clang-34-patch-attached?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- intern/itasc/SConscript | 5 +---- intern/itasc/kdl/frameacc.hpp | 39 ++++++++++++++++++++++++--------------- intern/itasc/kdl/frames.hpp | 29 +++++++++++++++++++---------- intern/itasc/kdl/framevel.hpp | 37 +++++++++++++++++++++++++------------ intern/itasc/kdl/jacobian.hpp | 3 ++- intern/itasc/kdl/jntarray.hpp | 4 ++-- intern/itasc/kdl/jntarrayacc.hpp | 5 +++-- intern/itasc/kdl/jntarrayvel.hpp | 5 +++-- 8 files changed, 79 insertions(+), 48 deletions(-) (limited to 'intern/itasc') diff --git a/intern/itasc/SConscript b/intern/itasc/SConscript index 1b7709bb986..bd20368f001 100644 --- a/intern/itasc/SConscript +++ b/intern/itasc/SConscript @@ -35,7 +35,4 @@ incs = '. ../../extern/Eigen3' defs = [] -if env['OURPLATFORM']=='darwin' and env['C_COMPILER_ID'] == 'clang' and env['CCVERSION'] >= '3.4': # workaround for friend declaration specifies a default argument expression, not allowed anymore - env.BlenderLib ('bf_intern_itasc', sources, Split(incs), defs, libtype=['intern','player'], priority=[20,100], cc_compilerchange='/usr/bin/gcc', cxx_compilerchange='/usr/bin/g++' ) -else: - env.BlenderLib ('bf_intern_itasc', sources, Split(incs), defs, libtype=['intern','player'], priority=[20,100]) +env.BlenderLib ('bf_intern_itasc', sources, Split(incs), defs, libtype=['intern','player'], priority=[20,100]) diff --git a/intern/itasc/kdl/frameacc.hpp b/intern/itasc/kdl/frameacc.hpp index 40dd5bfa712..bccd229804d 100644 --- a/intern/itasc/kdl/frameacc.hpp +++ b/intern/itasc/kdl/frameacc.hpp @@ -78,9 +78,9 @@ public: IMETHOD friend VectorAcc operator / (const VectorAcc& r2,const doubleAcc& r1); - IMETHOD friend bool Equal(const VectorAcc& r1,const VectorAcc& r2,double eps=epsilon); - IMETHOD friend bool Equal(const Vector& r1,const VectorAcc& r2,double eps=epsilon); - IMETHOD friend bool Equal(const VectorAcc& r1,const Vector& r2,double eps=epsilon); + IMETHOD friend bool Equal(const VectorAcc& r1,const VectorAcc& r2,double eps); + IMETHOD friend bool Equal(const Vector& r1,const VectorAcc& r2,double eps); + IMETHOD friend bool Equal(const VectorAcc& r1,const Vector& r2,double eps); IMETHOD friend VectorAcc operator - (const VectorAcc& r); IMETHOD friend doubleAcc dot(const VectorAcc& lhs,const VectorAcc& rhs); IMETHOD friend doubleAcc dot(const VectorAcc& lhs,const Vector& rhs); @@ -132,9 +132,9 @@ public: IMETHOD friend RotationAcc operator* (const RotationAcc& r1,const RotationAcc& r2); IMETHOD friend RotationAcc operator* (const Rotation& r1,const RotationAcc& r2); IMETHOD friend RotationAcc operator* (const RotationAcc& r1,const Rotation& r2); - IMETHOD friend bool Equal(const RotationAcc& r1,const RotationAcc& r2,double eps=epsilon); - IMETHOD friend bool Equal(const Rotation& r1,const RotationAcc& r2,double eps=epsilon); - IMETHOD friend bool Equal(const RotationAcc& r1,const Rotation& r2,double eps=epsilon); + IMETHOD friend bool Equal(const RotationAcc& r1,const RotationAcc& r2,double eps); + IMETHOD friend bool Equal(const Rotation& r1,const RotationAcc& r2,double eps); + IMETHOD friend bool Equal(const RotationAcc& r1,const Rotation& r2,double eps); IMETHOD TwistAcc Inverse(const TwistAcc& arg) const; IMETHOD TwistAcc Inverse(const Twist& arg) const; IMETHOD TwistAcc operator * (const TwistAcc& arg) const; @@ -170,9 +170,9 @@ public: IMETHOD friend FrameAcc operator * (const FrameAcc& f1,const FrameAcc& f2); IMETHOD friend FrameAcc operator * (const Frame& f1,const FrameAcc& f2); IMETHOD friend FrameAcc operator * (const FrameAcc& f1,const Frame& f2); - IMETHOD friend bool Equal(const FrameAcc& r1,const FrameAcc& r2,double eps=epsilon); - IMETHOD friend bool Equal(const Frame& r1,const FrameAcc& r2,double eps=epsilon); - IMETHOD friend bool Equal(const FrameAcc& r1,const Frame& r2,double eps=epsilon); + IMETHOD friend bool Equal(const FrameAcc& r1,const FrameAcc& r2,double eps); + IMETHOD friend bool Equal(const Frame& r1,const FrameAcc& r2,double eps); + IMETHOD friend bool Equal(const FrameAcc& r1,const Frame& r2,double eps); IMETHOD TwistAcc Inverse(const TwistAcc& arg) const; IMETHOD TwistAcc Inverse(const Twist& arg) const; @@ -226,9 +226,9 @@ public: // the new point. // Complexity : 6M+6A - IMETHOD friend bool Equal(const TwistAcc& a,const TwistAcc& b,double eps=epsilon); - IMETHOD friend bool Equal(const Twist& a,const TwistAcc& b,double eps=epsilon); - IMETHOD friend bool Equal(const TwistAcc& a,const Twist& b,double eps=epsilon); + IMETHOD friend bool Equal(const TwistAcc& a,const TwistAcc& b,double eps); + IMETHOD friend bool Equal(const Twist& a,const TwistAcc& b,double eps); + IMETHOD friend bool Equal(const TwistAcc& a,const Twist& b,double eps); IMETHOD Twist GetTwist() const; @@ -240,9 +240,18 @@ public: }; - - - +IMETHOD bool Equal(const VectorAcc&, const VectorAcc&, double = epsilon); +IMETHOD bool Equal(const Vector&, const VectorAcc&, double = epsilon); +IMETHOD bool Equal(const VectorAcc&, const Vector&, double = epsilon); +IMETHOD bool Equal(const RotationAcc&, const RotationAcc&, double = epsilon); +IMETHOD bool Equal(const Rotation&, const RotationAcc&, double = epsilon); +IMETHOD bool Equal(const RotationAcc&, const Rotation&, double = epsilon); +IMETHOD bool Equal(const FrameAcc&, const FrameAcc&, double = epsilon); +IMETHOD bool Equal(const Frame&, const FrameAcc&, double = epsilon); +IMETHOD bool Equal(const FrameAcc&, const Frame&, double = epsilon); +IMETHOD bool Equal(const TwistAcc&, const TwistAcc&, double = epsilon); +IMETHOD bool Equal(const Twist&, const TwistAcc&, double = epsilon); +IMETHOD bool Equal(const TwistAcc&, const Twist&, double = epsilon); #ifdef KDL_INLINE diff --git a/intern/itasc/kdl/frames.hpp b/intern/itasc/kdl/frames.hpp index 28a59898e20..87eedea29f7 100644 --- a/intern/itasc/kdl/frames.hpp +++ b/intern/itasc/kdl/frames.hpp @@ -248,10 +248,10 @@ public: //! do not use operator == because the definition of Equal(.,.) is slightly //! different. It compares whether the 2 arguments are equal in an eps-interval - inline friend bool Equal(const Vector& a,const Vector& b,double eps=epsilon); + inline friend bool Equal(const Vector& a,const Vector& b,double eps); //! return a normalized vector - inline friend Vector Normalize(const Vector& a, double eps=epsilon); + inline friend Vector Normalize(const Vector& a, double eps); //! The literal equality operator==(), also identical. inline friend bool operator==(const Vector& a,const Vector& b); @@ -261,7 +261,7 @@ public: friend class Rotation; friend class Frame; }; - + inline Vector Normalize(const Vector&, double eps=epsilon); /** \brief represents rotations in 3 dimensional space. @@ -502,7 +502,7 @@ public: //! do not use operator == because the definition of Equal(.,.) is slightly //! different. It compares whether the 2 arguments are equal in an eps-interval - friend bool Equal(const Rotation& a,const Rotation& b,double eps=epsilon); + //! The literal equality operator==(), also identical. friend bool operator==(const Rotation& a,const Rotation& b); @@ -663,7 +663,7 @@ public: //! do not use operator == because the definition of Equal(.,.) is slightly //! different. It compares whether the 2 arguments are equal in an eps-interval - inline friend bool Equal(const Frame& a,const Frame& b,double eps=epsilon); + inline friend bool Equal(const Frame& a,const Frame& b,double eps); //! The literal equality operator==(), also identical. inline friend bool operator==(const Frame& a,const Frame& b); @@ -735,7 +735,7 @@ public: //! do not use operator == because the definition of Equal(.,.) is slightly //! different. It compares whether the 2 arguments are equal in an eps-interval - inline friend bool Equal(const Twist& a,const Twist& b,double eps=epsilon); + inline friend bool Equal(const Twist& a,const Twist& b,double eps); //! The literal equality operator==(), also identical. inline friend bool operator==(const Twist& a,const Twist& b); @@ -898,7 +898,7 @@ public: //! do not use operator == because the definition of Equal(.,.) is slightly //! different. It compares whether the 2 arguments are equal in an eps-interval - inline friend bool Equal(const Wrench& a,const Wrench& b,double eps=epsilon); + inline friend bool Equal(const Wrench& a,const Wrench& b,double eps); //! The literal equality operator==(), also identical. inline friend bool operator==(const Wrench& a,const Wrench& b); @@ -979,7 +979,7 @@ public: //! do not use operator == because the definition of Equal(.,.) is slightly //! different. It compares whether the 2 arguments are equal in an eps-interval - inline friend bool Equal(const Vector2& a,const Vector2& b,double eps=epsilon); + inline friend bool Equal(const Vector2& a,const Vector2& b,double eps); friend class Rotation2; }; @@ -1026,7 +1026,7 @@ public: //! do not use operator == because the definition of Equal(.,.) is slightly //! different. It compares whether the 2 arguments are equal in an eps-interval - inline friend bool Equal(const Rotation2& a,const Rotation2& b,double eps=epsilon); + inline friend bool Equal(const Rotation2& a,const Rotation2& b,double eps); }; //! A 2D frame class, for further documentation see the Frames class @@ -1067,9 +1067,18 @@ public: tmp.SetIdentity(); return tmp; } - inline friend bool Equal(const Frame2& a,const Frame2& b,double eps=epsilon); + inline friend bool Equal(const Frame2& a,const Frame2& b,double eps); }; +inline bool Equal(const Vector&, const Vector&, double = epsilon); + bool Equal(const Rotation&, const Rotation&, double = epsilon); +inline bool Equal(const Frame&, const Frame&, double = epsilon); +inline bool Equal(const Twist&, const Twist&, double = epsilon); +inline bool Equal(const Wrench&, const Wrench&, double = epsilon); +inline bool Equal(const Vector2&, const Vector2&, double = epsilon); +inline bool Equal(const Rotation2&, const Rotation2&, double = epsilon); +inline bool Equal(const Frame2&, const Frame2&, double = epsilon); + IMETHOD Vector diff(const Vector& a,const Vector& b,double dt=1); IMETHOD Vector diff(const Rotation& R_a_b1,const Rotation& R_a_b2,double dt=1); IMETHOD Twist diff(const Frame& F_a_b1,const Frame& F_a_b2,double dt=1); diff --git a/intern/itasc/kdl/framevel.hpp b/intern/itasc/kdl/framevel.hpp index e95c5ef7907..17e1f2adfa0 100644 --- a/intern/itasc/kdl/framevel.hpp +++ b/intern/itasc/kdl/framevel.hpp @@ -110,9 +110,9 @@ public: IMETHOD friend void SetToZero(VectorVel& v); - IMETHOD friend bool Equal(const VectorVel& r1,const VectorVel& r2,double eps=epsilon); - IMETHOD friend bool Equal(const Vector& r1,const VectorVel& r2,double eps=epsilon); - IMETHOD friend bool Equal(const VectorVel& r1,const Vector& r2,double eps=epsilon); + IMETHOD friend bool Equal(const VectorVel& r1,const VectorVel& r2,double eps); + IMETHOD friend bool Equal(const Vector& r1,const VectorVel& r2,double eps); + IMETHOD friend bool Equal(const VectorVel& r1,const Vector& r2,double eps); IMETHOD friend VectorVel operator - (const VectorVel& r); IMETHOD friend doubleVel dot(const VectorVel& lhs,const VectorVel& rhs); IMETHOD friend doubleVel dot(const VectorVel& lhs,const Vector& rhs); @@ -166,9 +166,9 @@ public: IMETHOD friend RotationVel operator* (const RotationVel& r1,const RotationVel& r2); IMETHOD friend RotationVel operator* (const Rotation& r1,const RotationVel& r2); IMETHOD friend RotationVel operator* (const RotationVel& r1,const Rotation& r2); - IMETHOD friend bool Equal(const RotationVel& r1,const RotationVel& r2,double eps=epsilon); - IMETHOD friend bool Equal(const Rotation& r1,const RotationVel& r2,double eps=epsilon); - IMETHOD friend bool Equal(const RotationVel& r1,const Rotation& r2,double eps=epsilon); + IMETHOD friend bool Equal(const RotationVel& r1,const RotationVel& r2,double eps); + IMETHOD friend bool Equal(const Rotation& r1,const RotationVel& r2,double eps); + IMETHOD friend bool Equal(const RotationVel& r1,const Rotation& r2,double eps); IMETHOD TwistVel Inverse(const TwistVel& arg) const; IMETHOD TwistVel Inverse(const Twist& arg) const; @@ -220,9 +220,9 @@ public: IMETHOD friend FrameVel operator * (const FrameVel& f1,const FrameVel& f2); IMETHOD friend FrameVel operator * (const Frame& f1,const FrameVel& f2); IMETHOD friend FrameVel operator * (const FrameVel& f1,const Frame& f2); - IMETHOD friend bool Equal(const FrameVel& r1,const FrameVel& r2,double eps=epsilon); - IMETHOD friend bool Equal(const Frame& r1,const FrameVel& r2,double eps=epsilon); - IMETHOD friend bool Equal(const FrameVel& r1,const Frame& r2,double eps=epsilon); + IMETHOD friend bool Equal(const FrameVel& r1,const FrameVel& r2,double eps); + IMETHOD friend bool Equal(const Frame& r1,const FrameVel& r2,double eps); + IMETHOD friend bool Equal(const FrameVel& r1,const Frame& r2,double eps); IMETHOD TwistVel Inverse(const TwistVel& arg) const; IMETHOD TwistVel Inverse(const Twist& arg) const; @@ -292,9 +292,9 @@ public: // = Equality operators // do not use operator == because the definition of Equal(.,.) is slightly // different. It compares whether the 2 arguments are equal in an eps-interval - IMETHOD friend bool Equal(const TwistVel& a,const TwistVel& b,double eps=epsilon); - IMETHOD friend bool Equal(const Twist& a,const TwistVel& b,double eps=epsilon); - IMETHOD friend bool Equal(const TwistVel& a,const Twist& b,double eps=epsilon); + IMETHOD friend bool Equal(const TwistVel& a,const TwistVel& b,double eps); + IMETHOD friend bool Equal(const Twist& a,const TwistVel& b,double eps); + IMETHOD friend bool Equal(const TwistVel& a,const Twist& b,double eps); // = Conversion to other entities IMETHOD Twist GetTwist() const; @@ -305,6 +305,19 @@ public: }; +IMETHOD bool Equal(const VectorVel&, const VectorVel&, double = epsilon); +IMETHOD bool Equal(const Vector&, const VectorVel&, double = epsilon); +IMETHOD bool Equal(const VectorVel&, const Vector&, double = epsilon); +IMETHOD bool Equal(const RotationVel&, const RotationVel&, double = epsilon); +IMETHOD bool Equal(const Rotation&, const RotationVel&, double = epsilon); +IMETHOD bool Equal(const RotationVel&, const Rotation&, double = epsilon); +IMETHOD bool Equal(const FrameVel&, const FrameVel&, double = epsilon); +IMETHOD bool Equal(const Frame&, const FrameVel&, double = epsilon); +IMETHOD bool Equal(const FrameVel&, const Frame&, double = epsilon); +IMETHOD bool Equal(const TwistVel&, const TwistVel&, double = epsilon); +IMETHOD bool Equal(const Twist&, const TwistVel&, double = epsilon); +IMETHOD bool Equal(const TwistVel&, const Twist&, double = epsilon); + IMETHOD VectorVel diff(const VectorVel& a,const VectorVel& b,double dt=1.0) { return VectorVel(diff(a.p,b.p,dt),diff(a.v,b.v,dt)); } diff --git a/intern/itasc/kdl/jacobian.hpp b/intern/itasc/kdl/jacobian.hpp index e9057451c9f..9708ebd37be 100644 --- a/intern/itasc/kdl/jacobian.hpp +++ b/intern/itasc/kdl/jacobian.hpp @@ -45,7 +45,7 @@ namespace KDL bool operator ==(const Jacobian& arg); bool operator !=(const Jacobian& arg); - friend bool Equal(const Jacobian& a,const Jacobian& b,double eps=epsilon); + friend bool Equal(const Jacobian& a,const Jacobian& b,double eps); ~Jacobian(); @@ -63,6 +63,7 @@ namespace KDL }; + bool Equal(const Jacobian&, const Jacobian&, double = epsilon); } #endif diff --git a/intern/itasc/kdl/jntarray.hpp b/intern/itasc/kdl/jntarray.hpp index ece6b0bdb6b..886171b11db 100644 --- a/intern/itasc/kdl/jntarray.hpp +++ b/intern/itasc/kdl/jntarray.hpp @@ -209,12 +209,12 @@ class MyTask : public RTT::TaskContext * @return true if each element of src1 is within eps of the same * element in src2, or if both src1 and src2 have no data (ie 0==rows()) */ - friend bool Equal(const JntArray& src1,const JntArray& src2,double eps=epsilon); + friend bool Equal(const JntArray& src1,const JntArray& src2,double eps); friend bool operator==(const JntArray& src1,const JntArray& src2); //friend bool operator!=(const JntArray& src1,const JntArray& src2); }; - + bool Equal(const JntArray&,const JntArray&, double = epsilon); bool operator==(const JntArray& src1,const JntArray& src2); //bool operator!=(const JntArray& src1,const JntArray& src2); diff --git a/intern/itasc/kdl/jntarrayacc.hpp b/intern/itasc/kdl/jntarrayacc.hpp index 275aa58f21e..fd1c26430e8 100644 --- a/intern/itasc/kdl/jntarrayacc.hpp +++ b/intern/itasc/kdl/jntarrayacc.hpp @@ -58,9 +58,10 @@ namespace KDL friend void Divide(const JntArrayAcc& src,const doubleVel& factor,JntArrayAcc& dest); friend void Divide(const JntArrayAcc& src,const doubleAcc& factor,JntArrayAcc& dest); friend void SetToZero(JntArrayAcc& array); - friend bool Equal(const JntArrayAcc& src1,const JntArrayAcc& src2,double eps=epsilon); - + friend bool Equal(const JntArrayAcc& src1,const JntArrayAcc& src2,double eps); }; + + bool Equal(const JntArrayAcc&, const JntArrayAcc&, double = epsilon); } #endif diff --git a/intern/itasc/kdl/jntarrayvel.hpp b/intern/itasc/kdl/jntarrayvel.hpp index faa82076ebb..480f84f1708 100644 --- a/intern/itasc/kdl/jntarrayvel.hpp +++ b/intern/itasc/kdl/jntarrayvel.hpp @@ -51,9 +51,10 @@ namespace KDL friend void Divide(const JntArrayVel& src,const double& factor,JntArrayVel& dest); friend void Divide(const JntArrayVel& src,const doubleVel& factor,JntArrayVel& dest); friend void SetToZero(JntArrayVel& array); - friend bool Equal(const JntArrayVel& src1,const JntArrayVel& src2,double eps=epsilon); - + friend bool Equal(const JntArrayVel& src1,const JntArrayVel& src2,double eps); }; + + bool Equal(const JntArrayVel&, const JntArrayVel&, double = epsilon); } #endif -- cgit v1.2.3