forked from bartvdbraak/blender
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
This commit is contained in:
parent
209a68af39
commit
fc9215129e
@ -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])
|
||||
|
@ -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
|
||||
|
@ -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);
|
||||
|
@ -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));
|
||||
}
|
||||
|
@ -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
|
||||
|
@ -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);
|
||||
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -46,7 +46,4 @@ defs = [
|
||||
'WITH_IK_SOLVER',
|
||||
]
|
||||
|
||||
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_ikplugin', sources, incs, defs, libtype=['core', 'player'], priority=[180, 190], cc_compilerchange='/usr/bin/gcc', cxx_compilerchange='/usr/bin/g++')
|
||||
else:
|
||||
env.BlenderLib('bf_ikplugin', sources, incs, defs, libtype=['core', 'player'], priority=[180, 190])
|
||||
env.BlenderLib('bf_ikplugin', sources, incs, defs, libtype=['core', 'player'], priority=[180, 190])
|
||||
|
Loading…
Reference in New Issue
Block a user