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

Reply via email to