annotate pkg/common/delta.go @ 5736:55892008ec96 default tip

Fixed a bunch of corner cases in WG import.
author Sascha Wilde <wilde@sha-bang.de>
date Wed, 29 May 2024 19:02:42 +0200
parents 3bc15e38c7e8
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
5688
6281c18b109f Finsh serializing v2 meshes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1 // This is Free Software under GNU Affero General Public License v >= 3.0
6281c18b109f Finsh serializing v2 meshes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
2 // without warranty, see README.md and license for details.
6281c18b109f Finsh serializing v2 meshes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
3 //
6281c18b109f Finsh serializing v2 meshes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
4 // SPDX-License-Identifier: AGPL-3.0-or-later
6281c18b109f Finsh serializing v2 meshes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
5 // License-Filename: LICENSES/AGPL-3.0.txt
6281c18b109f Finsh serializing v2 meshes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
6 //
6281c18b109f Finsh serializing v2 meshes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
7 // Copyright (C) 2024 by via donau
6281c18b109f Finsh serializing v2 meshes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
8 // – Österreichische Wasserstraßen-Gesellschaft mbH
6281c18b109f Finsh serializing v2 meshes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
9 // Software engineering by Intevation GmbH
6281c18b109f Finsh serializing v2 meshes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
10 //
6281c18b109f Finsh serializing v2 meshes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
11 // Author(s):
6281c18b109f Finsh serializing v2 meshes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
12 // * Sascha L. Teichmann <sascha.teichmann@intevation.de>
6281c18b109f Finsh serializing v2 meshes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
13
6281c18b109f Finsh serializing v2 meshes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
14 package common
6281c18b109f Finsh serializing v2 meshes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
15
6281c18b109f Finsh serializing v2 meshes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
16 // Delta returns a function which returns its argument when called
6281c18b109f Finsh serializing v2 meshes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
17 // the first time and the delta to the last call afterwards.
6281c18b109f Finsh serializing v2 meshes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
18 func Delta() func(int64) int64 {
6281c18b109f Finsh serializing v2 meshes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
19 var last int64
6281c18b109f Finsh serializing v2 meshes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
20 return func(x int64) (y int64) {
5693
9e9cedae718a Add inverse funtion to delta.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 5688
diff changeset
21 y = x - last
9e9cedae718a Add inverse funtion to delta.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 5688
diff changeset
22 last = x
5688
6281c18b109f Finsh serializing v2 meshes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
23 return
6281c18b109f Finsh serializing v2 meshes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
24 }
6281c18b109f Finsh serializing v2 meshes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
25 }
5693
9e9cedae718a Add inverse funtion to delta.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 5688
diff changeset
26
5694
3bc15e38c7e8 Typo fix
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 5693
diff changeset
27 // InvDelta is the inverse function to Delta. A sequence of numbers
5693
9e9cedae718a Add inverse funtion to delta.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 5688
diff changeset
28 // fed into the function generated by InvDelta restores
9e9cedae718a Add inverse funtion to delta.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 5688
diff changeset
29 // the values fed into the function generated by Delta.
9e9cedae718a Add inverse funtion to delta.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 5688
diff changeset
30 func InvDelta() func(int64) int64 {
9e9cedae718a Add inverse funtion to delta.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 5688
diff changeset
31 var last int64
9e9cedae718a Add inverse funtion to delta.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 5688
diff changeset
32 return func(x int64) (y int64) {
9e9cedae718a Add inverse funtion to delta.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 5688
diff changeset
33 y = x + last
9e9cedae718a Add inverse funtion to delta.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 5688
diff changeset
34 last = y
9e9cedae718a Add inverse funtion to delta.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 5688
diff changeset
35 return
9e9cedae718a Add inverse funtion to delta.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 5688
diff changeset
36 }
9e9cedae718a Add inverse funtion to delta.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 5688
diff changeset
37 }