[pygccxml-commit] SF.net SVN: pygccxml:[1692] pyplusplus_dev
Brought to you by:
mbaas,
roman_yakovenko
|
From: <rom...@us...> - 2009-02-18 21:17:58
|
Revision: 1692
http://pygccxml.svn.sourceforge.net/pygccxml/?rev=1692&view=rev
Author: roman_yakovenko
Date: 2009-02-18 21:17:50 +0000 (Wed, 18 Feb 2009)
Log Message:
-----------
fix "operator"s bug
Modified Paths:
--------------
pyplusplus_dev/pyplusplus/decl_wrappers/calldef_wrapper.py
pyplusplus_dev/unittests/data/vector3_to_be_exported.hpp
pyplusplus_dev/unittests/vector3_tester.py
Modified: pyplusplus_dev/pyplusplus/decl_wrappers/calldef_wrapper.py
===================================================================
--- pyplusplus_dev/pyplusplus/decl_wrappers/calldef_wrapper.py 2009-02-18 14:18:58 UTC (rev 1691)
+++ pyplusplus_dev/pyplusplus/decl_wrappers/calldef_wrapper.py 2009-02-18 21:17:50 UTC (rev 1692)
@@ -425,7 +425,11 @@
arg_2_class = find_class( oper.arguments[1].type )
if arg_1_class:
- return arg_1_class
+ if declarations.is_std_ostream( arg_1_class ) or declarations.is_std_wostream( arg_1_class ):
+ #in most cases users doesn't expose std::ostream class
+ return arg_2_class
+ else:
+ return arg_1_class
else:
return arg_2_class
Modified: pyplusplus_dev/unittests/data/vector3_to_be_exported.hpp
===================================================================
--- pyplusplus_dev/unittests/data/vector3_to_be_exported.hpp 2009-02-18 14:18:58 UTC (rev 1691)
+++ pyplusplus_dev/unittests/data/vector3_to_be_exported.hpp 2009-02-18 21:17:50 UTC (rev 1692)
@@ -1,316 +1,317 @@
-// Copyright 2004-2008 Roman Yakovenko.
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-#ifndef __vector3_to_be_exported_hpp__
-#define __vector3_to_be_exported_hpp__
-
-#include <iostream>
-
-namespace vector3{
-
-class Vector3
-{
-public:
- union {
- struct {
- float x, y, z;
- };
- float val[3];
- };
-
-public:
- inline Vector3()
- {
- }
-
- inline Vector3( const float fX, const float fY, const float fZ )
- : x( fX ), y( fY ), z( fZ )
- {
- }
-
- inline explicit Vector3( const float afCoordinate[3] )
- : x( afCoordinate[0] ),
- y( afCoordinate[1] ),
- z( afCoordinate[2] )
- {
- }
-
- inline explicit Vector3( const int afCoordinate[3] )
- {
- x = (float)afCoordinate[0];
- y = (float)afCoordinate[1];
- z = (float)afCoordinate[2];
- }
-
- inline explicit Vector3( float* const r )
- : x( r[0] ), y( r[1] ), z( r[2] )
- {
- }
-
- inline explicit Vector3( const float scaler )
- : x( scaler )
- , y( scaler )
- , z( scaler )
- {
- }
-
-
- inline Vector3( const Vector3& rkVector )
- : x( rkVector.x ), y( rkVector.y ), z( rkVector.z )
- {
- }
-
- friend
- std::ostream& operator<<(std::ostream& out, const Vector3& v ){
- out << "( " << v.x << "," << v.y << "," << v.z << ")";
- }
-
- inline float operator [] ( const unsigned int i ) const
- {
- return *(&x+i);
- }
-
- inline float& operator [] ( const unsigned int i )
- {
- return *(&x+i);
- }
-
- /** Assigns the value of the other vector.
- @param
- rkVector The other vector
- */
- inline Vector3& operator = ( const Vector3& rkVector )
- {
- x = rkVector.x;
- y = rkVector.y;
- z = rkVector.z;
-
- return *this;
- }
-
- inline Vector3& operator = ( const float fScaler )
- {
- x = fScaler;
- y = fScaler;
- z = fScaler;
-
- return *this;
- }
-
- inline bool operator == ( const Vector3& rkVector ) const
- {
- return ( x == rkVector.x && y == rkVector.y && z == rkVector.z );
- }
-
- inline bool operator != ( const Vector3& rkVector ) const
- {
- return ( x != rkVector.x || y != rkVector.y || z != rkVector.z );
- }
-
- // arithmetic operations
- inline Vector3 operator + ( const Vector3& rkVector ) const
- {
- Vector3 kSum;
-
- kSum.x = x + rkVector.x;
- kSum.y = y + rkVector.y;
- kSum.z = z + rkVector.z;
-
- return kSum;
- }
-
- inline Vector3 operator - ( const Vector3& rkVector ) const
- {
- Vector3 kDiff;
-
- kDiff.x = x - rkVector.x;
- kDiff.y = y - rkVector.y;
- kDiff.z = z - rkVector.z;
-
- return kDiff;
- }
-
- inline Vector3 operator * ( const float fScalar ) const
- {
- Vector3 kProd;
-
- kProd.x = fScalar*x;
- kProd.y = fScalar*y;
- kProd.z = fScalar*z;
-
- return kProd;
- }
-
- inline Vector3 operator * ( const Vector3& rhs) const
- {
- Vector3 kProd;
-
- kProd.x = rhs.x * x;
- kProd.y = rhs.y * y;
- kProd.z = rhs.z * z;
-
- return kProd;
- }
-
- inline Vector3 operator / ( const float fScalar ) const
- {
- Vector3 kDiv;
-
- float fInv = 1.0 / fScalar;
- kDiv.x = x * fInv;
- kDiv.y = y * fInv;
- kDiv.z = z * fInv;
-
- return kDiv;
- }
-
- inline Vector3 operator / ( const Vector3& rhs) const
- {
- Vector3 kDiv;
-
- kDiv.x = x / rhs.x;
- kDiv.y = y / rhs.y;
- kDiv.z = z / rhs.z;
-
- return kDiv;
- }
-
-
- inline Vector3 operator - () const
- {
- Vector3 kNeg;
-
- kNeg.x = -x;
- kNeg.y = -y;
- kNeg.z = -z;
-
- return kNeg;
- }
-
- // overloaded operators to help Vector3
- inline friend Vector3 operator * ( const float fScalar, const Vector3& rkVector )
- {
- Vector3 kProd;
-
- kProd.x = fScalar * rkVector.x;
- kProd.y = fScalar * rkVector.y;
- kProd.z = fScalar * rkVector.z;
-
- return kProd;
- }
-
- inline friend Vector3 operator + (const Vector3& lhs, const float rhs)
- {
- Vector3 ret(rhs);
- return ret += lhs;
- }
-
- inline friend Vector3 operator + (const float lhs, const Vector3& rhs)
- {
- Vector3 ret(lhs);
- return ret += rhs;
- }
-
- inline friend Vector3 operator - (const Vector3& lhs, const float rhs)
- {
- return lhs - Vector3(rhs);
- }
-
- inline friend Vector3 operator - (const float lhs, const Vector3& rhs)
- {
- Vector3 ret(lhs);
- return ret -= rhs;
- }
-
- // arithmetic updates
- inline Vector3& operator += ( const Vector3& rkVector )
- {
- x += rkVector.x;
- y += rkVector.y;
- z += rkVector.z;
-
- return *this;
- }
-
- inline Vector3& operator += ( const float fScalar )
- {
- x += fScalar;
- y += fScalar;
- z += fScalar;
- return *this;
- }
-
- inline Vector3& operator -= ( const Vector3& rkVector )
- {
- x -= rkVector.x;
- y -= rkVector.y;
- z -= rkVector.z;
-
- return *this;
- }
-
- inline Vector3& operator -= ( const float fScalar )
- {
- x -= fScalar;
- y -= fScalar;
- z -= fScalar;
- return *this;
- }
-
- inline Vector3& operator *= ( const float fScalar )
- {
- x *= fScalar;
- y *= fScalar;
- z *= fScalar;
- return *this;
- }
-
- inline Vector3& operator *= ( const Vector3& rkVector )
- {
- x *= rkVector.x;
- y *= rkVector.y;
- z *= rkVector.z;
-
- return *this;
- }
-
- inline Vector3& operator /= ( const float fScalar )
- {
- float fInv = 1.0 / fScalar;
-
- x *= fInv;
- y *= fInv;
- z *= fInv;
-
- return *this;
- }
-
- inline Vector3& operator /= ( const Vector3& rkVector )
- {
- x /= rkVector.x;
- y /= rkVector.y;
- z /= rkVector.z;
-
- return *this;
- }
-
- inline float squaredLength () const
- {
- return x * x + y * y + z * z;
- }
-
+// Copyright 2004-2008 Roman Yakovenko.
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef __vector3_to_be_exported_hpp__
+#define __vector3_to_be_exported_hpp__
+
+#include <iostream>
+
+namespace vector3{
+
+class Vector3
+{
+public:
+ union {
+ struct {
+ float x, y, z;
+ };
+ float val[3];
+ };
+
+public:
+ inline Vector3()
+ {
+ }
+
+ inline Vector3( const float fX, const float fY, const float fZ )
+ : x( fX ), y( fY ), z( fZ )
+ {
+ }
+
+ inline explicit Vector3( const float afCoordinate[3] )
+ : x( afCoordinate[0] ),
+ y( afCoordinate[1] ),
+ z( afCoordinate[2] )
+ {
+ }
+
+ inline explicit Vector3( const int afCoordinate[3] )
+ {
+ x = (float)afCoordinate[0];
+ y = (float)afCoordinate[1];
+ z = (float)afCoordinate[2];
+ }
+
+ inline explicit Vector3( float* const r )
+ : x( r[0] ), y( r[1] ), z( r[2] )
+ {
+ }
+
+ inline explicit Vector3( const float scaler )
+ : x( scaler )
+ , y( scaler )
+ , z( scaler )
+ {
+ }
+
+
+ inline Vector3( const Vector3& rkVector )
+ : x( rkVector.x ), y( rkVector.y ), z( rkVector.z )
+ {
+ }
+
+ friend
+ std::ostream& operator<<(std::ostream& out, const Vector3& v ){
+ out << "( " << v.x << "," << v.y << "," << v.z << " )";
+ return out;
+ }
+
+ inline float operator [] ( const unsigned int i ) const
+ {
+ return *(&x+i);
+ }
+
+ inline float& operator [] ( const unsigned int i )
+ {
+ return *(&x+i);
+ }
+
+ /** Assigns the value of the other vector.
+ @param
+ rkVector The other vector
+ */
+ inline Vector3& operator = ( const Vector3& rkVector )
+ {
+ x = rkVector.x;
+ y = rkVector.y;
+ z = rkVector.z;
+
+ return *this;
+ }
+
+ inline Vector3& operator = ( const float fScaler )
+ {
+ x = fScaler;
+ y = fScaler;
+ z = fScaler;
+
+ return *this;
+ }
+
+ inline bool operator == ( const Vector3& rkVector ) const
+ {
+ return ( x == rkVector.x && y == rkVector.y && z == rkVector.z );
+ }
+
+ inline bool operator != ( const Vector3& rkVector ) const
+ {
+ return ( x != rkVector.x || y != rkVector.y || z != rkVector.z );
+ }
+
+ // arithmetic operations
+ inline Vector3 operator + ( const Vector3& rkVector ) const
+ {
+ Vector3 kSum;
+
+ kSum.x = x + rkVector.x;
+ kSum.y = y + rkVector.y;
+ kSum.z = z + rkVector.z;
+
+ return kSum;
+ }
+
+ inline Vector3 operator - ( const Vector3& rkVector ) const
+ {
+ Vector3 kDiff;
+
+ kDiff.x = x - rkVector.x;
+ kDiff.y = y - rkVector.y;
+ kDiff.z = z - rkVector.z;
+
+ return kDiff;
+ }
+
+ inline Vector3 operator * ( const float fScalar ) const
+ {
+ Vector3 kProd;
+
+ kProd.x = fScalar*x;
+ kProd.y = fScalar*y;
+ kProd.z = fScalar*z;
+
+ return kProd;
+ }
+
+ inline Vector3 operator * ( const Vector3& rhs) const
+ {
+ Vector3 kProd;
+
+ kProd.x = rhs.x * x;
+ kProd.y = rhs.y * y;
+ kProd.z = rhs.z * z;
+
+ return kProd;
+ }
+
+ inline Vector3 operator / ( const float fScalar ) const
+ {
+ Vector3 kDiv;
+
+ float fInv = 1.0 / fScalar;
+ kDiv.x = x * fInv;
+ kDiv.y = y * fInv;
+ kDiv.z = z * fInv;
+
+ return kDiv;
+ }
+
+ inline Vector3 operator / ( const Vector3& rhs) const
+ {
+ Vector3 kDiv;
+
+ kDiv.x = x / rhs.x;
+ kDiv.y = y / rhs.y;
+ kDiv.z = z / rhs.z;
+
+ return kDiv;
+ }
+
+
+ inline Vector3 operator - () const
+ {
+ Vector3 kNeg;
+
+ kNeg.x = -x;
+ kNeg.y = -y;
+ kNeg.z = -z;
+
+ return kNeg;
+ }
+
+ // overloaded operators to help Vector3
+ inline friend Vector3 operator * ( const float fScalar, const Vector3& rkVector )
+ {
+ Vector3 kProd;
+
+ kProd.x = fScalar * rkVector.x;
+ kProd.y = fScalar * rkVector.y;
+ kProd.z = fScalar * rkVector.z;
+
+ return kProd;
+ }
+
+ inline friend Vector3 operator + (const Vector3& lhs, const float rhs)
+ {
+ Vector3 ret(rhs);
+ return ret += lhs;
+ }
+
+ inline friend Vector3 operator + (const float lhs, const Vector3& rhs)
+ {
+ Vector3 ret(lhs);
+ return ret += rhs;
+ }
+
+ inline friend Vector3 operator - (const Vector3& lhs, const float rhs)
+ {
+ return lhs - Vector3(rhs);
+ }
+
+ inline friend Vector3 operator - (const float lhs, const Vector3& rhs)
+ {
+ Vector3 ret(lhs);
+ return ret -= rhs;
+ }
+
+ // arithmetic updates
+ inline Vector3& operator += ( const Vector3& rkVector )
+ {
+ x += rkVector.x;
+ y += rkVector.y;
+ z += rkVector.z;
+
+ return *this;
+ }
+
+ inline Vector3& operator += ( const float fScalar )
+ {
+ x += fScalar;
+ y += fScalar;
+ z += fScalar;
+ return *this;
+ }
+
+ inline Vector3& operator -= ( const Vector3& rkVector )
+ {
+ x -= rkVector.x;
+ y -= rkVector.y;
+ z -= rkVector.z;
+
+ return *this;
+ }
+
+ inline Vector3& operator -= ( const float fScalar )
+ {
+ x -= fScalar;
+ y -= fScalar;
+ z -= fScalar;
+ return *this;
+ }
+
+ inline Vector3& operator *= ( const float fScalar )
+ {
+ x *= fScalar;
+ y *= fScalar;
+ z *= fScalar;
+ return *this;
+ }
+
+ inline Vector3& operator *= ( const Vector3& rkVector )
+ {
+ x *= rkVector.x;
+ y *= rkVector.y;
+ z *= rkVector.z;
+
+ return *this;
+ }
+
+ inline Vector3& operator /= ( const float fScalar )
+ {
+ float fInv = 1.0 / fScalar;
+
+ x *= fInv;
+ y *= fInv;
+ z *= fInv;
+
+ return *this;
+ }
+
+ inline Vector3& operator /= ( const Vector3& rkVector )
+ {
+ x /= rkVector.x;
+ y /= rkVector.y;
+ z /= rkVector.z;
+
+ return *this;
+ }
+
+ inline float squaredLength () const
+ {
+ return x * x + y * y + z * z;
+ }
+
Vector3 do_smth( const Vector3& x = ZERO ){
return x;
- }
- // special points
- static const Vector3 ZERO;
-
-};
-
-
-
-}
-
-#endif//__class_order_to_be_exported_hpp__
\ No newline at end of file
+ }
+ // special points
+ static const Vector3 ZERO;
+
+};
+
+
+
+}
+
+#endif//__class_order_to_be_exported_hpp__
Modified: pyplusplus_dev/unittests/vector3_tester.py
===================================================================
--- pyplusplus_dev/unittests/vector3_tester.py 2009-02-18 14:18:58 UTC (rev 1691)
+++ pyplusplus_dev/unittests/vector3_tester.py 2009-02-18 21:17:50 UTC (rev 1692)
@@ -35,7 +35,7 @@
self.failUnless( module.Vector3(v3.ZERO) == v3.do_smth() )
x = module.Vector3( 1,2,3)
- print str(x)
+ self.failUnless( '( 1,2,3 )' == str(x) )
def create_suite():
suite = unittest.TestSuite()
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|