| 76 | */ |
| 77 | template<class View, class Filter, int n> |
| 78 | class ViewBrancher : public Brancher { |
| 79 | protected: |
| 80 | /// The corresponding variable |
| 81 | typedef typename View::VarType Var; |
| 82 | /// Views to branch on |
| 83 | ViewArray<View> x; |
| 84 | /// Unassigned views start at x[start] |
| 85 | mutable int start; |
| 86 | /// View selection objects |
| 87 | ViewSel<View>* vs[n]; |
| 88 | /// Filter function |
| 89 | Filter f; |
| 90 | /// Return position information |
| 91 | Pos pos(Space& home); |
| 92 | /// Return view according to position information \a p |
| 93 | View view(const Pos& p) const; |
| 94 | /// Constructor for cloning \a b |
| 95 | ViewBrancher(Space& home, ViewBrancher<View,Filter,n>& b); |
| 96 | /// Constructor for creation |
| 97 | ViewBrancher(Home home, ViewArray<View>& x, ViewSel<View>* vs[n], |
| 98 | BranchFilter<Var> bf); |
| 99 | public: |
| 100 | /// Check status of brancher, return true if alternatives left |
| 101 | virtual bool status(const Space& home) const; |
| 102 | /// Delete brancher and return its size |
| 103 | virtual size_t dispose(Space& home); |
| 104 | }; |
| 105 | |
| 106 | //@} |
| 107 | |