From 119f722a3a3a342f8670791090a6cf0f8a21e69b Mon Sep 17 00:00:00 2001 From: AntonMrt Date: Sun, 22 Feb 2026 21:45:41 +0300 Subject: [PATCH 1/8] fixes --- array_core/array_core.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/array_core/array_core.h b/array_core/array_core.h index d10b7c2..a166c18 100644 --- a/array_core/array_core.h +++ b/array_core/array_core.h @@ -225,7 +225,7 @@ template bool show(C const& container_of_containers, const string& htmlPageName, const Config& configuration) { vector> vecVecDbl; vecVecDbl.reserve(container_of_containers.size()); - for (auto row : container_of_containers) { + for (const auto& row : container_of_containers) { vector dblRow = dvs::vecFromTemplate(row); vecVecDbl.emplace_back(dblRow); } @@ -245,7 +245,7 @@ bool show(C const& container_of_containers, const string& htmlPageName, const Co yVals = vecVecDbl[1]; } else if (size2 == 2) { xVals.reserve(size1); - for (int i = 0; i < size1; ++i) { + for (size_t i = 0; i < size1; ++i) { xVals.emplace_back(vecVecDbl[i][0]); yVals.emplace_back(vecVecDbl[i][1]); } @@ -267,7 +267,7 @@ template bool save(C const& container_of_containers, const string& filename, const configSaveToDisk& configuration) { vector> vecVec; vecVec.reserve(container_of_containers.size()); - for (auto row : container_of_containers) { + for (const auto& row : container_of_containers) { vector rowTemp = dvs::vecFromTemplate(row); vecVec.emplace_back(rowTemp); } From 74aaabc5eeefb025c0770df9a6b000fd153c7558 Mon Sep 17 00:00:00 2001 From: AntonMrt Date: Sun, 22 Feb 2026 22:33:46 +0300 Subject: [PATCH 2/8] refactoring --- array_core/array_core.h | 49 ++++++++++----------- common_utils/common_utils.h | 31 +++++++++++++- davis_one/davis.h | 85 ++++++++++++++++++++++++------------- 3 files changed, 108 insertions(+), 57 deletions(-) diff --git a/array_core/array_core.h b/array_core/array_core.h index a166c18..7e9ac81 100644 --- a/array_core/array_core.h +++ b/array_core/array_core.h @@ -10,6 +10,7 @@ #include "configurator.h" #include "multi_plot.h" + namespace dv { //#START_GRAB_TO_DV_NAMESPACE @@ -86,12 +87,12 @@ bool save(C const& container_of_containers, const string& filename, const config template bool show(T** data, uint64_t arrRows, uint64_t arrCols, const string& htmlPageName, const Config& configuration) { - vector> vecVecDbl; - vecVecDbl.reserve(arrRows); - for (uint64_t i = 0; i < arrRows; ++i) { - vector dblRow(&data[i][0], &data[i][0] + arrCols); - vecVecDbl.emplace_back(dblRow); - } + if (data == nullptr || arrRows == 0 || arrCols == 0) + return false; + + std::vector> vecVecDbl = + dvs::makeVecVecFromRowPtr(data, arrRows, arrCols); + bool res = false; if (configuration.typeVisual == VISUALTYPE_AUTO || configuration.typeVisual == VISUALTYPE_HEATMAP) { @@ -102,24 +103,19 @@ bool show(T** data, uint64_t arrRows, uint64_t arrCols, const string& htmlPageNa template bool save(T** data, uint64_t arrRows, uint64_t arrCols, const std::string& filename, const configSaveToDisk& configuration) { - vector> vecVec; - vecVec.reserve(arrRows); - for (uint64_t i = 0; i < arrRows; ++i) { - vector row(&data[i][0], &data[i][0] + arrCols); - vecVec.emplace_back(row); - } + if (data == nullptr || arrRows == 0 || arrCols == 0) + return false; + std::vector> vecVec = + dvs::makeVecVecFromRowPtr(data, arrRows, arrCols); bool res = dvs::saveVecVec(vecVec, filename, configuration); return res; } template bool show(const T* data, uint64_t arrRows, uint64_t arrCols, const string& htmlPageName, const Config& configuration) { - vector> vecVecDbl; - vecVecDbl.reserve(arrRows); - for (uint64_t i = 0; i < arrRows; ++i) { - vector dblRow(&data[i * arrCols], &data[i * arrCols] + arrCols); - vecVecDbl.emplace_back(dblRow); - } + if (data == nullptr || arrRows == 0 || arrCols == 0) + return false; + std::vector> vecVecDbl = dvs::makeVecVecFromFlat(data, arrRows, arrCols); bool res = false; if (configuration.typeVisual == VISUALTYPE_AUTO || configuration.typeVisual == VISUALTYPE_HEATMAP) { @@ -131,19 +127,18 @@ bool show(const T* data, uint64_t arrRows, uint64_t arrCols, const string& htmlP template bool save(const T* data, uint64_t arrRows, uint64_t arrCols, const string& filename, const configSaveToDisk& configuration) { - vector> vecVec; - vecVec.reserve(arrRows); - for (uint64_t i = 0; i < arrRows; ++i) { - vector row(&data[i * arrCols], &data[i * arrCols] + arrCols); - vecVec.emplace_back(row); - } + if (data == nullptr || arrRows == 0 || arrCols == 0) + return false; + std::vector> vecVec = dvs::makeVecVecFromFlat(data, arrRows, arrCols); bool res = dvs::saveVecVec(vecVec, filename, configuration); return res; } template bool show(const T* data, uint64_t count, const string& htmlPageName, const Config& configuration) { - vector dblRow(data, data + count); + if (data == nullptr || count == 0) + return false; + std::vector dblRow = dvs::makeVecFrom1D(data, count); bool res = false; if (configuration.typeVisual == VISUALTYPE_AUTO || configuration.typeVisual == VISUALTYPE_CHART) { @@ -159,7 +154,9 @@ bool show(const T* data, uint64_t count, const string& htmlPageName, const Confi template bool save(const T* data, uint64_t count, const string& filename, const configSaveToDisk& configuration) { - vector row(data, data + count); + if (data == nullptr || count == 0) + return false; + std::vector row = dvs::makeVecFrom1D(data, count); bool res = dvs::saveVec(row, filename, configuration); return res; } diff --git a/common_utils/common_utils.h b/common_utils/common_utils.h index 473e00e..6493a7a 100644 --- a/common_utils/common_utils.h +++ b/common_utils/common_utils.h @@ -161,9 +161,38 @@ std::vector vecFromTemplate(const C& container) { return vec; } +template +inline std::vector> makeVecVecFromRowPtr(const T* const* data, + uint64_t rows, +uint64_t cols) { + std::vector> res; + res.reserve(rows); + for (uint64_t i = 0; i < rows; ++i) { + const T* rowPtr = data[i]; + res.emplace_back(rowPtr, rowPtr + cols); + } + return res; +} -bool is_string_convertable_to_digit(const string& sample); +template +inline std::vector> makeVecVecFromFlat(const T* data, + uint64_t rows, +uint64_t cols) { + std::vector> res; + res.reserve(rows); + for (uint64_t i = 0; i < rows; ++i) { + const T* rowPtr = data + i * cols; + res.emplace_back(rowPtr, rowPtr + cols); + } + return res; +} +template +inline std::vector makeVecFrom1D(const T* data, uint64_t count) { + return std::vector(data, data + count); +} + +bool is_string_convertable_to_digit(const string& sample); void transponeMatrix(std::vector>& matrix); diff --git a/davis_one/davis.h b/davis_one/davis.h index c3990e9..3db3043 100644 --- a/davis_one/davis.h +++ b/davis_one/davis.h @@ -376,9 +376,38 @@ std::vector vecFromTemplate(const C& container) { return vec; } +template +inline std::vector> makeVecVecFromRowPtr(const T* const* data, + uint64_t rows, +uint64_t cols) { + std::vector> res; + res.reserve(rows); + for (uint64_t i = 0; i < rows; ++i) { + const T* rowPtr = data[i]; + res.emplace_back(rowPtr, rowPtr + cols); + } + return res; +} -bool is_string_convertable_to_digit(const string& sample); +template +inline std::vector> makeVecVecFromFlat(const T* data, + uint64_t rows, +uint64_t cols) { + std::vector> res; + res.reserve(rows); + for (uint64_t i = 0; i < rows; ++i) { + const T* rowPtr = data + i * cols; + res.emplace_back(rowPtr, rowPtr + cols); + } + return res; +} + +template +inline std::vector makeVecFrom1D(const T* data, uint64_t count) { + return std::vector(data, data + count); +} +bool is_string_convertable_to_digit(const string& sample); void transponeMatrix(std::vector>& matrix); @@ -572,12 +601,12 @@ bool save(C const& container_of_containers, const string& filename, const config template bool show(T** data, uint64_t arrRows, uint64_t arrCols, const string& htmlPageName, const Config& configuration) { - vector> vecVecDbl; - vecVecDbl.reserve(arrRows); - for (uint64_t i = 0; i < arrRows; ++i) { - vector dblRow(&data[i][0], &data[i][0] + arrCols); - vecVecDbl.emplace_back(dblRow); - } + if (data == nullptr || arrRows == 0 || arrCols == 0) + return false; + + std::vector> vecVecDbl = + dvs::makeVecVecFromRowPtr(data, arrRows, arrCols); + bool res = false; if (configuration.typeVisual == VISUALTYPE_AUTO || configuration.typeVisual == VISUALTYPE_HEATMAP) { @@ -588,24 +617,19 @@ bool show(T** data, uint64_t arrRows, uint64_t arrCols, const string& htmlPageNa template bool save(T** data, uint64_t arrRows, uint64_t arrCols, const std::string& filename, const configSaveToDisk& configuration) { - vector> vecVec; - vecVec.reserve(arrRows); - for (uint64_t i = 0; i < arrRows; ++i) { - vector row(&data[i][0], &data[i][0] + arrCols); - vecVec.emplace_back(row); - } + if (data == nullptr || arrRows == 0 || arrCols == 0) + return false; + std::vector> vecVec = + dvs::makeVecVecFromRowPtr(data, arrRows, arrCols); bool res = dvs::saveVecVec(vecVec, filename, configuration); return res; } template bool show(const T* data, uint64_t arrRows, uint64_t arrCols, const string& htmlPageName, const Config& configuration) { - vector> vecVecDbl; - vecVecDbl.reserve(arrRows); - for (uint64_t i = 0; i < arrRows; ++i) { - vector dblRow(&data[i * arrCols], &data[i * arrCols] + arrCols); - vecVecDbl.emplace_back(dblRow); - } + if (data == nullptr || arrRows == 0 || arrCols == 0) + return false; + std::vector> vecVecDbl = dvs::makeVecVecFromFlat(data, arrRows, arrCols); bool res = false; if (configuration.typeVisual == VISUALTYPE_AUTO || configuration.typeVisual == VISUALTYPE_HEATMAP) { @@ -617,19 +641,18 @@ bool show(const T* data, uint64_t arrRows, uint64_t arrCols, const string& htmlP template bool save(const T* data, uint64_t arrRows, uint64_t arrCols, const string& filename, const configSaveToDisk& configuration) { - vector> vecVec; - vecVec.reserve(arrRows); - for (uint64_t i = 0; i < arrRows; ++i) { - vector row(&data[i * arrCols], &data[i * arrCols] + arrCols); - vecVec.emplace_back(row); - } + if (data == nullptr || arrRows == 0 || arrCols == 0) + return false; + std::vector> vecVec = dvs::makeVecVecFromFlat(data, arrRows, arrCols); bool res = dvs::saveVecVec(vecVec, filename, configuration); return res; } template bool show(const T* data, uint64_t count, const string& htmlPageName, const Config& configuration) { - vector dblRow(data, data + count); + if (data == nullptr || count == 0) + return false; + std::vector dblRow = dvs::makeVecFrom1D(data, count); bool res = false; if (configuration.typeVisual == VISUALTYPE_AUTO || configuration.typeVisual == VISUALTYPE_CHART) { @@ -645,7 +668,9 @@ bool show(const T* data, uint64_t count, const string& htmlPageName, const Confi template bool save(const T* data, uint64_t count, const string& filename, const configSaveToDisk& configuration) { - vector row(data, data + count); + if (data == nullptr || count == 0) + return false; + std::vector row = dvs::makeVecFrom1D(data, count); bool res = dvs::saveVec(row, filename, configuration); return res; } @@ -711,7 +736,7 @@ template bool show(C const& container_of_containers, const string& htmlPageName, const Config& configuration) { vector> vecVecDbl; vecVecDbl.reserve(container_of_containers.size()); - for (auto row : container_of_containers) { + for (const auto& row : container_of_containers) { vector dblRow = dvs::vecFromTemplate(row); vecVecDbl.emplace_back(dblRow); } @@ -731,7 +756,7 @@ bool show(C const& container_of_containers, const string& htmlPageName, const Co yVals = vecVecDbl[1]; } else if (size2 == 2) { xVals.reserve(size1); - for (int i = 0; i < size1; ++i) { + for (size_t i = 0; i < size1; ++i) { xVals.emplace_back(vecVecDbl[i][0]); yVals.emplace_back(vecVecDbl[i][1]); } @@ -753,7 +778,7 @@ template bool save(C const& container_of_containers, const string& filename, const configSaveToDisk& configuration) { vector> vecVec; vecVec.reserve(container_of_containers.size()); - for (auto row : container_of_containers) { + for (const auto& row : container_of_containers) { vector rowTemp = dvs::vecFromTemplate(row); vecVec.emplace_back(rowTemp); } From e7df643617ce172c10120cf1e0a6f0674d99da08 Mon Sep 17 00:00:00 2001 From: AntonMrt Date: Sun, 22 Feb 2026 22:48:23 +0300 Subject: [PATCH 3/8] vector renaming --- array_core/array_core.h | 26 +++++++++++++------------- common_utils/common_utils.h | 2 +- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/array_core/array_core.h b/array_core/array_core.h index 7e9ac81..d016c25 100644 --- a/array_core/array_core.h +++ b/array_core/array_core.h @@ -163,7 +163,7 @@ bool save(const T* data, uint64_t count, const string& filename, const configSav template bool show(C const& container, const string& htmlPageName, const Config& configuration) { - vector dblRow = dvs::vecFromTemplate(container); + std::vector dblRow = dvs::vecFromTemplate(container); bool res = false; if (configuration.typeVisual == VISUALTYPE_AUTO || configuration.typeVisual == VISUALTYPE_CHART) { @@ -179,7 +179,7 @@ bool show(C const& container, const string& htmlPageName, const Config& configur template bool save(C const& container, const string& filename, const configSaveToDisk& configuration) { - vector row = dvs::vecFromTemplate(container); + std::vector row = dvs::vecFromTemplate(container); bool res = dvs::saveVec(row, filename, configuration); return res; } @@ -189,8 +189,8 @@ bool show(C const& containerX, C const& containerY, const string& htmlPageName, if (containerX.size() != containerY.size()) { return false; } - vector dblRowX = dvs::vecFromTemplate(containerX); - vector dblRowY = dvs::vecFromTemplate(containerY); + std::vector dblRowX = dvs::vecFromTemplate(containerX); + std::vector dblRowY = dvs::vecFromTemplate(containerY); bool res = false; if (!dvs::isHold) { @@ -207,9 +207,9 @@ bool save(C const& containerX, C const& containerY, const string& filename, con if (containerX.size() != containerY.size()) { return false; } - vector rowX = dvs::vecFromTemplate(containerX); - vector rowY = dvs::vecFromTemplate(containerY); - vector> vecVec; + std::vector rowX = dvs::vecFromTemplate(containerX); + std::vector rowY = dvs::vecFromTemplate(containerY); + std::vector> vecVec; vecVec.emplace_back(rowX); vecVec.emplace_back(rowY); configSaveToDisk newConf = configuration; @@ -220,10 +220,10 @@ bool save(C const& containerX, C const& containerY, const string& filename, con template bool show(C const& container_of_containers, const string& htmlPageName, const Config& configuration) { - vector> vecVecDbl; + std::vector> vecVecDbl; vecVecDbl.reserve(container_of_containers.size()); for (const auto& row : container_of_containers) { - vector dblRow = dvs::vecFromTemplate(row); + std::vector dblRow = dvs::vecFromTemplate(row); vecVecDbl.emplace_back(dblRow); } bool res = false; @@ -235,8 +235,8 @@ bool show(C const& container_of_containers, const string& htmlPageName, const Co if ((configuration.typeVisual == VISUALTYPE_AUTO || //case when we want to plot graph with X and Y vectors configuration.typeVisual == VISUALTYPE_CHART) && (size1 == 2 || size2 == 2)) { // it can be or 2-columns-data or 2-rows-data - vector xVals; - vector yVals; + std::vector xVals; + std::vector yVals; if (size1 == 2) { xVals = vecVecDbl[0]; yVals = vecVecDbl[1]; @@ -262,10 +262,10 @@ bool show(C const& container_of_containers, const string& htmlPageName, const Co template bool save(C const& container_of_containers, const string& filename, const configSaveToDisk& configuration) { - vector> vecVec; + std::vector> vecVec; vecVec.reserve(container_of_containers.size()); for (const auto& row : container_of_containers) { - vector rowTemp = dvs::vecFromTemplate(row); + std::vector rowTemp = dvs::vecFromTemplate(row); vecVec.emplace_back(rowTemp); } bool res = dvs::saveVecVec(vecVec, filename, configuration); diff --git a/common_utils/common_utils.h b/common_utils/common_utils.h index 6493a7a..c118f94 100644 --- a/common_utils/common_utils.h +++ b/common_utils/common_utils.h @@ -162,7 +162,7 @@ std::vector vecFromTemplate(const C& container) { } template -inline std::vector> makeVecVecFromRowPtr(const T* const* data, +inline std::vector> makeVecVecFromRowPtr(const T* const* data, uint64_t rows, uint64_t cols) { std::vector> res; From 771b8d5bf39127dabbe842cff2e9634da7156571 Mon Sep 17 00:00:00 2001 From: AntonMrt Date: Sun, 22 Feb 2026 23:22:41 +0300 Subject: [PATCH 4/8] bugfixes --- array_core/array_core.h | 14 +++---- common_utils/common_utils.h | 36 ++++++++++++------ davis_one/davis.h | 76 +++++++++++++++++++++---------------- 3 files changed, 75 insertions(+), 51 deletions(-) diff --git a/array_core/array_core.h b/array_core/array_core.h index d016c25..4cf47a4 100644 --- a/array_core/array_core.h +++ b/array_core/array_core.h @@ -90,8 +90,8 @@ bool show(T** data, uint64_t arrRows, uint64_t arrCols, const string& htmlPageNa if (data == nullptr || arrRows == 0 || arrCols == 0) return false; - std::vector> vecVecDbl = - dvs::makeVecVecFromRowPtr(data, arrRows, arrCols); + std::vector> vecVecDbl = + dvs::makeVecVecFromRowPtr(data, arrRows, arrCols); bool res = false; if (configuration.typeVisual == VISUALTYPE_AUTO || @@ -106,7 +106,7 @@ bool save(T** data, uint64_t arrRows, uint64_t arrCols, const std::string& filen if (data == nullptr || arrRows == 0 || arrCols == 0) return false; std::vector> vecVec = - dvs::makeVecVecFromRowPtr(data, arrRows, arrCols); + dvs::makeVecVecFromRowPtr(data, arrRows, arrCols); bool res = dvs::saveVecVec(vecVec, filename, configuration); return res; } @@ -115,7 +115,7 @@ template bool show(const T* data, uint64_t arrRows, uint64_t arrCols, const string& htmlPageName, const Config& configuration) { if (data == nullptr || arrRows == 0 || arrCols == 0) return false; - std::vector> vecVecDbl = dvs::makeVecVecFromFlat(data, arrRows, arrCols); + std::vector> vecVecDbl = dvs::makeVecVecFromFlat(data, arrRows, arrCols); bool res = false; if (configuration.typeVisual == VISUALTYPE_AUTO || configuration.typeVisual == VISUALTYPE_HEATMAP) { @@ -129,7 +129,7 @@ bool save(const T* data, uint64_t arrRows, uint64_t arrCols, const string& filen const configSaveToDisk& configuration) { if (data == nullptr || arrRows == 0 || arrCols == 0) return false; - std::vector> vecVec = dvs::makeVecVecFromFlat(data, arrRows, arrCols); + std::vector> vecVec = dvs::makeVecVecFromFlat(data, arrRows, arrCols); bool res = dvs::saveVecVec(vecVec, filename, configuration); return res; } @@ -138,7 +138,7 @@ template bool show(const T* data, uint64_t count, const string& htmlPageName, const Config& configuration) { if (data == nullptr || count == 0) return false; - std::vector dblRow = dvs::makeVecFrom1D(data, count); + std::vector dblRow = dvs::makeVecFrom1D(data, count); bool res = false; if (configuration.typeVisual == VISUALTYPE_AUTO || configuration.typeVisual == VISUALTYPE_CHART) { @@ -156,7 +156,7 @@ template bool save(const T* data, uint64_t count, const string& filename, const configSaveToDisk& configuration) { if (data == nullptr || count == 0) return false; - std::vector row = dvs::makeVecFrom1D(data, count); + std::vector row = dvs::makeVecFrom1D(data, count); bool res = dvs::saveVec(row, filename, configuration); return res; } diff --git a/common_utils/common_utils.h b/common_utils/common_utils.h index c118f94..4b60ce7 100644 --- a/common_utils/common_utils.h +++ b/common_utils/common_utils.h @@ -161,35 +161,47 @@ std::vector vecFromTemplate(const C& container) { return vec; } -template -inline std::vector> makeVecVecFromRowPtr(const T* const* data, - uint64_t rows, +template +inline std::vector> makeVecVecFromRowPtr(const T* const* data, + uint64_t rows, uint64_t cols) { - std::vector> res; + std::vector> res; res.reserve(rows); for (uint64_t i = 0; i < rows; ++i) { const T* rowPtr = data[i]; - res.emplace_back(rowPtr, rowPtr + cols); + std::vector row; + row.reserve(cols); + for (uint64_t j = 0; j < cols; ++j) + row.push_back(static_cast(rowPtr[j])); + res.emplace_back(std::move(row)); } return res; } -template -inline std::vector> makeVecVecFromFlat(const T* data, +template +inline std::vector> makeVecVecFromFlat(const T* data, uint64_t rows, uint64_t cols) { - std::vector> res; + std::vector> res; res.reserve(rows); for (uint64_t i = 0; i < rows; ++i) { const T* rowPtr = data + i * cols; - res.emplace_back(rowPtr, rowPtr + cols); + std::vector row; + row.reserve(cols); + for (uint64_t j = 0; j < cols; ++j) + row.push_back(static_cast(rowPtr[j])); + res.emplace_back(std::move(row)); } return res; } -template -inline std::vector makeVecFrom1D(const T* data, uint64_t count) { - return std::vector(data, data + count); +template +inline std::vector makeVecFrom1D(const T* data, uint64_t count) { + std::vector res; + res.reserve(static_cast(count)); + for (uint64_t i = 0; i < count; ++i) + res.push_back(static_cast(data[i])); + return res; } bool is_string_convertable_to_digit(const string& sample); diff --git a/davis_one/davis.h b/davis_one/davis.h index 3db3043..2801691 100644 --- a/davis_one/davis.h +++ b/davis_one/davis.h @@ -376,35 +376,47 @@ std::vector vecFromTemplate(const C& container) { return vec; } -template -inline std::vector> makeVecVecFromRowPtr(const T* const* data, - uint64_t rows, +template +inline std::vector> makeVecVecFromRowPtr(const T* const* data, + uint64_t rows, uint64_t cols) { - std::vector> res; + std::vector> res; res.reserve(rows); for (uint64_t i = 0; i < rows; ++i) { const T* rowPtr = data[i]; - res.emplace_back(rowPtr, rowPtr + cols); + std::vector row; + row.reserve(cols); + for (uint64_t j = 0; j < cols; ++j) + row.push_back(static_cast(rowPtr[j])); + res.emplace_back(std::move(row)); } return res; } -template -inline std::vector> makeVecVecFromFlat(const T* data, +template +inline std::vector> makeVecVecFromFlat(const T* data, uint64_t rows, uint64_t cols) { - std::vector> res; + std::vector> res; res.reserve(rows); for (uint64_t i = 0; i < rows; ++i) { const T* rowPtr = data + i * cols; - res.emplace_back(rowPtr, rowPtr + cols); + std::vector row; + row.reserve(cols); + for (uint64_t j = 0; j < cols; ++j) + row.push_back(static_cast(rowPtr[j])); + res.emplace_back(std::move(row)); } return res; } -template -inline std::vector makeVecFrom1D(const T* data, uint64_t count) { - return std::vector(data, data + count); +template +inline std::vector makeVecFrom1D(const T* data, uint64_t count) { + std::vector res; + res.reserve(static_cast(count)); + for (uint64_t i = 0; i < count; ++i) + res.push_back(static_cast(data[i])); + return res; } bool is_string_convertable_to_digit(const string& sample); @@ -604,8 +616,8 @@ bool show(T** data, uint64_t arrRows, uint64_t arrCols, const string& htmlPageNa if (data == nullptr || arrRows == 0 || arrCols == 0) return false; - std::vector> vecVecDbl = - dvs::makeVecVecFromRowPtr(data, arrRows, arrCols); + std::vector> vecVecDbl = + dvs::makeVecVecFromRowPtr(data, arrRows, arrCols); bool res = false; if (configuration.typeVisual == VISUALTYPE_AUTO || @@ -620,7 +632,7 @@ bool save(T** data, uint64_t arrRows, uint64_t arrCols, const std::string& filen if (data == nullptr || arrRows == 0 || arrCols == 0) return false; std::vector> vecVec = - dvs::makeVecVecFromRowPtr(data, arrRows, arrCols); + dvs::makeVecVecFromRowPtr(data, arrRows, arrCols); bool res = dvs::saveVecVec(vecVec, filename, configuration); return res; } @@ -629,7 +641,7 @@ template bool show(const T* data, uint64_t arrRows, uint64_t arrCols, const string& htmlPageName, const Config& configuration) { if (data == nullptr || arrRows == 0 || arrCols == 0) return false; - std::vector> vecVecDbl = dvs::makeVecVecFromFlat(data, arrRows, arrCols); + std::vector> vecVecDbl = dvs::makeVecVecFromFlat(data, arrRows, arrCols); bool res = false; if (configuration.typeVisual == VISUALTYPE_AUTO || configuration.typeVisual == VISUALTYPE_HEATMAP) { @@ -643,7 +655,7 @@ bool save(const T* data, uint64_t arrRows, uint64_t arrCols, const string& filen const configSaveToDisk& configuration) { if (data == nullptr || arrRows == 0 || arrCols == 0) return false; - std::vector> vecVec = dvs::makeVecVecFromFlat(data, arrRows, arrCols); + std::vector> vecVec = dvs::makeVecVecFromFlat(data, arrRows, arrCols); bool res = dvs::saveVecVec(vecVec, filename, configuration); return res; } @@ -652,7 +664,7 @@ template bool show(const T* data, uint64_t count, const string& htmlPageName, const Config& configuration) { if (data == nullptr || count == 0) return false; - std::vector dblRow = dvs::makeVecFrom1D(data, count); + std::vector dblRow = dvs::makeVecFrom1D(data, count); bool res = false; if (configuration.typeVisual == VISUALTYPE_AUTO || configuration.typeVisual == VISUALTYPE_CHART) { @@ -670,14 +682,14 @@ template bool save(const T* data, uint64_t count, const string& filename, const configSaveToDisk& configuration) { if (data == nullptr || count == 0) return false; - std::vector row = dvs::makeVecFrom1D(data, count); + std::vector row = dvs::makeVecFrom1D(data, count); bool res = dvs::saveVec(row, filename, configuration); return res; } template bool show(C const& container, const string& htmlPageName, const Config& configuration) { - vector dblRow = dvs::vecFromTemplate(container); + std::vector dblRow = dvs::vecFromTemplate(container); bool res = false; if (configuration.typeVisual == VISUALTYPE_AUTO || configuration.typeVisual == VISUALTYPE_CHART) { @@ -693,7 +705,7 @@ bool show(C const& container, const string& htmlPageName, const Config& configur template bool save(C const& container, const string& filename, const configSaveToDisk& configuration) { - vector row = dvs::vecFromTemplate(container); + std::vector row = dvs::vecFromTemplate(container); bool res = dvs::saveVec(row, filename, configuration); return res; } @@ -703,8 +715,8 @@ bool show(C const& containerX, C const& containerY, const string& htmlPageName, if (containerX.size() != containerY.size()) { return false; } - vector dblRowX = dvs::vecFromTemplate(containerX); - vector dblRowY = dvs::vecFromTemplate(containerY); + std::vector dblRowX = dvs::vecFromTemplate(containerX); + std::vector dblRowY = dvs::vecFromTemplate(containerY); bool res = false; if (!dvs::isHold) { @@ -721,9 +733,9 @@ bool save(C const& containerX, C const& containerY, const string& filename, con if (containerX.size() != containerY.size()) { return false; } - vector rowX = dvs::vecFromTemplate(containerX); - vector rowY = dvs::vecFromTemplate(containerY); - vector> vecVec; + std::vector rowX = dvs::vecFromTemplate(containerX); + std::vector rowY = dvs::vecFromTemplate(containerY); + std::vector> vecVec; vecVec.emplace_back(rowX); vecVec.emplace_back(rowY); configSaveToDisk newConf = configuration; @@ -734,10 +746,10 @@ bool save(C const& containerX, C const& containerY, const string& filename, con template bool show(C const& container_of_containers, const string& htmlPageName, const Config& configuration) { - vector> vecVecDbl; + std::vector> vecVecDbl; vecVecDbl.reserve(container_of_containers.size()); for (const auto& row : container_of_containers) { - vector dblRow = dvs::vecFromTemplate(row); + std::vector dblRow = dvs::vecFromTemplate(row); vecVecDbl.emplace_back(dblRow); } bool res = false; @@ -749,8 +761,8 @@ bool show(C const& container_of_containers, const string& htmlPageName, const Co if ((configuration.typeVisual == VISUALTYPE_AUTO || //case when we want to plot graph with X and Y vectors configuration.typeVisual == VISUALTYPE_CHART) && (size1 == 2 || size2 == 2)) { // it can be or 2-columns-data or 2-rows-data - vector xVals; - vector yVals; + std::vector xVals; + std::vector yVals; if (size1 == 2) { xVals = vecVecDbl[0]; yVals = vecVecDbl[1]; @@ -776,10 +788,10 @@ bool show(C const& container_of_containers, const string& htmlPageName, const Co template bool save(C const& container_of_containers, const string& filename, const configSaveToDisk& configuration) { - vector> vecVec; + std::vector> vecVec; vecVec.reserve(container_of_containers.size()); for (const auto& row : container_of_containers) { - vector rowTemp = dvs::vecFromTemplate(row); + std::vector rowTemp = dvs::vecFromTemplate(row); vecVec.emplace_back(rowTemp); } bool res = dvs::saveVecVec(vecVec, filename, configuration); From 351b230d802696b9c9f3017946aa337445507fb8 Mon Sep 17 00:00:00 2001 From: AntonMrt Date: Sun, 22 Feb 2026 23:25:24 +0300 Subject: [PATCH 5/8] string to std string --- array_core/array_core.h | 49 +++++++++++++++++++---------------------- 1 file changed, 23 insertions(+), 26 deletions(-) diff --git a/array_core/array_core.h b/array_core/array_core.h index 4cf47a4..bb4c3d7 100644 --- a/array_core/array_core.h +++ b/array_core/array_core.h @@ -14,57 +14,54 @@ namespace dv { //#START_GRAB_TO_DV_NAMESPACE -using std::vector; -using std::string; - //! (matrix) 2-dimensional array template bool show(T** data, uint64_t arrRows, uint64_t arrCols, - const string& htmlPageName = dvs::makeUniqueDavisHtmlName(), const Config& configuration = Config()); + const std::string& htmlPageName = dvs::makeUniqueDavisHtmlName(), const Config& configuration = Config()); template -bool save(T** data, uint64_t arrRows, uint64_t arrCols, const string& filename, +bool save(T** data, uint64_t arrRows, uint64_t arrCols, const std::string& filename, const configSaveToDisk& configuration = configSaveToDisk()); //! (matrix) 1-dimensional array that simulates a 2-dimensional one (element access [i*cols+j]) template bool show(const T* data, uint64_t arrRows, uint64_t arrCols, - const string& htmlPageName = dvs::makeUniqueDavisHtmlName(), const Config& configuration = Config()); + const std::string& htmlPageName = dvs::makeUniqueDavisHtmlName(), const Config& configuration = Config()); template -bool save(const T* data, uint64_t arrRows, uint64_t arrCols, const string& filename, +bool save(const T* data, uint64_t arrRows, uint64_t arrCols, const std::string& filename, const configSaveToDisk& configuration = configSaveToDisk()); //! (chart) 1-dimensional array template -bool show(const T* data, uint64_t count, const string& htmlPageName = dvs::makeUniqueDavisHtmlName(), const Config& configuration = Config()); +bool show(const T* data, uint64_t count, const std::string& htmlPageName = dvs::makeUniqueDavisHtmlName(), const Config& configuration = Config()); template -bool save(const T* data, uint64_t count, const string& filename, const configSaveToDisk& configuration = configSaveToDisk()); +bool save(const T* data, uint64_t count, const std::string& filename, const configSaveToDisk& configuration = configSaveToDisk()); //! +(chart) 1-dimensional container template()))>::type, typename Enable = typename std::enable_if::value>::type> -bool show(C const& container, const string& htmlPageName = dvs::makeUniqueDavisHtmlName(), const Config& configuration = Config()); +bool show(C const& container, const std::string& htmlPageName = dvs::makeUniqueDavisHtmlName(), const Config& configuration = Config()); template()))>::type, typename Enable = typename std::enable_if::value>::type> -bool save(C const& container, const string& filename, const configSaveToDisk& configuration = configSaveToDisk()); +bool save(C const& container, const std::string& filename, const configSaveToDisk& configuration = configSaveToDisk()); //! +(chart) Two 1-dimensional container for X-Y plot template()))>::type, typename Enable = typename std::enable_if::value>::type> -bool show(C const& containerX, C const& containerY, const string& htmlPageName = dvs::makeUniqueDavisHtmlName(), const Config& configuration = Config()); +bool show(C const& containerX, C const& containerY, const std::string& htmlPageName = dvs::makeUniqueDavisHtmlName(), const Config& configuration = Config()); template()))>::type, typename Enable = typename std::enable_if::value>::type> -bool save(C const& containerX, C const& containerY, const string& filename, const configSaveToDisk& configuration = configSaveToDisk()); +bool save(C const& containerX, C const& containerY, const std::string& filename, const configSaveToDisk& configuration = configSaveToDisk()); //! (chart / matrix) 2-dimensional container @@ -72,13 +69,13 @@ template()))>::type, typename T = typename std::decay()))>::type, typename Enable = typename std::enable_if::value>::type> -bool show(C const& container_of_containers, const string& htmlPageName = dvs::makeUniqueDavisHtmlName(), const Config& configuration = Config()); +bool show(C const& container_of_containers, const std::string& htmlPageName = dvs::makeUniqueDavisHtmlName(), const Config& configuration = Config()); template()))>::type, typename T = typename std::decay()))>::type, typename Enable = typename std::enable_if::value>::type> -bool save(C const& container_of_containers, const string& filename, const configSaveToDisk& configuration = configSaveToDisk()); +bool save(C const& container_of_containers, const std::string& filename, const configSaveToDisk& configuration = configSaveToDisk()); // *********************************** @@ -86,7 +83,7 @@ bool save(C const& container_of_containers, const string& filename, const config // *********************************** template -bool show(T** data, uint64_t arrRows, uint64_t arrCols, const string& htmlPageName, const Config& configuration) { +bool show(T** data, uint64_t arrRows, uint64_t arrCols, const std::string& htmlPageName, const Config& configuration) { if (data == nullptr || arrRows == 0 || arrCols == 0) return false; @@ -112,7 +109,7 @@ bool save(T** data, uint64_t arrRows, uint64_t arrCols, const std::string& filen } template -bool show(const T* data, uint64_t arrRows, uint64_t arrCols, const string& htmlPageName, const Config& configuration) { +bool show(const T* data, uint64_t arrRows, uint64_t arrCols, const std::string& htmlPageName, const Config& configuration) { if (data == nullptr || arrRows == 0 || arrCols == 0) return false; std::vector> vecVecDbl = dvs::makeVecVecFromFlat(data, arrRows, arrCols); @@ -125,7 +122,7 @@ bool show(const T* data, uint64_t arrRows, uint64_t arrCols, const string& htmlP } template -bool save(const T* data, uint64_t arrRows, uint64_t arrCols, const string& filename, +bool save(const T* data, uint64_t arrRows, uint64_t arrCols, const std::string& filename, const configSaveToDisk& configuration) { if (data == nullptr || arrRows == 0 || arrCols == 0) return false; @@ -135,7 +132,7 @@ bool save(const T* data, uint64_t arrRows, uint64_t arrCols, const string& filen } template -bool show(const T* data, uint64_t count, const string& htmlPageName, const Config& configuration) { +bool show(const T* data, uint64_t count, const std::string& htmlPageName, const Config& configuration) { if (data == nullptr || count == 0) return false; std::vector dblRow = dvs::makeVecFrom1D(data, count); @@ -153,7 +150,7 @@ bool show(const T* data, uint64_t count, const string& htmlPageName, const Confi } template -bool save(const T* data, uint64_t count, const string& filename, const configSaveToDisk& configuration) { +bool save(const T* data, uint64_t count, const std::string& filename, const configSaveToDisk& configuration) { if (data == nullptr || count == 0) return false; std::vector row = dvs::makeVecFrom1D(data, count); @@ -162,7 +159,7 @@ bool save(const T* data, uint64_t count, const string& filename, const configSav } template -bool show(C const& container, const string& htmlPageName, const Config& configuration) { +bool show(C const& container, const std::string& htmlPageName, const Config& configuration) { std::vector dblRow = dvs::vecFromTemplate(container); bool res = false; if (configuration.typeVisual == VISUALTYPE_AUTO || @@ -178,14 +175,14 @@ bool show(C const& container, const string& htmlPageName, const Config& configur } template -bool save(C const& container, const string& filename, const configSaveToDisk& configuration) { +bool save(C const& container, const std::string& filename, const configSaveToDisk& configuration) { std::vector row = dvs::vecFromTemplate(container); bool res = dvs::saveVec(row, filename, configuration); return res; } template -bool show(C const& containerX, C const& containerY, const string& htmlPageName, const Config& configuration) { +bool show(C const& containerX, C const& containerY, const std::string& htmlPageName, const Config& configuration) { if (containerX.size() != containerY.size()) { return false; } @@ -203,7 +200,7 @@ bool show(C const& containerX, C const& containerY, const string& htmlPageName, } template -bool save(C const& containerX, C const& containerY, const string& filename, const configSaveToDisk& configuration) { +bool save(C const& containerX, C const& containerY, const std::string& filename, const configSaveToDisk& configuration) { if (containerX.size() != containerY.size()) { return false; } @@ -219,7 +216,7 @@ bool save(C const& containerX, C const& containerY, const string& filename, con } template -bool show(C const& container_of_containers, const string& htmlPageName, const Config& configuration) { +bool show(C const& container_of_containers, const std::string& htmlPageName, const Config& configuration) { std::vector> vecVecDbl; vecVecDbl.reserve(container_of_containers.size()); for (const auto& row : container_of_containers) { @@ -261,7 +258,7 @@ bool show(C const& container_of_containers, const string& htmlPageName, const Co } template -bool save(C const& container_of_containers, const string& filename, const configSaveToDisk& configuration) { +bool save(C const& container_of_containers, const std::string& filename, const configSaveToDisk& configuration) { std::vector> vecVec; vecVec.reserve(container_of_containers.size()); for (const auto& row : container_of_containers) { From c1a7b56a87cece51e57fa78e9c4973386bce0408 Mon Sep 17 00:00:00 2001 From: AntonMrt Date: Sun, 22 Feb 2026 23:32:17 +0300 Subject: [PATCH 6/8] renaming --- array_core/array_core.h | 16 ++++---- common_utils/common_utils.h | 15 ++++--- davis_one/davis.h | 80 ++++++++++++++++++------------------- 3 files changed, 53 insertions(+), 58 deletions(-) diff --git a/array_core/array_core.h b/array_core/array_core.h index bb4c3d7..71727e7 100644 --- a/array_core/array_core.h +++ b/array_core/array_core.h @@ -160,7 +160,7 @@ bool save(const T* data, uint64_t count, const std::string& filename, const conf template bool show(C const& container, const std::string& htmlPageName, const Config& configuration) { - std::vector dblRow = dvs::vecFromTemplate(container); + std::vector dblRow = dvs::makeVecFromContainer(container); bool res = false; if (configuration.typeVisual == VISUALTYPE_AUTO || configuration.typeVisual == VISUALTYPE_CHART) { @@ -176,7 +176,7 @@ bool show(C const& container, const std::string& htmlPageName, const Config& con template bool save(C const& container, const std::string& filename, const configSaveToDisk& configuration) { - std::vector row = dvs::vecFromTemplate(container); + std::vector row = dvs::makeVecFromContainer(container); bool res = dvs::saveVec(row, filename, configuration); return res; } @@ -186,8 +186,8 @@ bool show(C const& containerX, C const& containerY, const std::string& htmlPageN if (containerX.size() != containerY.size()) { return false; } - std::vector dblRowX = dvs::vecFromTemplate(containerX); - std::vector dblRowY = dvs::vecFromTemplate(containerY); + std::vector dblRowX = dvs::makeVecFromContainer(containerX); + std::vector dblRowY = dvs::makeVecFromContainer(containerY); bool res = false; if (!dvs::isHold) { @@ -204,8 +204,8 @@ bool save(C const& containerX, C const& containerY, const std::string& filename if (containerX.size() != containerY.size()) { return false; } - std::vector rowX = dvs::vecFromTemplate(containerX); - std::vector rowY = dvs::vecFromTemplate(containerY); + std::vector rowX = dvs::makeVecFromContainer(containerX); + std::vector rowY = dvs::makeVecFromContainer(containerY); std::vector> vecVec; vecVec.emplace_back(rowX); vecVec.emplace_back(rowY); @@ -220,7 +220,7 @@ bool show(C const& container_of_containers, const std::string& htmlPageName, con std::vector> vecVecDbl; vecVecDbl.reserve(container_of_containers.size()); for (const auto& row : container_of_containers) { - std::vector dblRow = dvs::vecFromTemplate(row); + std::vector dblRow = dvs::makeVecFromContainer(row); vecVecDbl.emplace_back(dblRow); } bool res = false; @@ -262,7 +262,7 @@ bool save(C const& container_of_containers, const std::string& filename, const c std::vector> vecVec; vecVec.reserve(container_of_containers.size()); for (const auto& row : container_of_containers) { - std::vector rowTemp = dvs::vecFromTemplate(row); + std::vector rowTemp = dvs::makeVecFromContainer(row); vecVec.emplace_back(rowTemp); } bool res = dvs::saveVecVec(vecVec, filename, configuration); diff --git a/common_utils/common_utils.h b/common_utils/common_utils.h index 4b60ce7..461aa1a 100644 --- a/common_utils/common_utils.h +++ b/common_utils/common_utils.h @@ -147,12 +147,12 @@ bool saveVecVec(const vector>& vecVec, const string& filename, dv::con return true; } -//! convert any container to std::vector with G type +//! convert any container to std::vector template()))>::type, typename Enable = typename std::enable_if::value>::type> -std::vector vecFromTemplate(const C& container) { +std::vector makeVecFromContainer(const C& container) { std::vector vec; vec.reserve(static_cast(std::distance(std::begin(container), std::end(container)))); for (auto const& v : container) { @@ -161,10 +161,9 @@ std::vector vecFromTemplate(const C& container) { return vec; } +//! convert T** to std::vector template -inline std::vector> makeVecVecFromRowPtr(const T* const* data, - uint64_t rows, -uint64_t cols) { +inline std::vector> makeVecVecFromRowPtr(const T* const* data, uint64_t rows, uint64_t cols) { std::vector> res; res.reserve(rows); for (uint64_t i = 0; i < rows; ++i) { @@ -178,10 +177,9 @@ uint64_t cols) { return res; } +//! convert pseudo 2D T* to std::vector template -inline std::vector> makeVecVecFromFlat(const T* data, - uint64_t rows, -uint64_t cols) { +inline std::vector> makeVecVecFromFlat(const T* data, uint64_t rows, uint64_t cols) { std::vector> res; res.reserve(rows); for (uint64_t i = 0; i < rows; ++i) { @@ -195,6 +193,7 @@ uint64_t cols) { return res; } +//! convert pseudo T* to std::vector template inline std::vector makeVecFrom1D(const T* data, uint64_t count) { std::vector res; diff --git a/davis_one/davis.h b/davis_one/davis.h index 2801691..37b7024 100644 --- a/davis_one/davis.h +++ b/davis_one/davis.h @@ -362,12 +362,12 @@ bool saveVecVec(const vector>& vecVec, const string& filename, dv::con return true; } -//! convert any container to std::vector with G type +//! convert any container to std::vector template()))>::type, typename Enable = typename std::enable_if::value>::type> -std::vector vecFromTemplate(const C& container) { +std::vector makeVecFromContainer(const C& container) { std::vector vec; vec.reserve(static_cast(std::distance(std::begin(container), std::end(container)))); for (auto const& v : container) { @@ -376,10 +376,9 @@ std::vector vecFromTemplate(const C& container) { return vec; } +//! convert T** to std::vector template -inline std::vector> makeVecVecFromRowPtr(const T* const* data, - uint64_t rows, -uint64_t cols) { +inline std::vector> makeVecVecFromRowPtr(const T* const* data, uint64_t rows, uint64_t cols) { std::vector> res; res.reserve(rows); for (uint64_t i = 0; i < rows; ++i) { @@ -393,10 +392,9 @@ uint64_t cols) { return res; } +//! convert pseudo 2D T* to std::vector template -inline std::vector> makeVecVecFromFlat(const T* data, - uint64_t rows, -uint64_t cols) { +inline std::vector> makeVecVecFromFlat(const T* data, uint64_t rows, uint64_t cols) { std::vector> res; res.reserve(rows); for (uint64_t i = 0; i < rows; ++i) { @@ -410,6 +408,7 @@ uint64_t cols) { return res; } +//! convert pseudo T* to std::vector template inline std::vector makeVecFrom1D(const T* data, uint64_t count) { std::vector res; @@ -540,57 +539,54 @@ void holdOff(const Config& configuration = Config()); } // namespace dv end namespace dv { -using std::vector; -using std::string; - //! (matrix) 2-dimensional array template bool show(T** data, uint64_t arrRows, uint64_t arrCols, - const string& htmlPageName = dvs::makeUniqueDavisHtmlName(), const Config& configuration = Config()); + const std::string& htmlPageName = dvs::makeUniqueDavisHtmlName(), const Config& configuration = Config()); template -bool save(T** data, uint64_t arrRows, uint64_t arrCols, const string& filename, +bool save(T** data, uint64_t arrRows, uint64_t arrCols, const std::string& filename, const configSaveToDisk& configuration = configSaveToDisk()); //! (matrix) 1-dimensional array that simulates a 2-dimensional one (element access [i*cols+j]) template bool show(const T* data, uint64_t arrRows, uint64_t arrCols, - const string& htmlPageName = dvs::makeUniqueDavisHtmlName(), const Config& configuration = Config()); + const std::string& htmlPageName = dvs::makeUniqueDavisHtmlName(), const Config& configuration = Config()); template -bool save(const T* data, uint64_t arrRows, uint64_t arrCols, const string& filename, +bool save(const T* data, uint64_t arrRows, uint64_t arrCols, const std::string& filename, const configSaveToDisk& configuration = configSaveToDisk()); //! (chart) 1-dimensional array template -bool show(const T* data, uint64_t count, const string& htmlPageName = dvs::makeUniqueDavisHtmlName(), const Config& configuration = Config()); +bool show(const T* data, uint64_t count, const std::string& htmlPageName = dvs::makeUniqueDavisHtmlName(), const Config& configuration = Config()); template -bool save(const T* data, uint64_t count, const string& filename, const configSaveToDisk& configuration = configSaveToDisk()); +bool save(const T* data, uint64_t count, const std::string& filename, const configSaveToDisk& configuration = configSaveToDisk()); //! +(chart) 1-dimensional container template()))>::type, typename Enable = typename std::enable_if::value>::type> -bool show(C const& container, const string& htmlPageName = dvs::makeUniqueDavisHtmlName(), const Config& configuration = Config()); +bool show(C const& container, const std::string& htmlPageName = dvs::makeUniqueDavisHtmlName(), const Config& configuration = Config()); template()))>::type, typename Enable = typename std::enable_if::value>::type> -bool save(C const& container, const string& filename, const configSaveToDisk& configuration = configSaveToDisk()); +bool save(C const& container, const std::string& filename, const configSaveToDisk& configuration = configSaveToDisk()); //! +(chart) Two 1-dimensional container for X-Y plot template()))>::type, typename Enable = typename std::enable_if::value>::type> -bool show(C const& containerX, C const& containerY, const string& htmlPageName = dvs::makeUniqueDavisHtmlName(), const Config& configuration = Config()); +bool show(C const& containerX, C const& containerY, const std::string& htmlPageName = dvs::makeUniqueDavisHtmlName(), const Config& configuration = Config()); template()))>::type, typename Enable = typename std::enable_if::value>::type> -bool save(C const& containerX, C const& containerY, const string& filename, const configSaveToDisk& configuration = configSaveToDisk()); +bool save(C const& containerX, C const& containerY, const std::string& filename, const configSaveToDisk& configuration = configSaveToDisk()); //! (chart / matrix) 2-dimensional container @@ -598,13 +594,13 @@ template()))>::type, typename T = typename std::decay()))>::type, typename Enable = typename std::enable_if::value>::type> -bool show(C const& container_of_containers, const string& htmlPageName = dvs::makeUniqueDavisHtmlName(), const Config& configuration = Config()); +bool show(C const& container_of_containers, const std::string& htmlPageName = dvs::makeUniqueDavisHtmlName(), const Config& configuration = Config()); template()))>::type, typename T = typename std::decay()))>::type, typename Enable = typename std::enable_if::value>::type> -bool save(C const& container_of_containers, const string& filename, const configSaveToDisk& configuration = configSaveToDisk()); +bool save(C const& container_of_containers, const std::string& filename, const configSaveToDisk& configuration = configSaveToDisk()); // *********************************** @@ -612,7 +608,7 @@ bool save(C const& container_of_containers, const string& filename, const config // *********************************** template -bool show(T** data, uint64_t arrRows, uint64_t arrCols, const string& htmlPageName, const Config& configuration) { +bool show(T** data, uint64_t arrRows, uint64_t arrCols, const std::string& htmlPageName, const Config& configuration) { if (data == nullptr || arrRows == 0 || arrCols == 0) return false; @@ -638,7 +634,7 @@ bool save(T** data, uint64_t arrRows, uint64_t arrCols, const std::string& filen } template -bool show(const T* data, uint64_t arrRows, uint64_t arrCols, const string& htmlPageName, const Config& configuration) { +bool show(const T* data, uint64_t arrRows, uint64_t arrCols, const std::string& htmlPageName, const Config& configuration) { if (data == nullptr || arrRows == 0 || arrCols == 0) return false; std::vector> vecVecDbl = dvs::makeVecVecFromFlat(data, arrRows, arrCols); @@ -651,7 +647,7 @@ bool show(const T* data, uint64_t arrRows, uint64_t arrCols, const string& htmlP } template -bool save(const T* data, uint64_t arrRows, uint64_t arrCols, const string& filename, +bool save(const T* data, uint64_t arrRows, uint64_t arrCols, const std::string& filename, const configSaveToDisk& configuration) { if (data == nullptr || arrRows == 0 || arrCols == 0) return false; @@ -661,7 +657,7 @@ bool save(const T* data, uint64_t arrRows, uint64_t arrCols, const string& filen } template -bool show(const T* data, uint64_t count, const string& htmlPageName, const Config& configuration) { +bool show(const T* data, uint64_t count, const std::string& htmlPageName, const Config& configuration) { if (data == nullptr || count == 0) return false; std::vector dblRow = dvs::makeVecFrom1D(data, count); @@ -679,7 +675,7 @@ bool show(const T* data, uint64_t count, const string& htmlPageName, const Confi } template -bool save(const T* data, uint64_t count, const string& filename, const configSaveToDisk& configuration) { +bool save(const T* data, uint64_t count, const std::string& filename, const configSaveToDisk& configuration) { if (data == nullptr || count == 0) return false; std::vector row = dvs::makeVecFrom1D(data, count); @@ -688,8 +684,8 @@ bool save(const T* data, uint64_t count, const string& filename, const configSav } template -bool show(C const& container, const string& htmlPageName, const Config& configuration) { - std::vector dblRow = dvs::vecFromTemplate(container); +bool show(C const& container, const std::string& htmlPageName, const Config& configuration) { + std::vector dblRow = dvs::makeVecFromContainer(container); bool res = false; if (configuration.typeVisual == VISUALTYPE_AUTO || configuration.typeVisual == VISUALTYPE_CHART) { @@ -704,19 +700,19 @@ bool show(C const& container, const string& htmlPageName, const Config& configur } template -bool save(C const& container, const string& filename, const configSaveToDisk& configuration) { - std::vector row = dvs::vecFromTemplate(container); +bool save(C const& container, const std::string& filename, const configSaveToDisk& configuration) { + std::vector row = dvs::makeVecFromContainer(container); bool res = dvs::saveVec(row, filename, configuration); return res; } template -bool show(C const& containerX, C const& containerY, const string& htmlPageName, const Config& configuration) { +bool show(C const& containerX, C const& containerY, const std::string& htmlPageName, const Config& configuration) { if (containerX.size() != containerY.size()) { return false; } - std::vector dblRowX = dvs::vecFromTemplate(containerX); - std::vector dblRowY = dvs::vecFromTemplate(containerY); + std::vector dblRowX = dvs::makeVecFromContainer(containerX); + std::vector dblRowY = dvs::makeVecFromContainer(containerY); bool res = false; if (!dvs::isHold) { @@ -729,12 +725,12 @@ bool show(C const& containerX, C const& containerY, const string& htmlPageName, } template -bool save(C const& containerX, C const& containerY, const string& filename, const configSaveToDisk& configuration) { +bool save(C const& containerX, C const& containerY, const std::string& filename, const configSaveToDisk& configuration) { if (containerX.size() != containerY.size()) { return false; } - std::vector rowX = dvs::vecFromTemplate(containerX); - std::vector rowY = dvs::vecFromTemplate(containerY); + std::vector rowX = dvs::makeVecFromContainer(containerX); + std::vector rowY = dvs::makeVecFromContainer(containerY); std::vector> vecVec; vecVec.emplace_back(rowX); vecVec.emplace_back(rowY); @@ -745,11 +741,11 @@ bool save(C const& containerX, C const& containerY, const string& filename, con } template -bool show(C const& container_of_containers, const string& htmlPageName, const Config& configuration) { +bool show(C const& container_of_containers, const std::string& htmlPageName, const Config& configuration) { std::vector> vecVecDbl; vecVecDbl.reserve(container_of_containers.size()); for (const auto& row : container_of_containers) { - std::vector dblRow = dvs::vecFromTemplate(row); + std::vector dblRow = dvs::makeVecFromContainer(row); vecVecDbl.emplace_back(dblRow); } bool res = false; @@ -787,11 +783,11 @@ bool show(C const& container_of_containers, const string& htmlPageName, const Co } template -bool save(C const& container_of_containers, const string& filename, const configSaveToDisk& configuration) { +bool save(C const& container_of_containers, const std::string& filename, const configSaveToDisk& configuration) { std::vector> vecVec; vecVec.reserve(container_of_containers.size()); for (const auto& row : container_of_containers) { - std::vector rowTemp = dvs::vecFromTemplate(row); + std::vector rowTemp = dvs::makeVecFromContainer(row); vecVec.emplace_back(rowTemp); } bool res = dvs::saveVecVec(vecVec, filename, configuration); From ed2d6dbefdf24f6f83198d6d20e41f908fce64ff Mon Sep 17 00:00:00 2001 From: AntonMrt Date: Sun, 22 Feb 2026 23:47:26 +0300 Subject: [PATCH 7/8] add std to another file --- array_core/multi_plot.cpp | 52 +++++++++++++++++++-------------------- davis_one/davis.cpp | 52 +++++++++++++++++++-------------------- 2 files changed, 52 insertions(+), 52 deletions(-) diff --git a/array_core/multi_plot.cpp b/array_core/multi_plot.cpp index 4919db8..43fe856 100644 --- a/array_core/multi_plot.cpp +++ b/array_core/multi_plot.cpp @@ -7,7 +7,7 @@ namespace dvs { //#START_GRAB_TO_DVS_NAMESPACE bool isHold = false; -vector allChartBlocks = {}; +std::vector allChartBlocks = {}; //#STOP_GRAB_TO_DVS_NAMESPACE } // end namespace dvs @@ -27,25 +27,25 @@ void holdOff(const Config& configuration) { if (dvs::allChartBlocks.empty()) { return; } - string allTracesNames_str; - string allChartBlocks_str; - const string trace_name_part = "trace"; + std::string allTracesNames_str; + std::string allChartBlocks_str; + const std::string trace_name_part = "trace"; for (int i = 0; i < dvs::allChartBlocks.size(); ++i) { - string str_numTrace = std::to_string(i + 1); - string filled_trace_name_part = trace_name_part + str_numTrace; + std::string str_numTrace = std::to_string(i + 1); + std::string filled_trace_name_part = trace_name_part + str_numTrace; if (i < dvs::allChartBlocks.size() - 1) { filled_trace_name_part.append(","); } allTracesNames_str.append(filled_trace_name_part); allChartBlocks_str.append(dvs::allChartBlocks[i]); } - string paramWH; + std::string paramWH; if (configuration.chart.aspectRatioWidth > configuration.chart.aspectRatioHeight) { paramWH = "width"; } else { paramWH = "height"; } - string paramWHsecond; + std::string paramWHsecond; if (configuration.chart.isFitPlotToWindow) { if (paramWH == "width") { paramWHsecond = "height"; @@ -55,25 +55,25 @@ void holdOff(const Config& configuration) { } else { paramWHsecond = paramWH; } - vector args = {dvs::kPlotlyJsName, - allChartBlocks_str, - allTracesNames_str, - configuration.chart.title, - configuration.chart.xLabel, - configuration.chart.yLabel, - dvs::toStringDotSeparator(configuration.chart.aspectRatioWidth), - dvs::toStringDotSeparator(configuration.chart.aspectRatioHeight), - paramWH, - paramWHsecond, - dvs::kHtmlComboboxStyleBlock, - dvs::kHtmlComboboxSelectBlock, - dvs::kHtmlComboboxUpdateFooBlock, - dvs::kHtmlDavisLogoHyperlinkBlock - }; - string multichartPage = dvs::kHtmlMultiChartModel; - string filled_multichartPage = ""; + std::vector args = {dvs::kPlotlyJsName, + allChartBlocks_str, + allTracesNames_str, + configuration.chart.title, + configuration.chart.xLabel, + configuration.chart.yLabel, + dvs::toStringDotSeparator(configuration.chart.aspectRatioWidth), + dvs::toStringDotSeparator(configuration.chart.aspectRatioHeight), + paramWH, + paramWHsecond, + dvs::kHtmlComboboxStyleBlock, + dvs::kHtmlComboboxSelectBlock, + dvs::kHtmlComboboxUpdateFooBlock, + dvs::kHtmlDavisLogoHyperlinkBlock + }; + std::string multichartPage = dvs::kHtmlMultiChartModel; + std::string filled_multichartPage = ""; dvs::make_string(multichartPage, args, filled_multichartPage); - string htmlFullName = dvs::makeUniqueDavisHtmlRelativePath(); + std::string htmlFullName = dvs::makeUniqueDavisHtmlRelativePath(); dvs::saveStringToFile(htmlFullName, filled_multichartPage); dvs::openFileBySystem(htmlFullName); dvs::allChartBlocks.clear(); diff --git a/davis_one/davis.cpp b/davis_one/davis.cpp index a3d6793..3c2d9f5 100644 --- a/davis_one/davis.cpp +++ b/davis_one/davis.cpp @@ -1780,7 +1780,7 @@ void showMultiChart(const std::string& date_time_values, namespace dvs { bool isHold = false; -vector allChartBlocks = {}; +std::vector allChartBlocks = {}; } // namespace dvs end @@ -1798,25 +1798,25 @@ void holdOff(const Config& configuration) { if (dvs::allChartBlocks.empty()) { return; } - string allTracesNames_str; - string allChartBlocks_str; - const string trace_name_part = "trace"; + std::string allTracesNames_str; + std::string allChartBlocks_str; + const std::string trace_name_part = "trace"; for (int i = 0; i < dvs::allChartBlocks.size(); ++i) { - string str_numTrace = std::to_string(i + 1); - string filled_trace_name_part = trace_name_part + str_numTrace; + std::string str_numTrace = std::to_string(i + 1); + std::string filled_trace_name_part = trace_name_part + str_numTrace; if (i < dvs::allChartBlocks.size() - 1) { filled_trace_name_part.append(","); } allTracesNames_str.append(filled_trace_name_part); allChartBlocks_str.append(dvs::allChartBlocks[i]); } - string paramWH; + std::string paramWH; if (configuration.chart.aspectRatioWidth > configuration.chart.aspectRatioHeight) { paramWH = "width"; } else { paramWH = "height"; } - string paramWHsecond; + std::string paramWHsecond; if (configuration.chart.isFitPlotToWindow) { if (paramWH == "width") { paramWHsecond = "height"; @@ -1826,25 +1826,25 @@ void holdOff(const Config& configuration) { } else { paramWHsecond = paramWH; } - vector args = {dvs::kPlotlyJsName, - allChartBlocks_str, - allTracesNames_str, - configuration.chart.title, - configuration.chart.xLabel, - configuration.chart.yLabel, - dvs::toStringDotSeparator(configuration.chart.aspectRatioWidth), - dvs::toStringDotSeparator(configuration.chart.aspectRatioHeight), - paramWH, - paramWHsecond, - dvs::kHtmlComboboxStyleBlock, - dvs::kHtmlComboboxSelectBlock, - dvs::kHtmlComboboxUpdateFooBlock, - dvs::kHtmlDavisLogoHyperlinkBlock - }; - string multichartPage = dvs::kHtmlMultiChartModel; - string filled_multichartPage = ""; + std::vector args = {dvs::kPlotlyJsName, + allChartBlocks_str, + allTracesNames_str, + configuration.chart.title, + configuration.chart.xLabel, + configuration.chart.yLabel, + dvs::toStringDotSeparator(configuration.chart.aspectRatioWidth), + dvs::toStringDotSeparator(configuration.chart.aspectRatioHeight), + paramWH, + paramWHsecond, + dvs::kHtmlComboboxStyleBlock, + dvs::kHtmlComboboxSelectBlock, + dvs::kHtmlComboboxUpdateFooBlock, + dvs::kHtmlDavisLogoHyperlinkBlock + }; + std::string multichartPage = dvs::kHtmlMultiChartModel; + std::string filled_multichartPage = ""; dvs::make_string(multichartPage, args, filled_multichartPage); - string htmlFullName = dvs::makeUniqueDavisHtmlRelativePath(); + std::string htmlFullName = dvs::makeUniqueDavisHtmlRelativePath(); dvs::saveStringToFile(htmlFullName, filled_multichartPage); dvs::openFileBySystem(htmlFullName); dvs::allChartBlocks.clear(); From 68c4096e0509af86ad877a79847006f2313ce337 Mon Sep 17 00:00:00 2001 From: AntonMrt Date: Mon, 23 Feb 2026 23:30:01 +0300 Subject: [PATCH 8/8] bugfix hold off --- array_core/multi_plot.cpp | 8 +++++++- davis_one/davis.cpp | 7 ++++++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/array_core/multi_plot.cpp b/array_core/multi_plot.cpp index 43fe856..26e9ce0 100644 --- a/array_core/multi_plot.cpp +++ b/array_core/multi_plot.cpp @@ -1,5 +1,6 @@ #include "multi_plot.h" #include "plotly_maker/html_parts.h" +#include "plotly_maker/plotly_maker.h" #include "common_utils/common_utils.h" #include "common_utils/common_constants.h" @@ -74,8 +75,13 @@ void holdOff(const Config& configuration) { std::string filled_multichartPage = ""; dvs::make_string(multichartPage, args, filled_multichartPage); std::string htmlFullName = dvs::makeUniqueDavisHtmlRelativePath(); + dvs::mayBeCreateJsWorkingFolder(); dvs::saveStringToFile(htmlFullName, filled_multichartPage); - dvs::openFileBySystem(htmlFullName); + if (dvs::isPlotlyScriptExists()) { + dvs::openPlotlyHtml(htmlFullName); + } else { + dvs::showWarningJsAbsentPage(); + } dvs::allChartBlocks.clear(); } diff --git a/davis_one/davis.cpp b/davis_one/davis.cpp index 3c2d9f5..c84aa72 100644 --- a/davis_one/davis.cpp +++ b/davis_one/davis.cpp @@ -1845,8 +1845,13 @@ void holdOff(const Config& configuration) { std::string filled_multichartPage = ""; dvs::make_string(multichartPage, args, filled_multichartPage); std::string htmlFullName = dvs::makeUniqueDavisHtmlRelativePath(); + dvs::mayBeCreateJsWorkingFolder(); dvs::saveStringToFile(htmlFullName, filled_multichartPage); - dvs::openFileBySystem(htmlFullName); + if (dvs::isPlotlyScriptExists()) { + dvs::openPlotlyHtml(htmlFullName); + } else { + dvs::showWarningJsAbsentPage(); + } dvs::allChartBlocks.clear(); }