$search
00001 /* 00002 * Copyright (C) 2009 00003 * Robert Bosch LLC 00004 * Research and Technology Center North America 00005 * Palo Alto, California 00006 * 00007 * All rights reserved. 00008 * 00009 *------------------------------------------------------------------------------ 00010 * project ....: Autonomous Technologies 00011 * file .......: rtcVec5.h 00012 * authors ....: Benjamin Pitzer 00013 * organization: Robert Bosch LLC 00014 * creation ...: 04/03/2008 00015 * modified ...: $Date: 2009-01-21 18:19:16 -0800 (Wed, 21 Jan 2009) $ 00016 * changed by .: $Author: benjaminpitzer $ 00017 * revision ...: $Revision: 14 $ 00018 */ 00019 #ifndef RTC_VEC5_H 00020 #define RTC_VEC5_H 00021 00022 //== INCLUDES ================================================================== 00023 #include "rtc/rtcMath.h" 00024 #include "rtc/rtcVec.h" 00025 00026 //== NAMESPACES ================================================================ 00027 namespace rtc { 00028 00029 // Forward declarations 00030 template <class T, int M> class Vec; // M-d vector 00031 template <class T> class Vec5; // 5d Vector 00032 00036 template <class T> 00037 class Vec5: public Vec<T,5> { 00038 public: 00039 // inherit member data and functions of parent 00040 using Vec<T,5>::x; 00041 using Vec<T,5>::set; 00042 00043 // Constructors 00044 Vec5(); 00045 Vec5(const T* d); 00046 Vec5(const T a); 00047 Vec5(const T x0, const T x1, const T x2, const T x3, const T x4); 00048 Vec5(const Vec<T,5>& v); 00049 00050 // Cast Operation 00051 template <class U> Vec5(const Vec<U,5>& v); 00052 00053 // Mutators 00054 void set(const T x0, const T x1, const T x2, const T x3, const T x4); 00055 }; 00056 00057 // Declare a few common typdefs 00058 typedef Vec5<bool> Vec5b; 00059 typedef Vec5<signed char> Vec5c; 00060 typedef Vec5<unsigned char> Vec5uc; 00061 typedef Vec5<signed short int> Vec5s; 00062 typedef Vec5<unsigned short int> Vec5us; 00063 typedef Vec5<int> Vec5i; 00064 typedef Vec5<unsigned int> Vec5ui; 00065 typedef Vec5<float> Vec5f; 00066 typedef Vec5<double> Vec5d; 00067 00068 //============================================================================== 00069 // Vec5<T> 00070 //============================================================================== 00071 00072 // Constructors 00073 00076 template <class T> 00077 inline Vec5<T>::Vec5() {} 00078 00081 template <class T> 00082 inline Vec5<T>::Vec5(const T* d) : Vec<T,5>(d) {} 00083 00086 template <class T> 00087 inline Vec5<T>::Vec5(const T a) : Vec<T,5>(a) {} 00088 00091 template <class T> 00092 inline Vec5<T>::Vec5(const T x0, const T x1, const T x2, const T x3, const T x4) { 00093 set(x0,x1,x2,x3,x4); 00094 } 00095 00098 template <class T> 00099 inline Vec5<T>::Vec5(const Vec<T,5>& v) : Vec<T,5>(v) {} 00100 00101 // Casting Operation 00102 00105 template <class T> template <class U> 00106 inline Vec5<T>::Vec5(const Vec<U,5>& v) : Vec<T,5>(v) {} 00107 00108 // Mutators 00109 00112 template <class T> 00113 inline void Vec5<T>::set(const T x0, const T x1, const T x2, const T x3, const T x4) { 00114 x[0] = x0; x[1] = x1; x[2] = x2; x[3] = x3; x[4] = x4; 00115 } 00116 00117 //============================================================================== 00118 } // NAMESPACE puma 00119 //============================================================================== 00120 #endif // RTC_VEC5_H defined 00121 //============================================================================== 00122