diff options
author | Chris Dyer <redpony@gmail.com> | 2009-12-08 21:38:55 -0500 |
---|---|---|
committer | Chris Dyer <redpony@gmail.com> | 2009-12-08 21:38:55 -0500 |
commit | dc6930c00b4b276883280cff1ed6dcd9ddef03c7 (patch) | |
tree | d76d25baf66459d13da4faedffd7d6faba28a513 /src/lattice.h | |
parent | 5082307f382a6563d4ffb97034137da4e362e629 (diff) |
LICENSE fixes, full support of lattice decoding
Diffstat (limited to 'src/lattice.h')
-rw-r--r-- | src/lattice.h | 24 |
1 files changed, 17 insertions, 7 deletions
diff --git a/src/lattice.h b/src/lattice.h index 1177e768..71589b92 100644 --- a/src/lattice.h +++ b/src/lattice.h @@ -4,6 +4,14 @@ #include <string> #include <vector> #include "wordid.h" +#include "array2d.h" + +class Lattice; +struct LatticeTools { + static bool LooksLikePLF(const std::string &line); + static void ConvertTextToLattice(const std::string& text, Lattice* pl); + static void ConvertTextOrPLF(const std::string& text_or_plf, Lattice* pl); +}; struct LatticeArc { WordID label; @@ -14,18 +22,20 @@ struct LatticeArc { }; class Lattice : public std::vector<std::vector<LatticeArc> > { + friend void LatticeTools::ConvertTextOrPLF(const std::string& text_or_plf, Lattice* pl); public: Lattice() {} explicit Lattice(size_t t, const std::vector<LatticeArc>& v = std::vector<LatticeArc>()) : std::vector<std::vector<LatticeArc> >(t, v) {} - - // TODO add distance functions -}; + int Distance(int from, int to) const { + if (dist_.empty()) + return (to - from); + return dist_(from, to); + } -struct LatticeTools { - static bool LooksLikePLF(const std::string &line); - static void ConvertTextToLattice(const std::string& text, Lattice* pl); - static void ConvertTextOrPLF(const std::string& text_or_plf, Lattice* pl); + private: + void ComputeDistances(); + Array2D<int> dist_; }; #endif |