H3DTemplateOperators.h

Go to the documentation of this file.
00001 
00002 //    Copyright 2004, SenseGraphics AB
00003 //
00004 //    This file is part of H3D API.
00005 //
00006 //    H3D API is free software; you can redistribute it and/or modify
00007 //    it under the terms of the GNU General Public License as published by
00008 //    the Free Software Foundation; either version 2 of the License, or
00009 //    (at your option) any later version.
00010 //
00011 //    H3D API is distributed in the hope that it will be useful,
00012 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
00013 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00014 //    GNU General Public License for more details.
00015 //
00016 //    You should have received a copy of the GNU General Public License
00017 //    along with H3D API; if not, write to the Free Software
00018 //    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00019 //
00020 //    A commercial license is also available. Please contact us at 
00021 //    www.sensegraphics.com for more information.
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

Generated on Thu Aug 24 12:38:33 2006 for H3D API by  doxygen 1.4.5