Files
qt6-migration-pipeline/Lts/Common/LtsUtils/LtsUtilsCore/pgarray.h
T

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