Mercurial > gemma
diff pkg/common/delta.go @ 5710:37c8feeecb4d
Merged branch sr-v2 into default.
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Tue, 20 Feb 2024 21:28:56 +0100 |
parents | 3bc15e38c7e8 |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pkg/common/delta.go Tue Feb 20 21:28:56 2024 +0100 @@ -0,0 +1,37 @@ +// This is Free Software under GNU Affero General Public License v >= 3.0 +// without warranty, see README.md and license for details. +// +// SPDX-License-Identifier: AGPL-3.0-or-later +// License-Filename: LICENSES/AGPL-3.0.txt +// +// Copyright (C) 2024 by via donau +// – Österreichische Wasserstraßen-Gesellschaft mbH +// Software engineering by Intevation GmbH +// +// Author(s): +// * Sascha L. Teichmann <sascha.teichmann@intevation.de> + +package common + +// Delta returns a function which returns its argument when called +// the first time and the delta to the last call afterwards. +func Delta() func(int64) int64 { + var last int64 + return func(x int64) (y int64) { + y = x - last + last = x + return + } +} + +// InvDelta is the inverse function to Delta. A sequence of numbers +// fed into the function generated by InvDelta restores +// the values fed into the function generated by Delta. +func InvDelta() func(int64) int64 { + var last int64 + return func(x int64) (y int64) { + y = x + last + last = y + return + } +}