00001
00009
00010
00011
00012
00013
00014
00015 #ifndef __GAL_UTIL_H
00016 #define __GAL_UTIL_H
00017
00018 #include<sstream>
00019 #include<string>
00020 #include<list>
00021 #include<math.h>
00022 #include<cstdlib>
00023 #define RANDOM_MAX 2147483648.0
00024
00028 int random_int(int nmax)
00029 {
00030 return (int)(floor(nmax*(random()/RANDOM_MAX)));
00031 }
00032
00036 std::string itos(int i)
00037 {
00038 std::stringstream s;
00039 s << i;
00040 return s.str();
00041 }
00042
00046 std::string ftos(double d)
00047 {
00048 std::stringstream s;
00049 s.precision(15);
00050 s << d;
00051 return s.str();
00052 }
00053
00062 int bitstodec(std::list<char>::iterator start, std::list<char>::iterator end)
00063 {
00064
00065
00066 return 0;
00067 }
00068
00075 int bitstodec(std::list<char> bits)
00076 {
00077 return bitstodec(bits.begin(), bits.end());
00078 }
00079
00090 void bitstodecparts(std::list<char> bits, int partsize, int *decparts)
00091 {
00092 std::list<char>::iterator pos;
00093 int pow;
00094 int val;
00095 int ipart;
00096 int i;
00097
00098
00099 pos = bits.begin();
00100 ipart = 0;
00101 while (pos != bits.end()) {
00102 pow = 1;
00103 val = 0;
00104 for (i = 0; i < partsize; i++) {
00105 val += *pos * pow;
00106 pow <<= 1;
00107 ++pos;
00108 }
00109 decparts[ipart] = val;
00110 ipart++;
00111 }
00112 }
00113
00118 std::string bitstos(std::list<char> bits)
00119 {
00120 std::string str = "";
00121 std::list<char>::iterator it;
00122 for (it = bits.begin(); it != bits.end(); ++it) {
00123
00124 str += itos(*it);
00125 }
00126 return str;
00127 }
00128
00136 std::string rbitstos(std::list<char> bits)
00137 {
00138 bits.reverse();
00139 return bitstos(bits);
00140 }
00141
00146 template<typename __Tp>
00147 std::_List_iterator<__Tp>& operator+=(std::_List_iterator<__Tp>& it, int __n) {
00148
00149
00150
00151 for (int i = 0; i < __n; i++) {
00152 ++it;
00153 }
00154 return it;
00155 };
00156
00165 template <class T> T** newMatrix(int nr, int nc)
00166 {
00167 T** mtx;
00168 mtx = new T*[nr];
00169 for(int i = 0; i < nr; i++) {
00170 mtx[i] = new T[nc];
00171 }
00172
00173 return mtx;
00174 };
00175
00183 template <class T> void deleteMatrix(T** mtx, int nr, int nc)
00184 {
00185 for(int i = 0; i < nr; i++) {
00186 delete [] mtx[i];
00187 }
00188 delete [] mtx;
00189 };
00190
00191 #endif