File size: 1,173 Bytes
158b61b |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
#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<Stack*> &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<Stack*> &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;
}
}
}
}
|