From a83ef756b32633a8ed828376e18eaae8699a2030 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9a=20Saviot?= Date: Tue, 12 Jun 2018 15:20:31 +0200 Subject: [PATCH] [apps/stats/reg] Share Store methods --- apps/regression/store.cpp | 36 +------------------------------ apps/regression/store.h | 5 +---- apps/shared/double_pair_store.cpp | 35 ++++++++++++++++++++++++++++++ apps/shared/double_pair_store.h | 15 +++++++++++++ apps/statistics/store.cpp | 26 +++------------------- apps/statistics/store.h | 7 +++--- 6 files changed, 58 insertions(+), 66 deletions(-) diff --git a/apps/regression/store.cpp b/apps/regression/store.cpp index eb0a7be38..2444be186 100644 --- a/apps/regression/store.cpp +++ b/apps/regression/store.cpp @@ -171,46 +171,12 @@ void Store::setDefault() { setYAuto(true); } -bool Store::isEmpty() const { - for (int i = 0; i < k_numberOfSeries; i++) { - if (!seriesIsEmpty(i)) { - return false; - } - } - return true; -} - -int Store::numberOfNonEmptySeries() const { - // TODO Share with stats in FLoatPairStore - int nonEmptySeriesCount = 0; - for (int i = 0; i< k_numberOfSeries; i++) { - if (!seriesIsEmpty(i)) { - nonEmptySeriesCount++; - } - } - return nonEmptySeriesCount; -} +/* Series */ bool Store::seriesIsEmpty(int series) const { return numberOfPairsOfSeries(series) < 2; } -int Store::indexOfKthNonEmptySeries(int k) const { - // TODO put in DoublePairStore (it is also in stats/store) - assert(k >= 0 && k < numberOfNonEmptySeries()); - int nonEmptySeriesCount = 0; - for (int i = 0; i < k_numberOfSeries; i++) { - if (!seriesIsEmpty(i)) { - if (nonEmptySeriesCount == k) { - return i; - } - nonEmptySeriesCount++; - } - } - assert(false); - return 0; -} - /* Calculations */ double Store::doubleCastedNumberOfPairsOfSeries(int series) const { diff --git a/apps/regression/store.h b/apps/regression/store.h index 1e34e8d77..06284e932 100644 --- a/apps/regression/store.h +++ b/apps/regression/store.h @@ -29,10 +29,7 @@ public: void setDefault() override; // Series - bool isEmpty() const; - int numberOfNonEmptySeries() const; - bool seriesIsEmpty(int series) const; - int indexOfKthNonEmptySeries(int k) const; + bool seriesIsEmpty(int series) const override; // Calculation double doubleCastedNumberOfPairsOfSeries(int series) const; diff --git a/apps/shared/double_pair_store.cpp b/apps/shared/double_pair_store.cpp index 32e84c558..995ac5ab3 100644 --- a/apps/shared/double_pair_store.cpp +++ b/apps/shared/double_pair_store.cpp @@ -63,6 +63,41 @@ void DoublePairStore::resetColumn(int series, int i) { } } +bool DoublePairStore::isEmpty() const { + for (int i = 0; i < k_numberOfSeries; i++) { + if (!seriesIsEmpty(i)) { + return false; + } + } + return true; +} + +int DoublePairStore::numberOfNonEmptySeries() const { + int nonEmptySeriesCount = 0; + for (int i = 0; i< k_numberOfSeries; i++) { + if (!seriesIsEmpty(i)) { + nonEmptySeriesCount++; + } + } + return nonEmptySeriesCount; +} + + +int DoublePairStore::indexOfKthNonEmptySeries(int k) const { + assert(k >= 0 && k < numberOfNonEmptySeries()); + int nonEmptySeriesCount = 0; + for (int i = 0; i < k_numberOfSeries; i++) { + if (!seriesIsEmpty(i)) { + if (nonEmptySeriesCount == k) { + return i; + } + nonEmptySeriesCount++; + } + } + assert(false); + return 0; +} + double DoublePairStore::sumOfColumn(int series, int i) const { assert(series >= 0 && series < k_numberOfSeries); assert(i == 0 || i == 1); diff --git a/apps/shared/double_pair_store.h b/apps/shared/double_pair_store.h index f172e3e11..9caa895f3 100644 --- a/apps/shared/double_pair_store.h +++ b/apps/shared/double_pair_store.h @@ -19,23 +19,38 @@ public: {} // Delete the implicit copy constructor: the object is heavy DoublePairStore(const DoublePairStore&) = delete; + + // Get and set data double get(int series, int i, int j) const { assert(j < m_numberOfPairs[series]); return m_data[series][i][j]; } virtual void set(double f, int series, int i, int j); + + // Counts int numberOfPairs() const; int numberOfPairsOfSeries(int series) const { assert(series >= 0 && series < k_numberOfSeries); return m_numberOfPairs[series]; } + + // Delete and reset virtual void deletePairOfSeriesAtIndex(int series, int j); virtual void deleteAllPairsOfSeries(int series); void deleteAllPairs(); void resetColumn(int series, int i); + + // Series + virtual bool isEmpty() const; + virtual bool seriesIsEmpty(int series) const = 0; + virtual int numberOfNonEmptySeries() const; + int indexOfKthNonEmptySeries(int k) const; + + // Calculations double sumOfColumn(int series, int i) const; uint32_t storeChecksum() const; + // Colors static KDColor colorOfSeriesAtIndex(int i) { assert(i >= 0 && i < k_numberOfSeries); return Palette::DataColor[i]; diff --git a/apps/statistics/store.cpp b/apps/statistics/store.cpp index f60bd3a3c..ffc124871 100644 --- a/apps/statistics/store.cpp +++ b/apps/statistics/store.cpp @@ -81,35 +81,15 @@ bool Store::scrollToSelectedBarIndex(int series, int index) { } bool Store::isEmpty() const { - for (int i = 0; i < k_numberOfSeries; i ++) { - if (!seriesIsEmpty(i)) { - return false; - } - } - return true; -} - -int Store::numberOfNonEmptySeries() const { - return m_numberOfNonEmptySeries; + return numberOfNonEmptySeries() == 0; } bool Store::seriesIsEmpty(int i) const { return m_seriesEmpty[i]; } -int Store::indexOfKthNonEmptySeries(int k) const { - assert(k >= 0 && k < numberOfNonEmptySeries()); - int nonEmptySeriesCount = 0; - for (int i = 0; i < k_numberOfSeries; i++) { - if (!seriesIsEmpty(i)) { - if (nonEmptySeriesCount == k) { - return i; - } - nonEmptySeriesCount++; - } - } - assert(false); - return 0; +int Store::numberOfNonEmptySeries() const { + return m_numberOfNonEmptySeries; } /* Calculation */ diff --git a/apps/statistics/store.h b/apps/statistics/store.h index fa4839c83..acf243779 100644 --- a/apps/statistics/store.h +++ b/apps/statistics/store.h @@ -22,10 +22,9 @@ public: double numberOfBars(int series) const; // return true if the window has scrolled bool scrollToSelectedBarIndex(int series, int index); - bool isEmpty() const; - int numberOfNonEmptySeries() const; - bool seriesIsEmpty(int i) const; - int indexOfKthNonEmptySeries(int k) const; + bool isEmpty() const override; + bool seriesIsEmpty(int i) const override; + int numberOfNonEmptySeries() const override; // Calculation double sumOfOccurrences(int series) const;