Added Result in Utilities
Introduced typedefs for Result's data
This commit is contained in:
parent
358c818954
commit
1e8d4a9bbc
|
@ -0,0 +1,56 @@
|
|||
|
||||
#include "result.h"
|
||||
#include "modules/exceptions.h"
|
||||
|
||||
|
||||
template <typename T>
|
||||
Result<T>::Result()
|
||||
{
|
||||
this->result = false;
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
Result<T>::Result( const bool ok, const T& data )
|
||||
{
|
||||
this->result = ok;
|
||||
this->data = std::move(data);
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
Result<T>::operator bool()
|
||||
{
|
||||
return this->result;
|
||||
}
|
||||
|
||||
/*
|
||||
template <typename T>
|
||||
const bool Result<T>::isOk()
|
||||
{
|
||||
return this->result == true;
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
const bool Result<T>::isErr()
|
||||
{
|
||||
return this->result == false;
|
||||
}
|
||||
*/
|
||||
|
||||
template <typename T>
|
||||
const T& Result<T>::getData()
|
||||
{
|
||||
if ( this->result ) {
|
||||
return this->data;
|
||||
} else {
|
||||
// unexpected operation
|
||||
throw GenericException( "Result is Err, no data to be returned", true );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
template class Result< stats_dates_t >; // std::unordered_map<int, std::unordered_map<int, std::unordered_map<int, std::vector<int>>>>
|
||||
template class Result< stats_warn_items_t >; // std::vector<std::vector<std::vector<std::vector<QString>>>>
|
||||
template class Result< stats_speed_items_t >; // std::vector<std::tuple<long long, std::vector<QString>>>
|
||||
template class Result< stats_day_items_t >; // std::unordered_map<int, std::unordered_map<int, int>>
|
||||
template class Result< stats_relat_items_t >; // std::vector<std::tuple<long long, int>>
|
||||
template class Result< stats_count_items_t >; // std::vector<std::tuple<QString, int>>
|
|
@ -0,0 +1,51 @@
|
|||
#ifndef RESULT_H
|
||||
#define RESULT_H
|
||||
|
||||
#include <QString>
|
||||
|
||||
#include <unordered_map>
|
||||
#include <vector>
|
||||
#include <tuple>
|
||||
|
||||
|
||||
//! Result
|
||||
/*!
|
||||
Holds the result for an operation and the relative data
|
||||
*/
|
||||
template <typename T>
|
||||
class Result
|
||||
{
|
||||
public:
|
||||
Result();
|
||||
Result( const bool ok, const T& data );
|
||||
|
||||
explicit operator bool();
|
||||
|
||||
/*
|
||||
//! Checks if the operation was successful
|
||||
const bool isOk();
|
||||
|
||||
//! Checks if the operation has failed
|
||||
const bool isErr();
|
||||
*/
|
||||
|
||||
//! Returns the data
|
||||
const T& getData();
|
||||
|
||||
private:
|
||||
|
||||
bool result;
|
||||
|
||||
T data;
|
||||
};
|
||||
|
||||
|
||||
// data types
|
||||
typedef std::unordered_map<int, std::unordered_map<int, std::unordered_map<int, std::vector<int>>>> stats_dates_t;
|
||||
typedef std::vector<std::vector<std::vector<std::vector<QString>>>> stats_warn_items_t;
|
||||
typedef std::vector<std::tuple<long long, std::vector<QString>>> stats_speed_items_t;
|
||||
typedef std::unordered_map<int, std::unordered_map<int, int>> stats_day_items_t;
|
||||
typedef std::vector<std::tuple<long long, int>> stats_relat_items_t;
|
||||
typedef std::vector<std::tuple<QString, int>> stats_count_items_t;
|
||||
|
||||
#endif // RESULT_H
|
Loading…
Reference in New Issue