Mercurial > gemma
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 |
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 } |