Commit: fc9215129e27d5fd96ee7159e2ff63570e4b16e8 Author: Jens Verwiebe Date: Mon Feb 17 16:39:03 2014 +0100 https://developer.blender.org/rBfc9215129e27d5fd96ee7159e2ff63570e4b16e8
Adapt KDL for compile with clang 3.4, which is stricter with friend classes, fixes ‘friend declaration specifying a default argument must be a definition’, based on information from here: http://www.orocos.org/forum/rtt/rtt-dev/bug-1053-new-compile-error-clang-34-patch-attached =================================================================== M intern/itasc/SConscript M intern/itasc/kdl/frameacc.hpp M intern/itasc/kdl/frames.hpp M intern/itasc/kdl/framevel.hpp M intern/itasc/kdl/jacobian.hpp M intern/itasc/kdl/jntarray.hpp M intern/itasc/kdl/jntarrayacc.hpp M intern/itasc/kdl/jntarrayvel.hpp M source/blender/ikplugin/SConscript =================================================================== diff --git a/intern/itasc/SConscript b/intern/itasc/SConscript index 1b7709b..bd20368 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 40dd5bf..bccd229 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 28a5989..87eedea 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/ita @@ Diff output truncated at 10240 characters. @@ _______________________________________________ Bf-blender-cvs mailing list [email protected] http://lists.blender.org/mailman/listinfo/bf-blender-cvs
