mosesdecoder/moses2/ArcLists.h
2024-03-18 12:22:57 -07:00

45 lines
819 B
C++

/*
* ArcList.h
*
* Created on: 26 Oct 2015
* Author: hieu
*/
#pragma once
#include <vector>
#include <unordered_map>
#include <unordered_set>
namespace Moses2
{
class System;
class HypothesisBase;
typedef std::vector<const HypothesisBase*> ArcList;
class ArcLists
{
public:
ArcLists();
virtual ~ArcLists();
void AddArc(bool added, const HypothesisBase *currHypo,
const HypothesisBase *otherHypo);
void Sort();
void Delete(const HypothesisBase *hypo);
const ArcList &GetArcList(const HypothesisBase *hypo) const;
std::string Debug(const System &system) const;
protected:
typedef std::unordered_map<const HypothesisBase*, ArcList*> Coll;
Coll m_coll;
ArcList &GetArcList(const HypothesisBase *hypo);
ArcList &GetAndDetachArcList(const HypothesisBase *hypo);
};
}