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.hryn...@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 <c...@libreoffice.org> Reviewed-by: Markus Mohrhard <markus.mohrh...@googlemail.com> Tested-by: Markus Mohrhard <markus.mohrh...@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: */
_______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits