[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