1 /*
2  * ContextClosest.h
3  *
4  *  Created on: Sep 25, 2014
5  *      Author: nek3d
6  */
7 
8 
9 #ifndef CONTEXTCLOSEST_H_
10 #define CONTEXTCLOSEST_H_
11 
12 #include "ContextIntersect.h"
13 
14 class ContextClosest : public ContextIntersect {
15 public:
16 	ContextClosest();
17 	virtual ~ContextClosest();
18 	virtual bool parseCmdArgs(int argc, char **argv, int skipFirstArgs);
hasIntersectMethods()19     virtual bool hasIntersectMethods() const { return true; }
20     virtual bool isValidState();
21 
hasTieMode()22     bool hasTieMode() const { return _haveTieMode; }
ignoreOverlaps()23     bool ignoreOverlaps() const { return _ignoreOverlaps; }
ignoreUpstream()24     bool ignoreUpstream() const { return _ignoreUpstream; }
ignoreDownstream()25     bool ignoreDownstream() const { return _ignoreDownstream; }
forceUpstream()26     bool forceUpstream() const { return _forceUpstream; }
forceDownstream()27     bool forceDownstream() const { return _forceDownstream; }
reportDistance()28     bool reportDistance() const { return _reportDistance; }
signDistance()29     bool signDistance() const { return _signDistance; }
hasStrandedDistMode()30     bool hasStrandedDistMode() const { return _haveStrandedDistMode; }
diffNames()31     bool diffNames() const { return _diffNames; }
getNumClosestHitsWanted()32     int getNumClosestHitsWanted() const { return _numClosestHitsWanted; }
33 
34     typedef enum { FIRST_TIE, LAST_TIE, ALL_TIES} tieModeType;
getTieMode()35     tieModeType getTieMode() const { return _tieMode; }
36 
37     typedef enum { REF_DIST, A_DIST, B_DIST} strandedDistanceModeType;
getStrandedDistMode()38     strandedDistanceModeType getStrandedDistMode() const { return _strandedDistMode; }
39 
40     typedef enum { EACH_DB, ALL_DBS } multiDbModeType;
getMultiDbMode()41     multiDbModeType getMultiDbMode() const { return _multiDbMode; }
42 
43 private:
44     bool _haveTieMode;
45     bool _ignoreOverlaps;
46     bool _ignoreUpstream;
47     bool _ignoreDownstream;
48     bool _forceUpstream;
49     bool _forceDownstream;
50     bool _reportDistance;
51     bool _signDistance;
52     bool _haveStrandedDistMode;
53     bool _diffNames;
54     tieModeType _tieMode;
55     strandedDistanceModeType _strandedDistMode;
56     multiDbModeType _multiDbMode;
57     int _numClosestHitsWanted;
58 
59     bool handle_d();
60     bool handle_D();
61     bool handle_io();
62     bool handle_iu();
63     bool handle_id();
64     bool handle_fu();
65     bool handle_fd();
66     bool handle_N();
67     bool handle_t();
68     bool handle_mdb();
69     bool handle_k();
70 };
71 
72 
73 #endif /* CONTEXTCLOSEST_H_ */
74