diff options
Diffstat (limited to 'klm/search/final.hh')
| -rw-r--r-- | klm/search/final.hh | 40 | 
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__ | 
