Mercurial > gemma
annotate pkg/common/delta.go @ 5688:6281c18b109f sr-v2
Finsh serializing v2 meshes.
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Mon, 12 Feb 2024 02:27:41 +0100 |
parents | |
children | 9e9cedae718a |
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 first := true |
6281c18b109f
Finsh serializing v2 meshes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
21 return func(x int64) (y int64) { |
6281c18b109f
Finsh serializing v2 meshes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
22 if first { |
6281c18b109f
Finsh serializing v2 meshes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
23 first = false |
6281c18b109f
Finsh serializing v2 meshes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
24 y = x |
6281c18b109f
Finsh serializing v2 meshes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
25 last = x |
6281c18b109f
Finsh serializing v2 meshes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
26 } else { |
6281c18b109f
Finsh serializing v2 meshes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
27 y = x - last |
6281c18b109f
Finsh serializing v2 meshes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
28 last = x |
6281c18b109f
Finsh serializing v2 meshes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
29 } |
6281c18b109f
Finsh serializing v2 meshes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
30 return |
6281c18b109f
Finsh serializing v2 meshes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
31 } |
6281c18b109f
Finsh serializing v2 meshes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
32 } |