All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
SolverRangeBuilder.h
1 // Copyright eeGeo Ltd (2012-2014), All Rights Reserved
2 
3 #pragma once
4 
5 #include "Types.h"
6 #include "Routes.h"
7 
8 namespace Eegeo
9 {
10  namespace Routes
11  {
12  namespace Fitting
13  {
14  namespace NavGraphConforming
15  {
17  {
18  public:
20 
21  int GetFirstIndex() const { return m_firstIndex; }
22 
23  int GetLastIndex() const { return m_lastIndex; }
24 
25  bool GetConformToNavGraph() const { return m_conformToNavGraph; }
26 
27  bool IsOpen() const { return m_firstIndex >= 0; }
28 
29  void Open(int firstIndex, bool conformToNavGraph);
30 
31  void Open(const SolverRange& solverRange);
32 
33  SolverRange Close();
34 
35  void Extend(bool conformToNavGraph, int lastIndex);
36 
37  bool NeedsClose() const { return IsOpen() && !m_canExtend; }
38 
39  bool TryExtend(const SolverRange& suffix);
40 
41  private:
42  int m_firstIndex;
43  int m_lastIndex;
44  bool m_conformToNavGraph;
45  bool m_canExtend;
46  };
47  }
48  }
49  }
50 }