Files Classes Functions Hierarchy
00001 #ifndef VECTORREADIN_H 00002 #define VECTORREADIN_H 00003 00004 #include <cassert> 00005 #include <vector> 00006 using namespace std; 00007 00008 #include <typedefs.h> 00009 00010 00012 template<class PT, class T > 00013 void vectorreadingD2 00014 ( 00015 vector< PT > & v, 00016 T const * abeg, 00017 T const * aend 00018 ) 00019 { 00020 assert((aend-abeg)%2==0); 00021 00022 uint n = (aend-abeg)/2; 00023 vector< PT > v2(n); 00024 for (uint i=0; i<n; ++i) 00025 { 00026 v2[i] = PT(*abeg,*(abeg+1)); 00027 ++abeg; ++abeg; 00028 } 00029 00030 v = v2; 00031 } 00032 00033 00035 template<class PT, class T > 00036 void vectorreadingD2 00037 ( 00038 vector< PT > & v, 00039 T const * abeg, 00040 uintc N 00041 ) 00042 { 00043 T const * aend = abeg + N*2; 00044 vectorreadingD2(v,abeg,aend); 00045 } 00046 00047 00048 template< typename PT > 00049 class vectorreadingD2primitive 00050 { 00051 public: 00052 00053 template< class VEC, class T, class INDX > 00054 void read 00055 ( 00056 VEC & v, 00057 T const * abeg, 00058 T const * aend, 00059 INDX i0=0 00060 ) 00061 { 00062 assert((aend-abeg)%2==0); 00063 T * i = abeg; 00064 00065 for ( ; i != aend; ++i) 00066 { 00067 v[i0] = PT(*i,*(i+1)); 00068 ++i; ++i; 00069 } 00070 } 00071 }; 00072 00073 00074 00075 00076 00077 00079 template<class PT, class T > 00080 void vectorreadingD3 00081 ( 00082 vector< PT > & v, 00083 T const * abeg, 00084 T const * aend 00085 ) 00086 { 00087 assert((aend-abeg)%3==0); 00088 00089 uint n = (aend-abeg)/3; 00090 vector< PT > v2(n); 00091 for (uint i=0; i<n; ++i) 00092 { 00093 v2[i] = PT(*abeg,*(abeg+1),*(abeg+2)); 00094 ++abeg; ++abeg; ++abeg; 00095 } 00096 00097 v = v2; 00098 } 00099 00101 template<class PT, class T > 00102 void vectorreadingD3 00103 ( 00104 vector< PT > & v, 00105 T const * abeg, 00106 uintc N 00107 ) 00108 { 00109 T const * aend = abeg + N*3; 00110 vectorreadingD3(v,abeg,aend); 00111 } 00112 00113 00114 00115 00116 #endif 00117 00118
1.5.8