tags 355983 +patch thanks In standard C++, friend functions that are only declared inside a class can only be found by argument-dependent lookup (and can only be defined inline, though it's not a syntax error to fail to do so!)
The attached patch adds namespace-scope declarations for all friend functions that are not (1) operator functions and (2) defined inline. It also removes some unnecessary friend declarations in FXString and FXWString. With this patch applied, the package can be built with g++-4.1 in sid on i386. However, there are many remaining warnings that should be attended to. In particular there are warnings about the redundant "-Wmissing-prototypes" option and about type-punning (casting) that may result in broken code unless the "-fno-strict-aliasing" option is used. Ben. -- Ben Hutchings Q. Which is the greater problem in the world today, ignorance or apathy? A. I don't know and I couldn't care less.
diff -ur fox1.2-1.2.13.orig/include/FXCharset.h fox1.2-1.2.13/include/FXCharset.h --- fox1.2-1.2.13.orig/include/FXCharset.h 2004-02-08 17:17:33.000000000 +0000 +++ fox1.2-1.2.13/include/FXCharset.h 2006-03-10 00:48:51.722421154 +0000 @@ -27,6 +27,15 @@ namespace FX { /// A set of characters + +class FXCharset; + +/// Save set to a stream +FXAPI FXStream& operator<<(FXStream& store,const FXCharset& cs); + +/// Load set from a stream +FXAPI FXStream& operator>>(FXStream& store,FXCharset& cs); + class FXAPI FXCharset { private: FXuint s[8]; // Because 8*32 is 256 characters diff -ur fox1.2-1.2.13.orig/include/FXMat3d.h fox1.2-1.2.13/include/FXMat3d.h --- fox1.2-1.2.13.orig/include/FXMat3d.h 2004-02-08 17:17:33.000000000 +0000 +++ fox1.2-1.2.13/include/FXMat3d.h 2006-03-10 00:48:03.526775898 +0000 @@ -29,6 +29,42 @@ /// Double-precision 3x3 matrix + +class FXMat3d; + +/// Other operators +FXAPI FXMat3d operator+(const FXMat3d& a,const FXMat3d& b); +FXAPI FXMat3d operator-(const FXMat3d& a,const FXMat3d& b); +FXAPI FXMat3d operator-(const FXMat3d& a); +FXAPI FXMat3d operator*(const FXMat3d& a,const FXMat3d& b); +FXAPI FXMat3d operator*(FXdouble x,const FXMat3d& a); +FXAPI FXMat3d operator*(const FXMat3d& a,FXdouble x); +FXAPI FXMat3d operator/(const FXMat3d& a,FXdouble x); +FXAPI FXMat3d operator/(FXdouble x,const FXMat3d& a); + +/// Multiply matrix and vector +FXAPI FXVec3d operator*(const FXVec3d& v,const FXMat3d& m); +FXAPI FXVec3d operator*(const FXMat3d& a,const FXVec3d& v); + +/// Mutiply matrix and vector, for non-projective matrix +FXAPI FXVec2d operator*(const FXVec2d& v,const FXMat3d& m); +FXAPI FXVec2d operator*(const FXMat3d& a,const FXVec2d& v); + +/// Determinant +FXAPI FXdouble det(const FXMat3d& m); + +/// Transpose +FXAPI FXMat3d transpose(const FXMat3d& m); + +/// Invert +FXAPI FXMat3d invert(const FXMat3d& m); + +/// Save to a stream +FXAPI FXStream& operator<<(FXStream& store,const FXMat3d& m); + +/// Load from a stream +FXAPI FXStream& operator>>(FXStream& store,FXMat3d& m); + class FXAPI FXMat3d { protected: FXVec3d m[3]; diff -ur fox1.2-1.2.13.orig/include/FXMat3f.h fox1.2-1.2.13/include/FXMat3f.h --- fox1.2-1.2.13.orig/include/FXMat3f.h 2004-02-08 17:17:33.000000000 +0000 +++ fox1.2-1.2.13/include/FXMat3f.h 2006-03-10 01:04:38.131634188 +0000 @@ -29,6 +29,42 @@ /// Single-precision 3x3 matrix + +class FXMat3f; + +/// Other operators +FXAPI FXMat3f operator+(const FXMat3f& a,const FXMat3f& b); +FXAPI FXMat3f operator-(const FXMat3f& a,const FXMat3f& b); +FXAPI FXMat3f operator-(const FXMat3f& a); +FXAPI FXMat3f operator*(const FXMat3f& a,const FXMat3f& b); +FXAPI FXMat3f operator*(FXfloat x,const FXMat3f& a); +FXAPI FXMat3f operator*(const FXMat3f& a,FXfloat x); +FXAPI FXMat3f operator/(const FXMat3f& a,FXfloat x); +FXAPI FXMat3f operator/(FXfloat x,const FXMat3f& a); + +/// Multiply matrix and vector +FXAPI FXVec3f operator*(const FXVec3f& v,const FXMat3f& m); +FXAPI FXVec3f operator*(const FXMat3f& a,const FXVec3f& v); + +/// Mutiply matrix and vector, for non-projective matrix +FXAPI FXVec2f operator*(const FXVec2f& v,const FXMat3f& m); +FXAPI FXVec2f operator*(const FXMat3f& a,const FXVec2f& v); + +/// Determinant +FXAPI FXfloat det(const FXMat3f& m); + +/// Transpose +FXAPI FXMat3f transpose(const FXMat3f& m); + +/// Invert +FXAPI FXMat3f invert(const FXMat3f& m); + +/// Save to a stream +FXAPI FXStream& operator<<(FXStream& store,const FXMat3f& m); + +/// Load from a stream +FXAPI FXStream& operator>>(FXStream& store,FXMat3f& m); + class FXAPI FXMat3f { protected: FXVec3f m[3]; diff -ur fox1.2-1.2.13.orig/include/FXMat4d.h fox1.2-1.2.13/include/FXMat4d.h --- fox1.2-1.2.13.orig/include/FXMat4d.h 2004-02-08 17:17:33.000000000 +0000 +++ fox1.2-1.2.13/include/FXMat4d.h 2006-03-10 00:52:32.796271887 +0000 @@ -29,6 +29,42 @@ /// Double-precision 4x4 matrix + +class FXMat4d; + +/// Other operators +FXAPI FXMat4d operator+(const FXMat4d& a,const FXMat4d& b); +FXAPI FXMat4d operator-(const FXMat4d& a,const FXMat4d& b); +FXAPI FXMat4d operator-(const FXMat4d& a); +FXAPI FXMat4d operator*(const FXMat4d& a,const FXMat4d& b); +FXAPI FXMat4d operator*(FXdouble x,const FXMat4d& a); +FXAPI FXMat4d operator*(const FXMat4d& a,FXdouble x); +FXAPI FXMat4d operator/(const FXMat4d& a,FXdouble x); +FXAPI FXMat4d operator/(FXdouble x,const FXMat4d& a); + +/// Multiply matrix and vector +FXAPI FXVec4d operator*(const FXVec4d& v,const FXMat4d& m); +FXAPI FXVec4d operator*(const FXMat4d& a,const FXVec4d& v); + +/// Mutiply matrix and vector, for non-projective matrix +FXAPI FXVec3d operator*(const FXVec3d& v,const FXMat4d& m); +FXAPI FXVec3d operator*(const FXMat4d& a,const FXVec3d& v); + +/// Determinant +FXAPI FXdouble det(const FXMat4d& m); + +/// Transpose +FXAPI FXMat4d transpose(const FXMat4d& m); + +/// Invert +FXAPI FXMat4d invert(const FXMat4d& m); + +/// Save to a stream +FXAPI FXStream& operator<<(FXStream& store,const FXMat4d& m); + +/// Load from a stream +FXAPI FXStream& operator>>(FXStream& store,FXMat4d& m); + class FXAPI FXMat4d { protected: FXVec4d m[4]; diff -ur fox1.2-1.2.13.orig/include/FXMat4f.h fox1.2-1.2.13/include/FXMat4f.h --- fox1.2-1.2.13.orig/include/FXMat4f.h 2004-02-08 17:17:33.000000000 +0000 +++ fox1.2-1.2.13/include/FXMat4f.h 2006-03-10 00:56:14.302065666 +0000 @@ -29,6 +29,42 @@ /// Single-precision 4x4 matrix + +class FXMat4f; + +/// Other operators +FXAPI FXMat4f operator+(const FXMat4f& a,const FXMat4f& b); +FXAPI FXMat4f operator-(const FXMat4f& a,const FXMat4f& b); +FXAPI FXMat4f operator-(const FXMat4f& a); +FXAPI FXMat4f operator*(const FXMat4f& a,const FXMat4f& b); +FXAPI FXMat4f operator*(FXfloat x,const FXMat4f& a); +FXAPI FXMat4f operator*(const FXMat4f& a,FXfloat x); +FXAPI FXMat4f operator/(const FXMat4f& a,FXfloat x); +FXAPI FXMat4f operator/(FXfloat x,const FXMat4f& a); + +/// Multiply matrix and vector +FXAPI FXVec4f operator*(const FXVec4f& v,const FXMat4f& m); +FXAPI FXVec4f operator*(const FXMat4f& a,const FXVec4f& v); + +/// Mutiply matrix and vector, for non-projective matrix +FXAPI FXVec3f operator*(const FXVec3f& v,const FXMat4f& m); +FXAPI FXVec3f operator*(const FXMat4f& a,const FXVec3f& v); + +/// Determinant +FXAPI FXfloat det(const FXMat4f& m); + +/// Transpose +FXAPI FXMat4f transpose(const FXMat4f& m); + +/// Invert +FXAPI FXMat4f invert(const FXMat4f& m); + +/// Save to a stream +FXAPI FXStream& operator<<(FXStream& store,const FXMat4f& m); + +/// Load from a stream +FXAPI FXStream& operator>>(FXStream& store,FXMat4f& m); + class FXAPI FXMat4f { protected: FXVec4f m[4]; diff -ur fox1.2-1.2.13.orig/include/FXPoint.h fox1.2-1.2.13/include/FXPoint.h --- fox1.2-1.2.13.orig/include/FXPoint.h 2004-02-08 17:17:34.000000000 +0000 +++ fox1.2-1.2.13/include/FXPoint.h 2006-03-10 00:46:23.623948393 +0000 @@ -28,6 +28,15 @@ namespace FX { /// Point + +class FXPoint; + +/// Save object to a stream +FXAPI FXStream& operator<<(FXStream& store,const FXPoint& p); + +/// Load object from a stream +FXAPI FXStream& operator>>(FXStream& store,FXPoint& p); + class FXAPI FXPoint { public: FXshort x; diff -ur fox1.2-1.2.13.orig/include/FXQuatd.h fox1.2-1.2.13/include/FXQuatd.h --- fox1.2-1.2.13.orig/include/FXQuatd.h 2004-02-27 18:30:06.000000000 +0000 +++ fox1.2-1.2.13/include/FXQuatd.h 2006-03-10 00:51:04.020977182 +0000 @@ -29,6 +29,36 @@ /// double-precision quaternion + +class FXQuatd; + +/// Exponentiate quaternion +FXAPI FXQuatd exp(const FXQuatd& q); + +/// Take logarithm of quaternion +FXAPI FXQuatd log(const FXQuatd& q); + +/// Invert quaternion +FXAPI FXQuatd invert(const FXQuatd& q); + +/// Invert unit quaternion +FXAPI FXQuatd unitinvert(const FXQuatd& q); + +/// Conjugate quaternion +FXAPI FXQuatd conj(const FXQuatd& q); + +/// Multiply quaternions +FXAPI FXQuatd operator*(const FXQuatd& p,const FXQuatd& q); + +// Rotation of a vector by a quaternion +FXAPI FXVec3d operator*(const FXQuatd& quat,const FXVec3d& vec); + +/// Construct quaternion from arc a->b on unit sphere +FXAPI FXQuatd arc(const FXVec3d& a,const FXVec3d& b); + +/// Spherical lerp +FXAPI FXQuatd lerp(const FXQuatd& u,const FXQuatd& v,FXdouble f); + class FXAPI FXQuatd : public FXVec4d { public: diff -ur fox1.2-1.2.13.orig/include/FXQuatf.h fox1.2-1.2.13/include/FXQuatf.h --- fox1.2-1.2.13.orig/include/FXQuatf.h 2004-02-27 18:30:06.000000000 +0000 +++ fox1.2-1.2.13/include/FXQuatf.h 2006-03-10 00:54:14.995796565 +0000 @@ -29,6 +29,36 @@ /// Single-precision quaternion + +class FXQuatf; + +/// Exponentiate quaternion +FXAPI FXQuatf exp(const FXQuatf& q); + +/// Take logarithm of quaternion +FXAPI FXQuatf log(const FXQuatf& q); + +/// Invert quaternion +FXAPI FXQuatf invert(const FXQuatf& q); + +/// Invert unit quaternion +FXAPI FXQuatf unitinvert(const FXQuatf& q); + +/// Conjugate quaternion +FXAPI FXQuatf conj(const FXQuatf& q); + +/// Multiply quaternions +FXAPI FXQuatf operator*(const FXQuatf& p,const FXQuatf& q); + +// Rotation of a vector by a quaternion +FXAPI FXVec3f operator*(const FXQuatf& quat,const FXVec3f& vec); + +/// Construct quaternion from arc a->b on unit sphere +FXAPI FXQuatf arc(const FXVec3f& a,const FXVec3f& b); + +/// Spherical lerp +FXAPI FXQuatf lerp(const FXQuatf& u,const FXQuatf& v,FXfloat f); + class FXAPI FXQuatf : public FXVec4f { public: diff -ur fox1.2-1.2.13.orig/include/FXRanged.h fox1.2-1.2.13/include/FXRanged.h --- fox1.2-1.2.13.orig/include/FXRanged.h 2004-02-29 17:54:17.000000000 +0000 +++ fox1.2-1.2.13/include/FXRanged.h 2006-03-10 00:49:50.525667765 +0000 @@ -32,6 +32,24 @@ /// Bounds + +class FXRanged; + +/// Test if bounds overlap +FXAPI FXbool overlap(const FXRanged& a,const FXRanged& b); + +/// Union of two boxes +FXAPI FXRanged unite(const FXRanged& a,const FXRanged& b); + +/// Intersection of two boxes +FXAPI FXRanged intersect(const FXRanged& a,const FXRanged& b); + +/// Save object to a stream +FXAPI FXStream& operator<<(FXStream& store,const FXRanged& bounds); + +/// Load object from a stream +FXAPI FXStream& operator>>(FXStream& store,FXRanged& bounds); + class FXAPI FXRanged { public: FXVec3d lower; diff -ur fox1.2-1.2.13.orig/include/FXRangef.h fox1.2-1.2.13/include/FXRangef.h --- fox1.2-1.2.13.orig/include/FXRangef.h 2004-02-29 17:54:17.000000000 +0000 +++ fox1.2-1.2.13/include/FXRangef.h 2006-03-10 00:53:08.458569703 +0000 @@ -32,6 +32,24 @@ /// Bounds + +class FXRangef; + +/// Test if boxes a and b overlap +FXAPI FXbool overlap(const FXRangef& a,const FXRangef& b); + +/// Union of two boxes +FXAPI FXRangef unite(const FXRangef& a,const FXRangef& b); + +/// Intersection of two boxes +FXAPI FXRangef intersect(const FXRangef& a,const FXRangef& b); + +/// Save object to a stream +FXAPI FXStream& operator<<(FXStream& store,const FXRangef& bounds); + +/// Load object from a stream +FXAPI FXStream& operator>>(FXStream& store,FXRangef& bounds); + class FXAPI FXRangef { public: FXVec3f lower; diff -ur fox1.2-1.2.13.orig/include/FXRectangle.h fox1.2-1.2.13/include/FXRectangle.h --- fox1.2-1.2.13.orig/include/FXRectangle.h 2004-02-11 20:33:36.000000000 +0000 +++ fox1.2-1.2.13/include/FXRectangle.h 2006-03-10 00:59:02.699861899 +0000 @@ -28,6 +28,18 @@ namespace FX { /// Rectangle + +class FXRectangle; + +/// Rectangles overlap +FXAPI FXbool overlap(const FXRectangle& a,const FXRectangle& b); + +/// Save object to a stream +FXAPI FXStream& operator<<(FXStream& store,const FXRectangle& r); + +/// Load object from a stream +FXAPI FXStream& operator>>(FXStream& store,FXRectangle& r); + class FXAPI FXRectangle { public: FXshort x; diff -ur fox1.2-1.2.13.orig/include/FXRegion.h fox1.2-1.2.13/include/FXRegion.h --- fox1.2-1.2.13.orig/include/FXRegion.h 2004-02-11 20:33:36.000000000 +0000 +++ fox1.2-1.2.13/include/FXRegion.h 2006-03-10 01:00:28.133597198 +0000 @@ -27,6 +27,27 @@ namespace FX { /// Region + +class FXRegion; + +/// Union of region r1 and region r2 +FXAPI FXRegion operator+(const FXRegion& r1,const FXRegion& r2); + +/// Intersection of region r1 and region r2 +FXAPI FXRegion operator*(const FXRegion& r1,const FXRegion& r2); + +/// Substract region r2 from region r1 +FXAPI FXRegion operator-(const FXRegion& r1,const FXRegion& r2); + +/// Xor of region r1 and region r2 +FXAPI FXRegion operator^(const FXRegion& r1,const FXRegion& r2); + +/// Return TRUE if region equal to this one +FXAPI FXbool operator==(const FXRegion& r1,const FXRegion& r2); + +/// Return TRUE if region not equal to this one +FXAPI FXbool operator!=(const FXRegion& r1,const FXRegion& r2); + class FXAPI FXRegion { friend class FXDC; friend class FXDCWindow; diff -ur fox1.2-1.2.13.orig/include/FXRex.h fox1.2-1.2.13/include/FXRex.h --- fox1.2-1.2.13.orig/include/FXRex.h 2004-02-08 17:17:34.000000000 +0000 +++ fox1.2-1.2.13/include/FXRex.h 2006-03-10 00:53:42.405093749 +0000 @@ -96,6 +96,17 @@ * or line end. The flag REX_NOT_EMPTY causes a match to fail if * the empty string was matched. */ + +class FXRex; + +/// Comparison operators +FXAPI FXbool operator==(const FXRex &r1,const FXRex &r2); +FXAPI FXbool operator!=(const FXRex &r1,const FXRex &r2); + +/// Saving and loading +FXAPI FXStream& operator<<(FXStream& store,const FXRex& s); +FXAPI FXStream& operator>>(FXStream& store,FXRex& s); + class FXAPI FXRex { private: FXint *code; diff -ur fox1.2-1.2.13.orig/include/FXSize.h fox1.2-1.2.13/include/FXSize.h --- fox1.2-1.2.13.orig/include/FXSize.h 2004-02-08 17:17:34.000000000 +0000 +++ fox1.2-1.2.13/include/FXSize.h 2006-03-10 00:42:11.995126427 +0000 @@ -28,6 +28,14 @@ namespace FX { /// Size +class FXSize; + +/// Save object to a stream +FXAPI FXStream& operator<<(FXStream& store,const FXSize& s); + +/// Load object from a stream +FXAPI FXStream& operator>>(FXStream& store,FXSize& s); + class FXAPI FXSize { public: FXshort w; diff -ur fox1.2-1.2.13.orig/include/FXSphered.h fox1.2-1.2.13/include/FXSphered.h --- fox1.2-1.2.13.orig/include/FXSphered.h 2004-03-21 19:07:57.000000000 +0000 +++ fox1.2-1.2.13/include/FXSphered.h 2006-03-10 00:50:26.049983775 +0000 @@ -32,6 +32,24 @@ // Spherical bounds + +class FXSphered; + +/// Test if box overlaps with sphere +FXAPI FXbool overlap(const FXRanged& a,const FXSphered& b); + +/// Test if sphere overlaps with box +FXAPI FXbool overlap(const FXSphered& a,const FXRanged& b); + +/// Test if spheres overlap +FXAPI FXbool overlap(const FXSphered& a,const FXSphered& b); + +/// Save object to a stream +FXAPI FXStream& operator<<(FXStream& store,const FXSphered& sphere); + +/// Load object from a stream +FXAPI FXStream& operator>>(FXStream& store,FXSphered& sphere); + class FXAPI FXSphered { public: FXVec3d center; diff -ur fox1.2-1.2.13.orig/include/FXSpheref.h fox1.2-1.2.13/include/FXSpheref.h --- fox1.2-1.2.13.orig/include/FXSpheref.h 2004-03-21 19:07:57.000000000 +0000 +++ fox1.2-1.2.13/include/FXSpheref.h 2006-03-10 00:51:38.656410394 +0000 @@ -32,6 +32,24 @@ // Spherical bounds + +class FXSpheref; + +/// Test if box overlaps with sphere +FXAPI FXbool overlap(const FXRangef& a,const FXSpheref& b); + +/// Test if sphere overlaps with box +FXAPI FXbool overlap(const FXSpheref& a,const FXRangef& b); + +/// Test if spheres overlap +FXAPI FXbool overlap(const FXSpheref& a,const FXSpheref& b); + +/// Save object to a stream +FXAPI FXStream& operator<<(FXStream& store,const FXSpheref& sphere); + +/// Load object from a stream +FXAPI FXStream& operator>>(FXStream& store,FXSpheref& sphere); + class FXAPI FXSpheref { public: FXVec3f center; diff -ur fox1.2-1.2.13.orig/include/FXString.h fox1.2-1.2.13/include/FXString.h --- fox1.2-1.2.13.orig/include/FXString.h 2004-08-28 02:10:02.000000000 +0100 +++ fox1.2-1.2.13/include/FXString.h 2006-03-10 00:41:13.793800451 +0000 @@ -30,6 +30,108 @@ /** * FXString provides essential string manipulation capabilities. */ +class FXString; + +/// Compare +FXAPI FXint compare(const FXchar* s1,const FXchar* s2); +FXAPI FXint compare(const FXchar* s1,const FXString& s2); +FXAPI FXint compare(const FXString& s1,const FXchar* s2); +FXAPI FXint compare(const FXString& s1,const FXString& s2); + +/// Compare up to n +FXAPI FXint compare(const FXchar* s1,const FXchar* s2,FXint n); +FXAPI FXint compare(const FXchar* s1,const FXString& s2,FXint n); +FXAPI FXint compare(const FXString& s1,const FXchar* s2,FXint n); +FXAPI FXint compare(const FXString& s1,const FXString& s2,FXint n); + +/// Compare case insensitive +FXAPI FXint comparecase(const FXchar* s1,const FXchar* s2); +FXAPI FXint comparecase(const FXchar* s1,const FXString& s2); +FXAPI FXint comparecase(const FXString& s1,const FXchar* s2); +FXAPI FXint comparecase(const FXString& s1,const FXString& s2); + +/// Compare case insensitive up to n +FXAPI FXint comparecase(const FXchar* s1,const FXchar* s2,FXint n); +FXAPI FXint comparecase(const FXchar* s1,const FXString& s2,FXint n); +FXAPI FXint comparecase(const FXString& s1,const FXchar* s2,FXint n); +FXAPI FXint comparecase(const FXString& s1,const FXString& s2,FXint n); + +/// Comparison operators +FXAPI FXbool operator==(const FXString& s1,const FXString& s2); +FXAPI FXbool operator==(const FXString& s1,const FXchar* s2); +FXAPI FXbool operator==(const FXchar* s1,const FXString& s2); + +FXAPI FXbool operator!=(const FXString& s1,const FXString& s2); +FXAPI FXbool operator!=(const FXString& s1,const FXchar* s2); +FXAPI FXbool operator!=(const FXchar* s1,const FXString& s2); + +FXAPI FXbool operator<(const FXString& s1,const FXString& s2); +FXAPI FXbool operator<(const FXString& s1,const FXchar* s2); +FXAPI FXbool operator<(const FXchar* s1,const FXString& s2); + +FXAPI FXbool operator<=(const FXString& s1,const FXString& s2); +FXAPI FXbool operator<=(const FXString& s1,const FXchar* s2); +FXAPI FXbool operator<=(const FXchar* s1,const FXString& s2); + +FXAPI FXbool operator>(const FXString& s1,const FXString& s2); +FXAPI FXbool operator>(const FXString& s1,const FXchar* s2); +FXAPI FXbool operator>(const FXchar* s1,const FXString& s2); + +FXAPI FXbool operator>=(const FXString& s1,const FXString& s2); +FXAPI FXbool operator>=(const FXString& s1,const FXchar* s2); +FXAPI FXbool operator>=(const FXchar* s1,const FXString& s2); + +/// Concatenate two strings +FXAPI FXString operator+(const FXString& s1,const FXString& s2); +FXAPI FXString operator+(const FXString& s1,const FXchar* s2); +FXAPI FXString operator+(const FXchar* s1,const FXString& s2); + +/// Concatenate with single character +FXAPI FXString operator+(const FXString& s,FXchar c); +FXAPI FXString operator+(FXchar c,const FXString& s); + +/// Saving to a stream +FXAPI FXStream& operator<<(FXStream& store,const FXString& s); + +/// Load from a stream +FXAPI FXStream& operator>>(FXStream& store,FXString& s); + +/// Format a string a-la printf +FXAPI FXString FXStringFormat(const FXchar* fmt,...) FX_PRINTF(1,2) ; +FXAPI FXString FXStringVFormat(const FXchar* fmt,va_list args); + +/** +* Convert integer number to a string, using the given number +* base, which must be between 2 and 16. +*/ +FXAPI FXString FXStringVal(FXint num,FXint base=10); +FXAPI FXString FXStringVal(FXuint num,FXint base=10); + +/** +* Convert real number to a string, using the given procision and +* exponential notation mode, which may be FALSE (never), TRUE (always), or +* MAYBE (when needed). +*/ +FXAPI FXString FXStringVal(FXfloat num,FXint prec=6,FXbool exp=MAYBE); +FXAPI FXString FXStringVal(FXdouble num,FXint prec=6,FXbool exp=MAYBE); + +/// Convert string to a integer number, assuming given number base +FXAPI FXint FXIntVal(const FXString& s,FXint base); +FXAPI FXuint FXUIntVal(const FXString& s,FXint base); + +/// Convert string into real number +FXAPI FXfloat FXFloatVal(const FXString& s); +FXAPI FXdouble FXDoubleVal(const FXString& s); + +/// Escape special characters in a string +FXAPI FXString escape(const FXString& s); + +/// Unescape special characters in a string +FXAPI FXString unescape(const FXString& s); + +/// Swap two strings +FXAPI void swap(FXString& a,FXString& b); + class FXAPI FXString { private: FXchar* str; @@ -359,25 +461,21 @@ FXuint hash() const; /// Compare - friend FXAPI FXint compare(const FXchar* s1,const FXchar* s2); friend FXAPI FXint compare(const FXchar* s1,const FXString& s2); friend FXAPI FXint compare(const FXString& s1,const FXchar* s2); friend FXAPI FXint compare(const FXString& s1,const FXString& s2); /// Compare up to n - friend FXAPI FXint compare(const FXchar* s1,const FXchar* s2,FXint n); friend FXAPI FXint compare(const FXchar* s1,const FXString& s2,FXint n); friend FXAPI FXint compare(const FXString& s1,const FXchar* s2,FXint n); friend FXAPI FXint compare(const FXString& s1,const FXString& s2,FXint n); /// Compare case insensitive - friend FXAPI FXint comparecase(const FXchar* s1,const FXchar* s2); friend FXAPI FXint comparecase(const FXchar* s1,const FXString& s2); friend FXAPI FXint comparecase(const FXString& s1,const FXchar* s2); friend FXAPI FXint comparecase(const FXString& s1,const FXString& s2); /// Compare case insensitive up to n - friend FXAPI FXint comparecase(const FXchar* s1,const FXchar* s2,FXint n); friend FXAPI FXint comparecase(const FXchar* s1,const FXString& s2,FXint n); friend FXAPI FXint comparecase(const FXString& s1,const FXchar* s2,FXint n); friend FXAPI FXint comparecase(const FXString& s1,const FXString& s2,FXint n); @@ -431,21 +529,6 @@ friend FXAPI FXString FXStringFormat(const FXchar* fmt,...) FX_PRINTF(1,2) ; friend FXAPI FXString FXStringVFormat(const FXchar* fmt,va_list args); - /** - * Convert integer number to a string, using the given number - * base, which must be between 2 and 16. - */ - friend FXAPI FXString FXStringVal(FXint num,FXint base=10); - friend FXAPI FXString FXStringVal(FXuint num,FXint base=10); - - /** - * Convert real number to a string, using the given procision and - * exponential notation mode, which may be FALSE (never), TRUE (always), or - * MAYBE (when needed). - */ - friend FXAPI FXString FXStringVal(FXfloat num,FXint prec=6,FXbool exp=MAYBE); - friend FXAPI FXString FXStringVal(FXdouble num,FXint prec=6,FXbool exp=MAYBE); - /// Convert string to a integer number, assuming given number base friend FXAPI FXint FXIntVal(const FXString& s,FXint base=10); friend FXAPI FXuint FXUIntVal(const FXString& s,FXint base=10); @@ -454,12 +537,6 @@ friend FXAPI FXfloat FXFloatVal(const FXString& s); friend FXAPI FXdouble FXDoubleVal(const FXString& s); - /// Escape special characters in a string - friend FXAPI FXString escape(const FXString& s); - - /// Unescape special characters in a string - friend FXAPI FXString unescape(const FXString& s); - /// Swap two strings friend FXAPI void swap(FXString& a,FXString& b){ FXchar *t=a.str; a.str=b.str; b.str=t; } diff -ur fox1.2-1.2.13.orig/include/FXVec2d.h fox1.2-1.2.13/include/FXVec2d.h --- fox1.2-1.2.13.orig/include/FXVec2d.h 2004-02-13 22:48:37.000000000 +0000 +++ fox1.2-1.2.13/include/FXVec2d.h 2006-03-10 00:55:10.350497877 +0000 @@ -29,6 +29,26 @@ /// Double-precision 2-element vector + +class FXVec2d; + +/// Length and square of length +FXAPI FXdouble len2(const FXVec2d& a); +FXAPI FXdouble len(const FXVec2d& a); + +/// Normalize vector +FXAPI FXVec2d normalize(const FXVec2d& a); + +/// Lowest or highest components +FXAPI FXVec2d lo(const FXVec2d& a,const FXVec2d& b); +FXAPI FXVec2d hi(const FXVec2d& a,const FXVec2d& b); + +/// Save vector to a stream +FXAPI FXStream& operator<<(FXStream& store,const FXVec2d& v); + +/// Load vector from a stream +FXAPI FXStream& operator>>(FXStream& store,FXVec2d& v); + class FXAPI FXVec2d { public: FXdouble x; diff -ur fox1.2-1.2.13.orig/include/FXVec2f.h fox1.2-1.2.13/include/FXVec2f.h --- fox1.2-1.2.13.orig/include/FXVec2f.h 2004-02-13 22:48:37.000000000 +0000 +++ fox1.2-1.2.13/include/FXVec2f.h 2006-03-10 00:58:11.589600944 +0000 @@ -29,6 +29,26 @@ /// Single-precision 2-element vector + +class FXVec2f; + +/// Length and square of length +FXAPI FXfloat len2(const FXVec2f& a); +FXAPI FXfloat len(const FXVec2f& a); + +/// Normalize vector +FXAPI FXVec2f normalize(const FXVec2f& a); + +/// Lowest or highest components +FXAPI FXVec2f lo(const FXVec2f& a,const FXVec2f& b); +FXAPI FXVec2f hi(const FXVec2f& a,const FXVec2f& b); + +/// Save vector to a stream +FXAPI FXStream& operator<<(FXStream& store,const FXVec2f& v); + +/// Load vector from a stream +FXAPI FXStream& operator>>(FXStream& store,FXVec2f& v); + class FXAPI FXVec2f { public: FXfloat x; diff -ur fox1.2-1.2.13.orig/include/FXVec3d.h fox1.2-1.2.13/include/FXVec3d.h --- fox1.2-1.2.13.orig/include/FXVec3d.h 2004-02-13 22:48:37.000000000 +0000 +++ fox1.2-1.2.13/include/FXVec3d.h 2006-03-10 00:57:09.046847398 +0000 @@ -29,6 +29,26 @@ /// Double-precision 3-element vector + +class FXVec3d; + +/// Length and square of length +FXAPI FXdouble len2(const FXVec3d& a); +FXAPI FXdouble len(const FXVec3d& a); + +/// Normalize vector +FXAPI FXVec3d normalize(const FXVec3d& a); + +/// Lowest or highest components +FXAPI FXVec3d lo(const FXVec3d& a,const FXVec3d& b); +FXAPI FXVec3d hi(const FXVec3d& a,const FXVec3d& b); + +/// Save vector to a stream +FXAPI FXStream& operator<<(FXStream& store,const FXVec3d& v); + +/// Load vector from a stream +FXAPI FXStream& operator>>(FXStream& store,FXVec3d& v); + class FXAPI FXVec3d { public: FXdouble x; diff -ur fox1.2-1.2.13.orig/include/FXVec3f.h fox1.2-1.2.13/include/FXVec3f.h --- fox1.2-1.2.13.orig/include/FXVec3f.h 2004-05-13 23:36:05.000000000 +0100 +++ fox1.2-1.2.13/include/FXVec3f.h 2006-03-10 00:44:21.585039599 +0000 @@ -29,6 +29,26 @@ /// Single-precision 3-element vector + +class FXVec3f; + +/// Length and square of length +FXAPI FXfloat len2(const FXVec3f& a); +FXAPI FXfloat len(const FXVec3f& a); + +/// Normalize vector +FXAPI FXVec3f normalize(const FXVec3f& a); + +/// Lowest or highest components +FXAPI FXVec3f lo(const FXVec3f& a,const FXVec3f& b); +FXAPI FXVec3f hi(const FXVec3f& a,const FXVec3f& b); + +/// Save vector to a stream +FXAPI FXStream& operator<<(FXStream& store,const FXVec3f& v); + +/// Load vector from a stream +FXAPI FXStream& operator>>(FXStream& store,FXVec3f& v); + class FXAPI FXVec3f { public: FXfloat x; diff -ur fox1.2-1.2.13.orig/include/FXVec4d.h fox1.2-1.2.13/include/FXVec4d.h --- fox1.2-1.2.13.orig/include/FXVec4d.h 2004-06-04 05:32:23.000000000 +0100 +++ fox1.2-1.2.13/include/FXVec4d.h 2006-03-10 00:45:40.856587401 +0000 @@ -29,6 +29,26 @@ /// Double-precision 4-element vector + +class FXVec4d; + +/// Length and square of length +FXAPI FXdouble len2(const FXVec4d& a); +FXAPI FXdouble len(const FXVec4d& a); + +/// Normalize vector +FXAPI FXVec4d normalize(const FXVec4d& a); + +/// Lowest or highest components +FXAPI FXVec4d lo(const FXVec4d& a,const FXVec4d& b); +FXAPI FXVec4d hi(const FXVec4d& a,const FXVec4d& b); + +/// Save to a stream +FXAPI FXStream& operator<<(FXStream& store,const FXVec4d& v); + +/// Load from a stream +FXAPI FXStream& operator>>(FXStream& store,FXVec4d& v); + class FXAPI FXVec4d { public: FXdouble x; diff -ur fox1.2-1.2.13.orig/include/FXVec4f.h fox1.2-1.2.13/include/FXVec4f.h --- fox1.2-1.2.13.orig/include/FXVec4f.h 2004-06-04 05:32:23.000000000 +0100 +++ fox1.2-1.2.13/include/FXVec4f.h 2006-03-10 01:02:29.506593795 +0000 @@ -29,6 +29,26 @@ /// Single-precision 4-element vector + +class FXVec4f; + +/// Length and square of length +FXAPI FXfloat len2(const FXVec4f& a); +FXAPI FXfloat len(const FXVec4f& a); + +/// Normalize vector +FXAPI FXVec4f normalize(const FXVec4f& a); + +/// Lowest or highest components +FXAPI FXVec4f lo(const FXVec4f& a,const FXVec4f& b); +FXAPI FXVec4f hi(const FXVec4f& a,const FXVec4f& b); + +/// Save to a stream +FXAPI FXStream& operator<<(FXStream& store,const FXVec4f& v); + +/// Load from a stream +FXAPI FXStream& operator>>(FXStream& store,FXVec4f& v); + class FXAPI FXVec4f { public: FXfloat x; diff -ur fox1.2-1.2.13.orig/include/FXWString.h fox1.2-1.2.13/include/FXWString.h --- fox1.2-1.2.13.orig/include/FXWString.h 2004-02-08 17:17:34.000000000 +0000 +++ fox1.2-1.2.13/include/FXWString.h 2006-03-10 00:41:09.187407818 +0000 @@ -34,6 +34,75 @@ /** * FXWString provides a "wide" string class suitable for storing Unicode strings. */ +class FXWString; + +/// Compare +FXAPI FXint compare(const FXwchar *s1,const FXwchar *s2); +FXAPI FXint compare(const FXwchar *s1,const FXWString &s2); +FXAPI FXint compare(const FXWString &s1,const FXwchar *s2); +FXAPI FXint compare(const FXWString &s1,const FXWString &s2); + +/// Compare up to n +FXAPI FXint compare(const FXwchar *s1,const FXwchar *s2,FXint n); +FXAPI FXint compare(const FXwchar *s1,const FXWString &s2,FXint n); +FXAPI FXint compare(const FXWString &s1,const FXwchar *s2,FXint n); +FXAPI FXint compare(const FXWString &s1,const FXWString &s2,FXint n); + +/// Compare case insensitive +FXAPI FXint comparecase(const FXwchar *s1,const FXwchar *s2); +FXAPI FXint comparecase(const FXwchar *s1,const FXWString &s2); +FXAPI FXint comparecase(const FXWString &s1,const FXwchar *s2); +FXAPI FXint comparecase(const FXWString &s1,const FXWString &s2); + +/// Compare case insensitive up to n +FXAPI FXint comparecase(const FXwchar *s1,const FXwchar *s2,FXint n); +FXAPI FXint comparecase(const FXwchar *s1,const FXWString &s2,FXint n); +FXAPI FXint comparecase(const FXWString &s1,const FXwchar *s2,FXint n); +FXAPI FXint comparecase(const FXWString &s1,const FXWString &s2,FXint n); + +/// Comparison operators +FXAPI FXbool operator==(const FXWString &s1,const FXWString &s2); +FXAPI FXbool operator==(const FXWString &s1,const FXwchar *s2); +FXAPI FXbool operator==(const FXwchar *s1,const FXWString &s2); + +FXAPI FXbool operator!=(const FXWString &s1,const FXWString &s2); +FXAPI FXbool operator!=(const FXWString &s1,const FXwchar *s2); +FXAPI FXbool operator!=(const FXwchar *s1,const FXWString &s2); + +FXAPI FXbool operator<(const FXWString &s1,const FXWString &s2); +FXAPI FXbool operator<(const FXWString &s1,const FXwchar *s2); +FXAPI FXbool operator<(const FXwchar *s1,const FXWString &s2); + +FXAPI FXbool operator<=(const FXWString &s1,const FXWString &s2); +FXAPI FXbool operator<=(const FXWString &s1,const FXwchar *s2); +FXAPI FXbool operator<=(const FXwchar *s1,const FXWString &s2); + +FXAPI FXbool operator>(const FXWString &s1,const FXWString &s2); +FXAPI FXbool operator>(const FXWString &s1,const FXwchar *s2); +FXAPI FXbool operator>(const FXwchar *s1,const FXWString &s2); + +FXAPI FXbool operator>=(const FXWString &s1,const FXWString &s2); +FXAPI FXbool operator>=(const FXWString &s1,const FXwchar *s2); +FXAPI FXbool operator>=(const FXwchar *s1,const FXWString &s2); + +/// Concatenate two strings +FXAPI FXWString operator+(const FXWString& s1,const FXWString& s2); +FXAPI FXWString operator+(const FXWString& s1,const FXwchar* s2); +FXAPI FXWString operator+(const FXwchar* s1,const FXWString& s2); + +/// Concatenate with single character +FXAPI FXWString operator+(const FXWString& s,FXwchar c); +FXAPI FXWString operator+(FXwchar c,const FXWString& s); + +/// Saving to a stream +FXAPI FXStream& operator<<(FXStream& store,const FXWString& s); + +/// Load from a stream +FXAPI FXStream& operator>>(FXStream& store,FXWString& s); + +/// Swap two strings +FXAPI void swap(FXWString& a,FXWString& b); + class FXAPI FXWString { private: FXwchar* str; @@ -363,25 +432,21 @@ FXuint hash() const; /// Compare - friend FXAPI FXint compare(const FXwchar *s1,const FXwchar *s2); friend FXAPI FXint compare(const FXwchar *s1,const FXWString &s2); friend FXAPI FXint compare(const FXWString &s1,const FXwchar *s2); friend FXAPI FXint compare(const FXWString &s1,const FXWString &s2); /// Compare up to n - friend FXAPI FXint compare(const FXwchar *s1,const FXwchar *s2,FXint n); friend FXAPI FXint compare(const FXwchar *s1,const FXWString &s2,FXint n); friend FXAPI FXint compare(const FXWString &s1,const FXwchar *s2,FXint n); friend FXAPI FXint compare(const FXWString &s1,const FXWString &s2,FXint n); /// Compare case insensitive - friend FXAPI FXint comparecase(const FXwchar *s1,const FXwchar *s2); friend FXAPI FXint comparecase(const FXwchar *s1,const FXWString &s2); friend FXAPI FXint comparecase(const FXWString &s1,const FXwchar *s2); friend FXAPI FXint comparecase(const FXWString &s1,const FXWString &s2); /// Compare case insensitive up to n - friend FXAPI FXint comparecase(const FXwchar *s1,const FXwchar *s2,FXint n); friend FXAPI FXint comparecase(const FXwchar *s1,const FXWString &s2,FXint n); friend FXAPI FXint comparecase(const FXWString &s1,const FXwchar *s2,FXint n); friend FXAPI FXint comparecase(const FXWString &s1,const FXWString &s2,FXint n);
signature.asc
Description: This is a digitally signed message part