diff options
author | Patrick Simianer <simianer@cl.uni-heidelberg.de> | 2012-11-05 15:29:46 +0100 |
---|---|---|
committer | Patrick Simianer <simianer@cl.uni-heidelberg.de> | 2012-11-05 15:29:46 +0100 |
commit | 1db70a45d59946560fbd5db6487b55a8674ef973 (patch) | |
tree | 172585dafe4d1462f22d8200e733d52dddb55b1e /klm/search/final.hh | |
parent | 4dd5216d3afa9ab72b150e250a3c30a5f223ce53 (diff) | |
parent | 6bbf03ac46bd57400aa9e65a321a304a234af935 (diff) |
merge upstream/master
Diffstat (limited to 'klm/search/final.hh')
-rw-r--r-- | klm/search/final.hh | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/klm/search/final.hh b/klm/search/final.hh new file mode 100644 index 00000000..50e62cf2 --- /dev/null +++ b/klm/search/final.hh @@ -0,0 +1,36 @@ +#ifndef SEARCH_FINAL__ +#define SEARCH_FINAL__ + +#include "search/header.hh" +#include "util/pool.hh" + +namespace search { + +// A full hypothesis with pointers to children. +class Final : public Header { + public: + Final() {} + + Final(util::Pool &pool, Score score, Arity arity, Note note) + : Header(pool.Allocate(Size(arity)), arity) { + SetScore(score); + SetNote(note); + } + + // These are arrays of length GetArity(). + Final *Children() { + return reinterpret_cast<Final*>(After()); + } + const Final *Children() const { + return reinterpret_cast<const Final*>(After()); + } + + private: + static std::size_t Size(Arity arity) { + return kHeaderSize + arity * sizeof(const Final); + } +}; + +} // namespace search + +#endif // SEARCH_FINAL__ |