Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/moses-smt/mosesdecoder.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/moses2/SCFG/Stacks.cpp')
-rw-r--r--contrib/moses2/SCFG/Stacks.cpp56
1 files changed, 56 insertions, 0 deletions
diff --git a/contrib/moses2/SCFG/Stacks.cpp b/contrib/moses2/SCFG/Stacks.cpp
new file mode 100644
index 000000000..63214c7c3
--- /dev/null
+++ b/contrib/moses2/SCFG/Stacks.cpp
@@ -0,0 +1,56 @@
+#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;
+ }
+
+}
+
+}
+}