File: RangeList.h

package info (click to toggle)
paraview 4.0.1-1~bpo70%2B1
  • links: PTS, VCS
  • area: main
  • in suites: wheezy-backports
  • size: 526,572 kB
  • sloc: cpp: 2,284,430; ansic: 816,374; python: 239,936; xml: 70,162; tcl: 48,295; fortran: 39,116; yacc: 5,466; java: 3,518; perl: 3,107; lex: 1,620; sh: 1,555; makefile: 932; asm: 471; pascal: 228
file content (53 lines) | stat: -rw-r--r-- 1,775 bytes parent folder | download | duplicates (3)
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
#ifndef RANGE_LIST_H
#define RANGE_LIST_H

#define RANGE_LIST_HEADER_ID "$Id: RangeList.h,v 1.4 2005/03/07 18:58:08 rcook Exp $"

#include <vector>
#include <string>
#include <iostream> 
#include <algorithm>
using namespace std; 

void PrintVersion(void); 

struct range {
  range(long range_start, long range_end) { start = range_start; end = range_end; }
  long start, end; 
  void Print(void) { 
    cout << "range: (" << start << ", " << end << ")" << endl; 
  }
 
  bool operator ==(range &r) const  { return r.start == start && r.end == end;}
  bool Contains(long num) const  { return num >= start && num <= end;}
  bool operator < (const range &r) const { return start < r.start; }
  bool operator < (long num) const { return num > end; }
  bool operator > (long num) const { return num < start; }
  
};

// for templated searches:
bool operator < (long num, const range &r) ;
bool operator > (long num, const range &r)  ;
bool operator ==(long num, const range &r);
bool operator ==(const range &r, long num)  ;


struct RangeList { 
  RangeList(char *filterfile, char verbosity=0) {Init(verbose); Parse(filterfile);} 
  RangeList(){Init(0);} // ok to not give a file to start with
  void Init(int verbose=0) { verbose = verbose; ranges.clear(); }
  void Parse(char *filterfile) ;//open and parse the filter file; add ranges therein to ranges, throw exception if problem
  void AddRange(long start, long end);
  bool InRange(long num) { return binary_search(ranges.begin(), ranges.end(), num); }
  void Print(void); 
  void Sort(void){ sort(ranges.begin(), ranges.end());}
  void Unique(void) {unique(ranges.begin(), ranges.end());}
  void GetOneRange(ifstream &filterfile); //throw exception if parse error
  char verbose; 
  vector<range> ranges;
};
    
#endif