#include "json-helper.h"
#include <QtGlobal>
#include <QDebug>


/*
 * QVector<QString> <- QStringList
 */
QVector<QString> toQVector(const QStringList & qsl) {
    QVector<QString> V;

    for (auto & s : qsl)
        V.push_back(s);

    return V;
}


/*
 * QVector<QString> -> QStringList
 */
QStringList toQStringList(const QVector<QString> & V) {
    QStringList qsl;

    for (auto & s : V)
        qsl << s;

    return qsl;
}

/*
 * data for tables
 */
void toJSONtable(QJsonObject & jsonObj, const QString &ParameterName, const QVector<QStringList> & V) { // C-b-R
    toJSON(jsonObj, ParameterName+".size", V.size());

    for (int i=0; i<V.size(); i++)
        toJSONstd(jsonObj, ParameterName+QString::number(i), toQVector(V[i]));
}

/*
 *
 */
QJsonValue fromJSON(const QJsonObject & jsonObj, const QString &ParameterName) {
    QJsonValue jsonValue = jsonObj.value(ParameterName);

    if (jsonValue.isUndefined())
        qDebug() << "*** ERROR: fromJSON(" + ParameterName + ")";

    Q_ASSERT_X(not jsonValue.isUndefined(), "fromJSON", "jsonValue.isUndefined()");

    return jsonValue;
}



/*
 *
 */
QVector<QString> fromJSONqstr(const QJsonObject & jsonObj, const QString &ParameterName) {
    int size = fromJSON(jsonObj, ParameterName+".size").toInt();

    QVector<QString> V;

    for (int i=0; i<size; i++)
        V.push_back(fromJSON(jsonObj, ParameterName+QString::number(i)).toString());

    return  V;
}


/*
 *
 */
QVector<QStringList> fromJSONtable(const QJsonObject & jsonObj, const QString &ParameterName) {
    int size = fromJSON(jsonObj, ParameterName+".size").toInt();

    QVector<QStringList> V;

    for (int i=0; i<size; i++)
        V.push_back(toQStringList(fromJSONqstr(jsonObj, ParameterName+QString::number(i))));

    return  V;

}