35 lines
777 B
C++
35 lines
777 B
C++
|
|
|
|
#pragma once
|
|
#include <QString>
|
|
#include <cstdint>
|
|
#include <map>
|
|
#include <vector>
|
|
|
|
namespace LtsUtils {
|
|
|
|
template <typename T, typename C> class PgArray {
|
|
public:
|
|
using Type = T;
|
|
using ContainerType = C;
|
|
|
|
PgArray() = default;
|
|
Q_DECL_CONSTEXPR explicit PgArray(const C &data) : m_data(data) {}
|
|
|
|
Q_DECL_CONSTEXPR C operator()() const { return m_data; }
|
|
|
|
[[nodiscard]] QString toPgString() const;
|
|
static PgArray fromPgString(const QString &str);
|
|
|
|
private:
|
|
C m_data;
|
|
};
|
|
|
|
using IntArray = PgArray<int, std::vector<int>>;
|
|
using BigintArray = PgArray<int64_t, std::vector<int64_t>>;
|
|
|
|
using IntArray2D = PgArray<int, std::map<int, int>>;
|
|
using BigintArray2D = PgArray<int64_t, std::map<int64_t, int64_t>>;
|
|
|
|
} // namespace LtsUtils
|