From 3c7b5d0958ee83ab79fa56b77778cf43968617cd Mon Sep 17 00:00:00 2001 From: Gerhard Hoffmann Date: Mon, 11 Mar 2024 14:27:33 +0100 Subject: [PATCH] xxx --- Calculator/main.cpp | 20 +++---- CalculatorCInterface/CalculatorCInterface.pro | 5 ++ .../calculator_c_interface_lib.cpp | 35 +++++++++++- .../calculator_c_interface_lib.h | 13 +++-- .../calculator_c_interface_lib_global.h | 11 ++++ CalculatorCInterface/tariff_calculator.cpp | 54 +++++++++---------- CalculatorCInterface/tariff_calculator.h | 5 +- 7 files changed, 99 insertions(+), 44 deletions(-) diff --git a/Calculator/main.cpp b/Calculator/main.cpp index cb967aa..d4c3c50 100644 --- a/Calculator/main.cpp +++ b/Calculator/main.cpp @@ -17,10 +17,6 @@ typedef TariffCalculator *TariffCalculatorHandle; typedef TariffCalculatorHandle (*NewTariffCalculatorFunc)(); typedef void (*DeleteTariffCalculatorFunc)(TariffCalculatorHandle handle); -//extern "C" { -//#include "calculator_c_interface_lib.h" -//bool __declspec(dllimport) initTariffEditor(); -//} int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); @@ -30,6 +26,16 @@ int main(int argc, char *argv[]) //setDebugLevel(LOG_NOTICE); } +#ifdef __linux__ + + //TariffCalculatorHandle handle = NewTariffCalculator(); + //DeleteTariffCalculator(handle); + + if (InitGitLibrary() > 0) { + qCritical() << CloneRepository("https://git.mimbach49.de/GerhardHoffmann/customer_999.git", "/tmp/customer_999"); + ShutdownGitLibrary(); + } +#else QLibrary library("C:\\build-ATBTariffCalculator-Desktop_Qt_6_5_0_MinGW_64_bit-Release\\CalculatorCInterface\\release\\CalculatorCInterface.dll"); if (library.load()) { qCritical() << "loaded"; @@ -45,11 +51,7 @@ int main(int argc, char *argv[]) d(handle); } } - - - //initTariffEditor(); - +#endif return 0; // a.exec(); - } diff --git a/CalculatorCInterface/CalculatorCInterface.pro b/CalculatorCInterface/CalculatorCInterface.pro index d8702ef..651dc11 100644 --- a/CalculatorCInterface/CalculatorCInterface.pro +++ b/CalculatorCInterface/CalculatorCInterface.pro @@ -2,6 +2,11 @@ QT+=core TEMPLATE = lib DEFINES += CALCULATOR_C_INTERFACE_LIBRARY +QMAKE_CXXFLAGS += -fPIC + +unix { + LIBS += -L/usr/lib64 -lgit2 +} # INCLUDEPATH+=$$_PRO_FILE_PWD_/../Utilities/ diff --git a/CalculatorCInterface/calculator_c_interface_lib.cpp b/CalculatorCInterface/calculator_c_interface_lib.cpp index d3fa02c..98f1bea 100644 --- a/CalculatorCInterface/calculator_c_interface_lib.cpp +++ b/CalculatorCInterface/calculator_c_interface_lib.cpp @@ -1,18 +1,49 @@ #include "calculator_c_interface_lib.h" +#include +#include + #ifdef __cplusplus extern "C" { #endif -TariffCalculatorHandle CALCULATOR_C_INTERFACE_LIB_EXPORT NewTariffCalculator(void) { +TariffCalculatorHandle NewTariffCalculator(void) { return new TariffCalculator(); } -void CALCULATOR_C_INTERFACE_LIB_EXPORT DeleteTariffCalculator(TariffCalculatorHandle handle) { +void DeleteTariffCalculator(TariffCalculatorHandle handle) { delete handle; } +int InitGitLibrary(void) { + return git_libgit2_init(); +} + +int ShutdownGitLibrary(void) { + return git_libgit2_shutdown(); +} + +int CloneRepository(char const *url, char const *local_path) { + git_repository *out; + git_clone_options opts; + + int res = 0; + if ((res = git_clone_options_init(&opts, GIT_CLONE_OPTIONS_VERSION)) == 0) { + opts.checkout_branch = "master"; + + fprintf(stderr, "%s:%d %s %s\n", __func__, __LINE__, url, local_path); + + if ((res = git_clone(&out, url, local_path, &opts)) < 0) { + git_error const *error = git_error_last(); + fprintf(stderr, "%s:%d error: %s\n", __func__, __LINE__, error->message); + } + } else { + git_error const *error = git_error_last(); + fprintf(stderr, "%s:%d error: %s\n", __func__, __LINE__, error->message); + } + return res; +} #ifdef __cplusplus } diff --git a/CalculatorCInterface/calculator_c_interface_lib.h b/CalculatorCInterface/calculator_c_interface_lib.h index f9ba63a..e7ed9ec 100644 --- a/CalculatorCInterface/calculator_c_interface_lib.h +++ b/CalculatorCInterface/calculator_c_interface_lib.h @@ -10,12 +10,19 @@ typedef TariffCalculator *TariffCalculatorHandle; extern "C" { #endif -TariffCalculatorHandle CALCULATOR_C_INTERFACE_LIB_EXPORT NewTariffCalculator(void); -void CALCULATOR_C_INTERFACE_LIB_EXPORT DeleteTariffCalculator(TariffCalculatorHandle handle); +TariffCalculatorHandle NewTariffCalculator(void) CALCULATOR_C_INTERFACE_LIB_EXPORT; +void DeleteTariffCalculator(TariffCalculatorHandle handle) CALCULATOR_C_INTERFACE_LIB_EXPORT; + +int InitGitLibrary(void) CALCULATOR_C_INTERFACE_LIB_EXPORT; +int ShutdownGitLibrary(void) CALCULATOR_C_INTERFACE_LIB_EXPORT; + +int CloneRepository(char const *url, char const *local_path) CALCULATOR_C_INTERFACE_LIB_EXPORT; + + +void DeleteTariffCalculator(TariffCalculatorHandle handle) CALCULATOR_C_INTERFACE_LIB_EXPORT; #ifdef __cplusplus } #endif - #endif // CALCULATOR_C_INTERFACE_LIB_H_INCLUDED diff --git a/CalculatorCInterface/calculator_c_interface_lib_global.h b/CalculatorCInterface/calculator_c_interface_lib_global.h index beed995..27c7804 100644 --- a/CalculatorCInterface/calculator_c_interface_lib_global.h +++ b/CalculatorCInterface/calculator_c_interface_lib_global.h @@ -4,9 +4,20 @@ #include #if defined(CALCULATOR_C_INTERFACE_LIBRARY) +#ifdef __linux__ + #define CALCULATOR_C_INTERFACE_LIB_EXPORT +#else #define CALCULATOR_C_INTERFACE_LIB_EXPORT Q_DECL_EXPORT __stdcall +#endif + +#else + +#ifdef __linux__ + #define CALCULATOR_C_INTERFACE_LIB_EXPORT #else #define CALCULATOR_C_INTERFACE_LIB_EXPORT Q_DECL_IMPORT __stdcall #endif +#endif + #endif // CALCULATOR_C_INTERFACE_GLOBAL_H diff --git a/CalculatorCInterface/tariff_calculator.cpp b/CalculatorCInterface/tariff_calculator.cpp index a244d81..4313d61 100644 --- a/CalculatorCInterface/tariff_calculator.cpp +++ b/CalculatorCInterface/tariff_calculator.cpp @@ -33,8 +33,6 @@ TariffCalculator::~TariffCalculator() { } TariffCalculator::TariffCalculator() { - qCritical() << __func__; - return; // QByteArray ba = readJson("/opt/ptu5/opt/ATBTariffCalculator/Utilities/tariff.template.json"); //QJsonParseError pe; @@ -46,38 +44,37 @@ TariffCalculator::TariffCalculator() { // //} - m_a = QJsonArray(); + m_o = QJsonObject(); - createJsonValue("Project", "Szeged"); - createJsonValue("Version", "1.0.0"); - createJsonValue("Date", "01.01.1970"); - createJsonValue("Committer", ""); - createJsonValue("Info", ""); + + createJsonValue("Tariffhead"); createJsonValue("Products"); createJsonValue("Accuracy"); createJsonValue("Type"); createJsonValue("Price"); createJsonValue("Config"); createJsonValue("TimeRanges"); - createJsonValue("Periods"); - createJsonValue("DayConfigs"); - createJsonValue("Days"); + //createJsonValue("Periods"); + //createJsonValue("DayConfigs"); + //createJsonValue("Days"); - m_jsonDoc.setArray(m_a); + m_jsonDoc.setObject(m_o); qCritical().noquote() << m_jsonDoc.toJson(QJsonDocument::JsonFormat::Indented); } void TariffCalculator::createJsonValue(QString const &key, QString const &value) { - if ((key.compare("Project", Qt::CaseInsensitive) == 0) - || (key.compare("Version", Qt::CaseInsensitive) == 0) - || (key.compare("Date", Qt::CaseInsensitive) == 0) - || (key.compare("Committer", Qt::CaseInsensitive) == 0) - || (key.compare("Info", Qt::CaseInsensitive) == 0)) { - m_a.push_back(QJsonValue({QPair(key, QJsonValue(value))})); + if (key.compare("Tariffhead", Qt::CaseInsensitive) == 0) { + QJsonObject o({ + QPair(QString("Project"), QJsonValue(QString("Szeged"))), + QPair(QString("Version"), QJsonValue(QString("1.0.0"))), + QPair(QString("Date"), QJsonValue("01.01.1970")), + QPair(QString("Committer"), QJsonValue("")), + QPair(QString("Info"), QJsonValue(QString("")))}); + m_o.insert(key, o); } else if (key.compare("Accuracy", Qt::CaseInsensitive) == 0) { QJsonObject o({ @@ -85,16 +82,14 @@ void TariffCalculator::createJsonValue(QString const &key, QString const &value) QPair(QString("accuracy_label"), QJsonValue(QString("computation-to-the-minute"))), QPair(QString("accuracy_value"), QJsonValue(1)), QPair(QString("comment"), QJsonValue(QString("accuracy of tariff computation is individual minutes")))}); - - m_a.push_back(QJsonObject({QPair(key, QJsonValue(o))})); + m_o.insert(key, o); } else if (key.compare("Type", Qt::CaseInsensitive) == 0) { QJsonObject o({ QPair(QString("type_id"), QJsonValue(1)), QPair(QString("type_label"), QJsonValue(QString("uniform-minutes"))), QPair(QString("comment"), QJsonValue(QString("same price for all minutes")))}); - - m_a.push_back(QJsonObject({QPair(key, QJsonValue(o))})); + m_o.insert(key, o); } else if (key.compare("Price", Qt::CaseInsensitive) == 0) { QJsonObject o1({ @@ -113,7 +108,7 @@ void TariffCalculator::createJsonValue(QString const &key, QString const &value) a.push_back(o1); a.push_back(o2); - m_a.push_back(QJsonObject({QPair(key, QJsonValue(a))})); + m_o.insert(key, a); } else if (key.compare("Config", Qt::CaseInsensitive) == 0) { QJsonObject o1({ @@ -147,7 +142,7 @@ void TariffCalculator::createJsonValue(QString const &key, QString const &value) QPair(QString("MinimalPrice"), QJsonValue(o3)), QPair(QString("MinimalPrice"), QJsonValue(o4))}); - m_a.push_back(QJsonObject({QPair(key, QJsonValue(o5))})); + m_o.insert(key, o5); } else if (key.compare("Products", Qt::CaseInsensitive) == 0) { QJsonObject o1({ @@ -165,7 +160,7 @@ void TariffCalculator::createJsonValue(QString const &key, QString const &value) a.push_back(o1); a.push_back(o2); - m_a.push_back(QJsonObject({QPair(key, QJsonValue(a))})); + m_o.insert(key, a); } else if (key.compare("TimeRanges", Qt::CaseInsensitive) == 0) { QJsonObject o1({ @@ -219,7 +214,7 @@ void TariffCalculator::createJsonValue(QString const &key, QString const &value) } a.push_back(b); - m_a.push_back(QJsonObject({QPair(key, QJsonValue(a))})); + m_o.insert(key, a); } else if (key.compare("Periods", Qt::CaseInsensitive) == 0) { QJsonObject o1({ @@ -266,7 +261,7 @@ void TariffCalculator::createJsonValue(QString const &key, QString const &value) a.push_back(o5); a.push_back(o6); - m_a.push_back(QJsonObject({QPair(key, QJsonValue(a))})); + m_o.insert(key, a); } else if (key.compare("DayConfigs", Qt::CaseInsensitive) == 0) { @@ -301,7 +296,7 @@ void TariffCalculator::createJsonValue(QString const &key, QString const &value) a.push_back(o2); a.push_back(o4); - m_a.push_back(QJsonObject({QPair(key, QJsonValue(a))})); + m_o.insert(key, a); } else if (key.compare("Days", Qt::CaseInsensitive) == 0) { QJsonArray b; @@ -373,7 +368,8 @@ void TariffCalculator::createJsonValue(QString const &key, QString const &value) // "day_moveable": false //} - m_a.push_back(QJsonObject({QPair(key, QJsonValue(o3))})); + //m_a.push_back(QJsonObject({QPair(key, QJsonValue(o3))})); + m_o.insert(key, o3); } #if 0 diff --git a/CalculatorCInterface/tariff_calculator.h b/CalculatorCInterface/tariff_calculator.h index 6bd1b6c..0979874 100644 --- a/CalculatorCInterface/tariff_calculator.h +++ b/CalculatorCInterface/tariff_calculator.h @@ -6,9 +6,12 @@ #include #include +#include + +#include class TariffCalculator { - QJsonArray m_a; + QJsonObject m_o; QJsonDocument m_jsonDoc; void createJsonValue(QString const &key, QString const &value = ""); public: