00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00028
00030
00031 #ifndef __H3DTEMPLATEOPERATORS_H__
00032 #define __H3DTEMPLATEOPERATORS_H__
00033
00034 namespace H3D {
00035 namespace ArithmeticTypes {
00043
00046 template< class T, class U >
00047 inline bool operator!=( const T &a, const U &b ) {
00048 return ! ( a == b );
00049 }
00050
00053 template< class T >
00054 inline T operator/( const T &a, const float &b ) {
00055 return a * ( 1.0 / b );
00056 }
00057
00060 template< class T >
00061 inline T operator/( const T &a, const double &b ) {
00062 return a * ( 1.0 / b );
00063 }
00064
00067 template< class T >
00068 inline T operator/( const T &a, const int &b ) {
00069 return a * ( 1.0 / b );
00070 }
00071
00074 template< class T >
00075 inline T operator/( const T &a, const long &b ) {
00076 return a * ( 1.0 / b );
00077 }
00078
00081 template< class T >
00082 inline T operator/( const T &a, const unsigned int &b ) {
00083 return a * ( 1.0 / b );
00084 }
00085
00088 template< class T >
00089 inline T operator/( const T &a, const unsigned long &b ) {
00090 return a * ( 1.0 / b );
00091 }
00092
00094 template< class T, class U >
00095 inline void operator+=( T &a, const U &b ) {
00096 a = a + b;
00097 }
00098
00100 template< class T, class U >
00101 inline void operator-=( T &a, const U &b ) {
00102 a = a - b;
00103 }
00104
00106 template< class T, class U >
00107 inline void operator*=( T &a, const U &b ) {
00108 a = a * b;
00109 }
00110
00112 template< class T, class U >
00113 inline void operator/=( T &a, const U &b ) {
00114 a = a / b;
00115 }
00116
00118 template< class T, class U >
00119 inline void operator%=( T &a, const U &b ) {
00120 a = a % b;
00121 }
00122
00124 }
00125 }
00126
00127
00128 #endif