#include "Stacks.h" #include "Stack.h" using namespace std; namespace Moses2 { namespace SCFG { Stacks::~Stacks() { for (size_t i = 0; i < m_cells.size(); ++i) { std::vector &inner = m_cells[i]; for (size_t j = 0; j < inner.size(); ++j) { Stack *stack = inner[j]; delete stack; } } } void Stacks::Init(SCFG::Manager &mgr, size_t size) { m_cells.resize(size); for (size_t startPos = 0; startPos < size; ++startPos) { std::vector &inner = m_cells[startPos]; inner.reserve(size - startPos); for (size_t endPos = startPos; endPos < size; ++endPos) { inner.push_back(new Stack(mgr)); } } } void Stacks::OutputStacks() const { size_t size = m_cells.size(); for (size_t startPos = 0; startPos < size; ++startPos) { cerr.width(3); cerr << startPos << " "; } cerr << endl; for (size_t width = 1; width <= size; width++) { for( size_t space = 0; space < width-1; space++ ) { cerr << " "; } for (size_t startPos = 0; startPos <= size-width; ++startPos) { cerr.width(3); cerr << GetStack(startPos, width).GetSize() << " "; } cerr << endl; } } } }