summaryrefslogtreecommitdiff
path: root/klm/search/final.hh
diff options
context:
space:
mode:
Diffstat (limited to 'klm/search/final.hh')
-rw-r--r--klm/search/final.hh40
1 files changed, 40 insertions, 0 deletions
diff --git a/klm/search/final.hh b/klm/search/final.hh
new file mode 100644
index 00000000..24e6f0a5
--- /dev/null
+++ b/klm/search/final.hh
@@ -0,0 +1,40 @@
+#ifndef SEARCH_FINAL__
+#define SEARCH_FINAL__
+
+#include "search/rule.hh"
+#include "search/types.hh"
+
+#include <boost/array.hpp>
+
+namespace search {
+
+class Final {
+ public:
+ typedef boost::array<const Final*, search::kMaxArity> ChildArray;
+
+ void Reset(Score bound, const Rule &from, const Final &left, const Final &right) {
+ bound_ = bound;
+ from_ = &from;
+ children_[0] = &left;
+ children_[1] = &right;
+ }
+
+ const ChildArray &Children() const { return children_; }
+
+ unsigned int ChildCount() const { return from_->Arity(); }
+
+ const Rule &From() const { return *from_; }
+
+ Score Bound() const { return bound_; }
+
+ private:
+ Score bound_;
+
+ const Rule *from_;
+
+ ChildArray children_;
+};
+
+} // namespace search
+
+#endif // SEARCH_FINAL__