Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJens Verwiebe <info@jensverwiebe.de>2014-02-17 19:39:03 +0400
committerJens Verwiebe <info@jensverwiebe.de>2014-02-17 19:39:03 +0400
commitfc9215129e27d5fd96ee7159e2ff63570e4b16e8 (patch)
tree0fdb88188969c035d2dc77b46643ef94469052e5 /intern/itasc
parent209a68af39f23e61e2958a458fd280a26aa92f37 (diff)
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
Diffstat (limited to 'intern/itasc')
-rw-r--r--intern/itasc/SConscript5
-rw-r--r--intern/itasc/kdl/frameacc.hpp39
-rw-r--r--intern/itasc/kdl/frames.hpp29
-rw-r--r--intern/itasc/kdl/framevel.hpp37
-rw-r--r--intern/itasc/kdl/jacobian.hpp3
-rw-r--r--intern/itasc/kdl/jntarray.hpp4
-rw-r--r--intern/itasc/kdl/jntarrayacc.hpp5
-rw-r--r--intern/itasc/kdl/jntarrayvel.hpp5
8 files changed, 79 insertions, 48 deletions
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