1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75
|
// $Id: Offsets.hh 2641 2007-09-02 21:31:02Z flaterco $
// Offsets: storage for tide offsets.
/*
Copyright (C) 1998 David Flater.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
class SimpleOffsets {
public:
SimpleOffsets(); // default to 0 s, 0 Zulu, 1.0
// levelMultiply = 0 is treated as null and defaulted to 1.0.
// levelMultiply < 0 is an error.
SimpleOffsets (Interval timeAdd,
PredictionValue levelAdd,
double levelMultiply);
const Interval timeAdd() const;
const PredictionValue levelAdd() const;
const double levelMultiply() const;
protected:
Interval _timeAdd;
PredictionValue _levelAdd;
double _levelMultiply;
};
class HairyOffsets {
public:
HairyOffsets (const SimpleOffsets &maxso,
const SimpleOffsets &minso,
NullableInterval floodBegins,
NullableInterval ebbBegins);
const Interval maxTimeAdd() const;
const PredictionValue maxLevelAdd() const;
const double maxLevelMultiply() const;
const Interval minTimeAdd() const;
const PredictionValue minLevelAdd() const;
const double minLevelMultiply() const;
const NullableInterval floodBegins() const;
const NullableInterval ebbBegins() const;
// Try to reduce to SimpleOffsets.
// If possible, returns true and simpleOffsets_out is valid.
// If not, returns false and simpleOffsets_out is unchanged.
// Note special case for hydraulic currents in HarmonicsFile.cc.
const bool trySimplify (SimpleOffsets &simpleOffsets_out) const;
protected:
SimpleOffsets _maxso, _minso;
NullableInterval _floodBegins, _ebbBegins;
};
const bool operator== (const SimpleOffsets &a, const SimpleOffsets &b);
const bool operator!= (const SimpleOffsets &a, const SimpleOffsets &b);
// Cleanup2006 Done
|