00001 #include "qsecolumn.h" 00002 #include "qsescan.h" 00003 00004 #include <math.h> 00005 00006 QMutex QseColumn::m_Mutex(QMutex::Recursive); 00007 00008 QseColumn::QseColumn() 00009 : QObject(NULL), 00010 m_Role(UnspecifiedRole), 00011 m_Name("") 00012 {} 00013 00014 QseColumn::~QseColumn() 00015 {} 00016 00017 void QseColumn::setName(QString n) 00018 { 00019 QMutexLocker lock(&m_Mutex); 00020 00021 m_Name = n; 00022 } 00023 00024 QString QseColumn::name() const 00025 { 00026 const QMutexLocker lock(&m_Mutex); 00027 00028 return m_Name; 00029 } 00030 00031 void QseColumn::clear() 00032 { 00033 QMutexLocker lock(&m_Mutex); 00034 00035 m_Name=""; 00036 m_Role=UnspecifiedRole; 00037 m_Data.clear(); 00038 } 00039 00040 void QseColumn::appendData(double v) 00041 { 00042 QMutexLocker lock(&m_Mutex); 00043 00044 m_Data.push_back(v); 00045 } 00046 00047 int QseColumn::rowCount() const 00048 { 00049 QMutexLocker lock(&m_Mutex); 00050 00051 return m_Data.size(); 00052 } 00053 00054 void QseColumn::setRowCount(int n) 00055 { 00056 QMutexLocker lock(&m_Mutex); 00057 00058 m_Data.resize(n); 00059 } 00060 00061 const double* QseColumn::data() const 00062 { 00063 QMutexLocker lock(&m_Mutex); 00064 00065 return m_Data.begin(); 00066 } 00067 00068 double QseColumn::data(int n) const 00069 { 00070 if ((0 <= n) && (n < rowCount())) { 00071 QMutexLocker lock(&m_Mutex); 00072 return m_Data.at(n); 00073 } else { 00074 return FP_NAN; 00075 } 00076 } 00077 00078 void QseColumn::setData(int n, double v) 00079 { 00080 QMutexLocker lock(&m_Mutex); 00081 00082 m_Data[n] = v; 00083 } 00084 00085 QseColumn::QseColumnRole QseColumn::columnRole() const 00086 { 00087 QMutexLocker lock(&m_Mutex); 00088 00089 return m_Role; 00090 } 00091 00092 void QseColumn::setColumnRole(const QseColumn::QseColumnRole r) 00093 { 00094 QMutexLocker lock(&m_Mutex); 00095 00096 m_Role = r; 00097 } 00098 00099 void QseColumn::setDefaultRoles() 00100 { 00101 setColumnRole(QseColumn::UnspecifiedRole); 00102 } 00103 00104 void QseColumn::addition(const QseColumn *col) 00105 { 00106 if (col) { 00107 int nr0 = rowCount(), nr1 = col -> rowCount(); 00108 int nr = (nr0 < nr1 ? nr0 : nr1); 00109 00110 QMutexLocker lock(&m_Mutex); 00111 00112 for (int i = 0; i < nr; i++) { 00113 m_Data[i] += col -> data(i); 00114 } 00115 } 00116 } 00117 00118 void QseColumn::subtraction(const QseColumn *col) 00119 { 00120 if (col) { 00121 int nr0 = rowCount(), nr1 = col -> rowCount(); 00122 int nr = (nr0 < nr1 ? nr0 : nr1); 00123 00124 QMutexLocker lock(&m_Mutex); 00125 00126 for (int i = 0; i < nr; i++) { 00127 m_Data[i] -= col -> data(i); 00128 } 00129 } 00130 } 00131 00132 void QseColumn::multiplication(const QseColumn *col) 00133 { 00134 if (col) { 00135 int nr0 = rowCount(), nr1 = col -> rowCount(); 00136 int nr = (nr0 < nr1 ? nr0 : nr1); 00137 00138 QMutexLocker lock(&m_Mutex); 00139 00140 for (int i = 0; i < nr; i++) { 00141 m_Data[i] *= col -> data(i); 00142 } 00143 } 00144 } 00145 00146 void QseColumn::division(const QseColumn *col) 00147 { 00148 if (col) { 00149 int nr0 = rowCount(), nr1 = col -> rowCount(); 00150 int nr = (nr0 < nr1 ? nr0 : nr1); 00151 00152 QMutexLocker lock(&m_Mutex); 00153 00154 for (int i = 0; i < nr; i++) { 00155 m_Data[i] /= col -> data(i); 00156 } 00157 } 00158 } 00159 00160 void QseColumn::assignment(const QseColumn *col) 00161 { 00162 if (col) { 00163 int nr0 = rowCount(), nr1 = col -> rowCount(); 00164 int nr = (nr0 < nr1 ? nr0 : nr1); 00165 00166 QMutexLocker lock(&m_Mutex); 00167 00168 for (int i = 0; i < nr; i++) { 00169 m_Data[i] = col -> data(i); 00170 } 00171 } 00172 } 00173 00174 void QseColumn::addition(const double val) 00175 { 00176 int nr = rowCount(); 00177 00178 QMutexLocker lock(&m_Mutex); 00179 00180 for (int i = 0; i < nr; i++) { 00181 m_Data[i] += val; 00182 } 00183 } 00184 00185 void QseColumn::subtraction(const double val) 00186 { 00187 int nr = rowCount(); 00188 00189 QMutexLocker lock(&m_Mutex); 00190 00191 for (int i = 0; i < nr; i++) { 00192 m_Data[i] -= val; 00193 } 00194 } 00195 00196 void QseColumn::multiplication(const double val) 00197 { 00198 int nr = rowCount(); 00199 00200 QMutexLocker lock(&m_Mutex); 00201 00202 for (int i = 0; i < nr; i++) { 00203 m_Data[i] *= val; 00204 } 00205 } 00206 00207 void QseColumn::division(const double val) 00208 { 00209 int nr = rowCount(); 00210 00211 QMutexLocker lock(&m_Mutex); 00212 00213 for (int i = 0; i < nr; i++) { 00214 m_Data[i] /= val; 00215 } 00216 } 00217 00218 void QseColumn::assignment(const double val) 00219 { 00220 int nr = rowCount(); 00221 00222 QMutexLocker lock(&m_Mutex); 00223 00224 for (int i = 0; i < nr; i++) { 00225 m_Data[i] = val; 00226 } 00227 }
1.5.5