Ranges.h
1//-*-C++-*-
2/***************************************************************************
3 *
4 * Copyright (C) 2016 by Willem van Straten
5 * Licensed under the Academic Free License version 2.1
6 *
7 ***************************************************************************/
8
9// psrchive/Util/units/Ranges.h
10
11#ifndef __Ranges_H
12#define __Ranges_H
13
14#include <vector>
15#include <iostream>
16
17class Range
18{
19protected:
20 bool gt, lt, eq;
21 double x0,x1;
22
23 void clear () { gt = lt = eq = false; }
24
25public:
26 Range () { clear(); x0 = x1 = 0; }
27
28 friend std::ostream& operator<< (std::ostream&, const Range&);
29 friend std::istream& operator>> (std::istream&, Range&);
30
31 bool is_range () const { return !(eq || gt || lt); }
32 std::pair<double,double> get_range () const;
33 void set_range (double _0, double _1) { x0=_0; x1=_1; clear(); }
34
35 bool is_value () const { return eq; }
36 double get_value () const;
37 void set_value (double x) { x0=x; clear(); eq=true; }
38
39 bool within (double x) const;
40};
41
42class Ranges
43{
44protected:
45 std::vector<Range> ranges;
46
47public:
48 friend std::ostream& operator<< (std::ostream&, const Ranges&);
49 friend std::istream& operator>> (std::istream&, Ranges&);
50 bool within (double x) const;
51};
52
53#endif // !__Ranges_H

Generated using doxygen 1.14.0