[Libreoffice-commits] core.git: sc/inc sc/Library_sc.mk sc/source
Łukasz Hryniuk
lukasz.hryniuk at wp.pl
Thu Oct 1 22:08:52 PDT 2015
sc/Library_sc.mk | 1
sc/inc/matrixoperators.hxx | 60 ++++++++++++++++++++++++++++++++
sc/source/core/tool/matrixoperators.cxx | 42 ++++++++++++++++++++++
3 files changed, 103 insertions(+)
New commits:
commit 0355caf7183d60786018d1de4a8ca4c95028e105
Author: Łukasz Hryniuk <lukasz.hryniuk at wp.pl>
Date: Sat Aug 8 15:04:11 2015 +0200
Add a new file with matrix operators definitions
Change-Id: Ib42d0d51945f634a3052c387a0317d7a919a4d4b
Reviewed-on: https://gerrit.libreoffice.org/17482
Tested-by: Jenkins <ci at libreoffice.org>
Reviewed-by: Markus Mohrhard <markus.mohrhard at googlemail.com>
Tested-by: Markus Mohrhard <markus.mohrhard at googlemail.com>
diff --git a/sc/Library_sc.mk b/sc/Library_sc.mk
index 52d17d1..4923a714 100644
--- a/sc/Library_sc.mk
+++ b/sc/Library_sc.mk
@@ -244,6 +244,7 @@ $(eval $(call gb_Library_add_exception_objects,sc,\
sc/source/core/tool/jumpmatrix \
sc/source/core/tool/listenerquery \
sc/source/core/tool/lookupcache \
+ sc/source/core/tool/matrixoperators \
sc/source/core/tool/navicfg \
sc/source/core/tool/numformat \
sc/source/core/tool/odffmap \
diff --git a/sc/inc/matrixoperators.hxx b/sc/inc/matrixoperators.hxx
new file mode 100644
index 0000000..f3e5fac
--- /dev/null
+++ b/sc/inc/matrixoperators.hxx
@@ -0,0 +1,60 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ */
+
+#ifndef INCLUDED_SC_INC_MATRIXOPERATORS_HXX
+#define INCLUDED_SC_INC_MATRIXOPERATORS_HXX
+
+
+namespace sc {
+
+namespace op {
+
+
+template<typename T>
+struct _Op
+{
+ const double mInitVal;
+ const T maOp;
+ _Op(double InitVal, T aOp):
+ mInitVal(InitVal), maOp(aOp)
+ {
+ }
+ void operator()(double& rAccum, double fVal)
+ {
+ maOp(rAccum, fVal);
+ }
+};
+
+using Op = _Op<std::function<void(double&, double)>>;
+
+struct Sum
+{
+ static const double InitVal;
+ void operator()(double& rAccum, double fVal);
+};
+
+struct SumSquare
+{
+ static const double InitVal;
+ void operator()(double& rAccum, double fVal);
+};
+
+struct Product
+{
+ static const double InitVal;
+ void operator()(double& rAccum, double fVal);
+};
+
+}
+
+}
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sc/source/core/tool/matrixoperators.cxx b/sc/source/core/tool/matrixoperators.cxx
new file mode 100644
index 0000000..ed84ac0
--- /dev/null
+++ b/sc/source/core/tool/matrixoperators.cxx
@@ -0,0 +1,42 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ */
+
+#include <functional>
+#include "matrixoperators.hxx"
+
+
+namespace sc {
+
+namespace op {
+
+void Sum::operator()(double& rAccum, double fVal)
+{
+ rAccum += fVal;
+}
+
+const double Sum::InitVal = 0.0;
+
+void SumSquare::operator()(double& rAccum, double fVal)
+{
+ rAccum += fVal * fVal;
+}
+
+const double SumSquare::InitVal = 0.0;
+
+void Product::operator()(double& rAccum, double fVal)
+{
+ rAccum *= fVal;
+}
+
+const double Product::InitVal = 1.0;
+
+}
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
More information about the Libreoffice-commits
mailing list