Changeset View
Changeset View
Standalone View
Standalone View
plugins/extensions/pykrita/plugin/version_checker.h
Show First 20 Lines • Show All 196 Lines • ▼ Show 20 Line(s) | |||||
197 | class version_checker | 197 | class version_checker | ||
198 | { | 198 | { | ||
199 | public: | 199 | public: | ||
200 | enum operation { | 200 | enum operation { | ||
201 | invalid | 201 | invalid | ||
202 | , undefined | 202 | , undefined | ||
203 | , less | 203 | , less | ||
204 | , less_or_equal | 204 | , less_or_equal | ||
205 | , greather | 205 | , greater | ||
206 | , greather_or_equal | 206 | , greater_or_equal | ||
207 | , not_equal | 207 | , not_equal | ||
208 | , equal | 208 | , equal | ||
209 | , last__ | 209 | , last__ | ||
210 | }; | 210 | }; | ||
211 | 211 | | |||
212 | /// Default constructor | 212 | /// Default constructor | ||
213 | explicit version_checker(const operation op = invalid) | 213 | explicit version_checker(const operation op = invalid) | ||
214 | : m_op(op) { | 214 | : m_op(op) { | ||
Show All 10 Lines | |||||
225 | void bind_second(const version& rhs) { | 225 | void bind_second(const version& rhs) { | ||
226 | m_rhs = rhs; | 226 | m_rhs = rhs; | ||
227 | } | 227 | } | ||
228 | 228 | | |||
229 | bool operator()(const version& left) { | 229 | bool operator()(const version& left) { | ||
230 | switch (m_op) { | 230 | switch (m_op) { | ||
231 | case less: | 231 | case less: | ||
232 | return left < m_rhs; | 232 | return left < m_rhs; | ||
233 | case greather: | 233 | case greater: | ||
234 | return left > m_rhs; | 234 | return left > m_rhs; | ||
235 | case equal: | 235 | case equal: | ||
236 | return left == m_rhs; | 236 | return left == m_rhs; | ||
237 | case not_equal: | 237 | case not_equal: | ||
238 | return left != m_rhs; | 238 | return left != m_rhs; | ||
239 | case less_or_equal: | 239 | case less_or_equal: | ||
240 | return left <= m_rhs; | 240 | return left <= m_rhs; | ||
241 | case greather_or_equal: | 241 | case greater_or_equal: | ||
242 | return left >= m_rhs; | 242 | return left >= m_rhs; | ||
243 | default: | 243 | default: | ||
244 | Q_ASSERT(!"Sanity check"); | 244 | Q_ASSERT(!"Sanity check"); | ||
245 | break; | 245 | break; | ||
246 | } | 246 | } | ||
247 | return false; | 247 | return false; | ||
248 | } | 248 | } | ||
249 | 249 | | |||
250 | version required() const { | 250 | version required() const { | ||
251 | return m_rhs; | 251 | return m_rhs; | ||
252 | } | 252 | } | ||
253 | 253 | | |||
254 | QString operationToString() const { | 254 | QString operationToString() const { | ||
255 | QString result; | 255 | QString result; | ||
256 | switch (m_op) { | 256 | switch (m_op) { | ||
257 | case less: | 257 | case less: | ||
258 | result = " < "; | 258 | result = " < "; | ||
259 | break; | 259 | break; | ||
260 | case greather: | 260 | case greater: | ||
261 | result = " > "; | 261 | result = " > "; | ||
262 | break; | 262 | break; | ||
263 | case equal: | 263 | case equal: | ||
264 | result = " = "; | 264 | result = " = "; | ||
265 | break; | 265 | break; | ||
266 | case not_equal: | 266 | case not_equal: | ||
267 | result = " != "; | 267 | result = " != "; | ||
268 | break; | 268 | break; | ||
269 | case less_or_equal: | 269 | case less_or_equal: | ||
270 | result = " <= "; | 270 | result = " <= "; | ||
271 | break; | 271 | break; | ||
272 | case greather_or_equal: | 272 | case greater_or_equal: | ||
273 | result = " >= "; | 273 | result = " >= "; | ||
274 | break; | 274 | break; | ||
275 | default: | 275 | default: | ||
276 | Q_ASSERT(!"Sanity check"); | 276 | Q_ASSERT(!"Sanity check"); | ||
277 | break; | 277 | break; | ||
278 | } | 278 | } | ||
279 | return result; | 279 | return result; | ||
280 | } | 280 | } | ||
281 | 281 | | |||
282 | static version_checker fromString(const QString& version_info) { | 282 | static version_checker fromString(const QString& version_info) { | ||
283 | version_checker checker(invalid); | 283 | version_checker checker(invalid); | ||
284 | if (version_info.isEmpty()) | 284 | if (version_info.isEmpty()) | ||
285 | return checker; | 285 | return checker; | ||
286 | 286 | | |||
287 | bool lookup_next_char = false; | 287 | bool lookup_next_char = false; | ||
288 | int strip_lead_pos = 0; | 288 | int strip_lead_pos = 0; | ||
289 | switch (version_info.at(0).toLatin1()) { | 289 | switch (version_info.at(0).toLatin1()) { | ||
290 | case '<': | 290 | case '<': | ||
291 | checker.m_op = less; | 291 | checker.m_op = less; | ||
292 | lookup_next_char = true; | 292 | lookup_next_char = true; | ||
293 | break; | 293 | break; | ||
294 | case '>': | 294 | case '>': | ||
295 | checker.m_op = greather; | 295 | checker.m_op = greater; | ||
296 | lookup_next_char = true; | 296 | lookup_next_char = true; | ||
297 | break; | 297 | break; | ||
298 | case '=': | 298 | case '=': | ||
299 | strip_lead_pos = 1; | 299 | strip_lead_pos = 1; | ||
300 | checker.m_op = equal; | 300 | checker.m_op = equal; | ||
301 | break; | 301 | break; | ||
302 | default: | 302 | default: | ||
303 | strip_lead_pos = 0; | 303 | strip_lead_pos = 0; | ||
Show All 29 Lines |