00001 #include "CubeQueue.h"
00002
00003 namespace Moses
00004 {
00005 namespace Syntax
00006 {
00007
00008 CubeQueue::~CubeQueue()
00009 {
00010 while (!m_queue.empty()) {
00011 Cube *cube = m_queue.top();
00012 m_queue.pop();
00013 delete cube;
00014 }
00015 }
00016
00017 SHyperedge *CubeQueue::Pop()
00018 {
00019
00020 Cube *cube = m_queue.top();
00021 m_queue.pop();
00022
00023
00024 SHyperedge *hyperedge = cube->Pop();
00025
00026
00027 if (!cube->IsEmpty()) {
00028 m_queue.push(cube);
00029 } else {
00030 delete cube;
00031 }
00032
00033 return hyperedge;
00034 }
00035
00036 }
00037 }