[dasher: 6/27] Remove CSymbolAlphabet, use CAlphabet directly.



commit 71d0cb9ae5a770326c263a498a9dc0bc23041968
Author: Alan Lawrence <acl33 inf phy cam ac uk>
Date:   Wed Aug 4 20:10:12 2010 +0100

    Remove CSymbolAlphabet, use CAlphabet directly.
    
    (CSymbolAlphabet::GetSize() => CAlphabet::GetNumberTextSymbols())

 .../LanguageModelling/BigramLanguageModel.cpp      |    4 +-
 .../LanguageModelling/BigramLanguageModel.h        |    2 +-
 .../LanguageModelling/CTWLanguageModel.cpp         |    4 +-
 .../LanguageModelling/CTWLanguageModel.h           |    2 +-
 .../LanguageModelling/DictLanguageModel.cpp        |   12 ++--
 .../LanguageModelling/DictLanguageModel.h          |    2 +-
 .../LanguageModelling/JapaneseLanguageModel.cpp    |    4 +-
 .../LanguageModelling/JapaneseLanguageModel.h      |    2 +-
 Src/DasherCore/LanguageModelling/LanguageModel.cpp |    4 +-
 Src/DasherCore/LanguageModelling/LanguageModel.h   |   22 +----
 .../LanguageModelling/MixtureLanguageModel.h       |    9 +-
 .../LanguageModelling/PPMLanguageModel.cpp         |    4 +-
 .../LanguageModelling/PPMLanguageModel.h           |    2 +-
 .../LanguageModelling/PPMPYLanguageModel.cpp       |   15 ++--
 .../LanguageModelling/PPMPYLanguageModel.h         |    4 +-
 Src/DasherCore/LanguageModelling/SymbolAlphabet.h  |   82 --------------------
 .../LanguageModelling/WordLanguageModel.cpp        |   14 ++--
 .../LanguageModelling/WordLanguageModel.h          |    2 +-
 Src/DasherCore/NodeCreationManager.cpp             |   23 ++----
 Src/MacOSX/Dasher.xcodeproj/project.pbxproj        |    4 -
 20 files changed, 54 insertions(+), 163 deletions(-)
---
diff --git a/Src/DasherCore/LanguageModelling/BigramLanguageModel.cpp b/Src/DasherCore/LanguageModelling/BigramLanguageModel.cpp
index b73a61d..a46a0c2 100644
--- a/Src/DasherCore/LanguageModelling/BigramLanguageModel.cpp
+++ b/Src/DasherCore/LanguageModelling/BigramLanguageModel.cpp
@@ -23,8 +23,8 @@ static char THIS_FILE[] = __FILE__;
 
 /////////////////////////////////////////////////////////////////////////////
 
-CBigramLanguageModel::CBigramLanguageModel(Dasher::CEventHandler *pEventHandler, CSettingsStore *pSettingsStore, const CSymbolAlphabet &SymbolAlphabet)
-:CLanguageModel(pEventHandler, pSettingsStore, SymbolAlphabet), m_ContextAlloc(1024) {
+CBigramLanguageModel::CBigramLanguageModel(Dasher::CEventHandler *pEventHandler, CSettingsStore *pSettingsStore, const CAlphabet *pAlph)
+:CLanguageModel(pEventHandler, pSettingsStore, pAlph), m_ContextAlloc(1024) {
 
 }
 
diff --git a/Src/DasherCore/LanguageModelling/BigramLanguageModel.h b/Src/DasherCore/LanguageModelling/BigramLanguageModel.h
index 13d6db7..cd97829 100644
--- a/Src/DasherCore/LanguageModelling/BigramLanguageModel.h
+++ b/Src/DasherCore/LanguageModelling/BigramLanguageModel.h
@@ -25,7 +25,7 @@ namespace Dasher {
   /// \{
   class CBigramLanguageModel:public CLanguageModel, private NoClones {
   public:
-    CBigramLanguageModel(Dasher::CEventHandler * pEventHandler, CSettingsStore * pSettingsStore, const CSymbolAlphabet & alph);
+    CBigramLanguageModel(Dasher::CEventHandler * pEventHandler, CSettingsStore * pSettingsStore, const CAlphabet *pAlph);
       virtual ~ CBigramLanguageModel();
 
     Context CreateEmptyContext();
diff --git a/Src/DasherCore/LanguageModelling/CTWLanguageModel.cpp b/Src/DasherCore/LanguageModelling/CTWLanguageModel.cpp
index af10800..91503f0 100644
--- a/Src/DasherCore/LanguageModelling/CTWLanguageModel.cpp
+++ b/Src/DasherCore/LanguageModelling/CTWLanguageModel.cpp
@@ -40,8 +40,8 @@ static char THIS_FILE[] = __FILE__;
 #endif
 
 
-CCTWLanguageModel::CCTWLanguageModel(Dasher::CEventHandler *pEventHandler, CSettingsStore *pSettingsStore, const CSymbolAlphabet &SymbolAlphabet)
-:CLanguageModel(pEventHandler, pSettingsStore, SymbolAlphabet){
+CCTWLanguageModel::CCTWLanguageModel(Dasher::CEventHandler *pEventHandler, CSettingsStore *pSettingsStore, const CAlphabet *pAlph)
+:CLanguageModel(pEventHandler, pSettingsStore, pAlph){
 
 	Dasher::CHashTable HashTable;  // create hashtable
 	MaxDepth = 6;   // Maximum depth of the context tree
diff --git a/Src/DasherCore/LanguageModelling/CTWLanguageModel.h b/Src/DasherCore/LanguageModelling/CTWLanguageModel.h
index 5d2746d..e557b24 100644
--- a/Src/DasherCore/LanguageModelling/CTWLanguageModel.h
+++ b/Src/DasherCore/LanguageModelling/CTWLanguageModel.h
@@ -39,7 +39,7 @@ namespace Dasher {
   // CTW language model 
   class CCTWLanguageModel: public CLanguageModel {
   public:    
-	CCTWLanguageModel(Dasher::CEventHandler * pEventHandler, CSettingsStore * pSettingsStore, const CSymbolAlphabet & alph);
+	CCTWLanguageModel(Dasher::CEventHandler * pEventHandler, CSettingsStore * pSettingsStore, const CAlphabet *pAlph);
 	virtual ~ CCTWLanguageModel(); 
 
     Context CreateEmptyContext();			
diff --git a/Src/DasherCore/LanguageModelling/DictLanguageModel.cpp b/Src/DasherCore/LanguageModelling/DictLanguageModel.cpp
index 35bdec4..a4cd9b4 100644
--- a/Src/DasherCore/LanguageModelling/DictLanguageModel.cpp
+++ b/Src/DasherCore/LanguageModelling/DictLanguageModel.cpp
@@ -90,8 +90,8 @@ CDictLanguageModel::CDictnode * CDictLanguageModel::AddSymbolToNode(CDictnode *p
 // CDictLanguageModel defs
 /////////////////////////////////////////////////////////////////////
 
-CDictLanguageModel::CDictLanguageModel(Dasher::CEventHandler *pEventHandler, CSettingsStore *pSettingsStore, const CSymbolAlphabet &Alphabet)
-:CLanguageModel(pEventHandler, pSettingsStore, Alphabet), NodesAllocated(0), max_order(0), m_NodeAlloc(8192), m_ContextAlloc(1024) {
+CDictLanguageModel::CDictLanguageModel(Dasher::CEventHandler *pEventHandler, CSettingsStore *pSettingsStore, const CAlphabet *pAlph)
+:CLanguageModel(pEventHandler, pSettingsStore, pAlph), NodesAllocated(0), max_order(0), m_NodeAlloc(8192), m_ContextAlloc(1024) {
   m_pRoot = m_NodeAlloc.Alloc();
   m_pRoot->sbl = -1;
   m_rootcontext = new CDictContext(m_pRoot, 0);
@@ -111,10 +111,10 @@ CDictLanguageModel::CDictLanguageModel(Dasher::CEventHandler *pEventHandler, CSe
 
     Context TempContext(CreateEmptyContext());
 
-    //      std::cout << SymbolAlphabet().GetAlphabetPointer() << std::endl;
+    //      std::cout << m_pAlphabet << std::endl;
 
     std::vector < symbol > Symbols;
-    SymbolAlphabet().GetAlphabetPointer()->GetSymbols(Symbols, CurrentWord);
+    m_pAlphabet->GetSymbols(Symbols, CurrentWord);
 
     for(std::vector < symbol >::iterator it(Symbols.begin()); it != Symbols.end(); ++it) {
       MyLearnSymbol(TempContext, *it);
@@ -530,7 +530,7 @@ void CDictLanguageModel::AddSymbol(CDictLanguageModel::CDictContext &context, sy
 
   // Collapse the context if we have started a new word
 
-  if(sym == SymbolAlphabet().GetSpaceSymbol()) {
+  if(sym == m_pAlphabet->GetSpaceSymbol()) {
     CollapseContext(context);
   }
 
@@ -562,7 +562,7 @@ void CDictLanguageModel::EnterSymbol(Context c, int Symbol) {
   // collapse the context - the information required to update the
   // word part of the context is stored in the string.
 
-  if(Symbol == SymbolAlphabet().GetSpaceSymbol()) {
+  if(Symbol == m_pAlphabet->GetSpaceSymbol()) {
     CollapseContext(context);
     return;
   }
diff --git a/Src/DasherCore/LanguageModelling/DictLanguageModel.h b/Src/DasherCore/LanguageModelling/DictLanguageModel.h
index d0c5dba..44fbdcb 100644
--- a/Src/DasherCore/LanguageModelling/DictLanguageModel.h
+++ b/Src/DasherCore/LanguageModelling/DictLanguageModel.h
@@ -28,7 +28,7 @@ namespace Dasher {
   /// \{
   class CDictLanguageModel:public CLanguageModel {
   public:
-    CDictLanguageModel(Dasher::CEventHandler * pEventHandler, CSettingsStore * pSettingsStore, const CSymbolAlphabet & Alphabet);
+    CDictLanguageModel(Dasher::CEventHandler * pEventHandler, CSettingsStore * pSettingsStore, const CAlphabet *pAlph);
     virtual ~CDictLanguageModel();
 
     Context CreateEmptyContext();
diff --git a/Src/DasherCore/LanguageModelling/JapaneseLanguageModel.cpp b/Src/DasherCore/LanguageModelling/JapaneseLanguageModel.cpp
index ac1ca8a..5aa6a42 100644
--- a/Src/DasherCore/LanguageModelling/JapaneseLanguageModel.cpp
+++ b/Src/DasherCore/LanguageModelling/JapaneseLanguageModel.cpp
@@ -38,8 +38,8 @@ static char THIS_FILE[] = __FILE__;
 
 /////////////////////////////////////////////////////////////////////
 
-CJapaneseLanguageModel::CJapaneseLanguageModel(Dasher::CEventHandler *pEventHandler, CSettingsStore *pSettingsStore, const CSymbolAlphabet &SymbolAlphabet)
-:CLanguageModel(pEventHandler, pSettingsStore, SymbolAlphabet), m_iMaxOrder(5), NodesAllocated(0), m_NodeAlloc(8192), m_ContextAlloc(1024) {
+CJapaneseLanguageModel::CJapaneseLanguageModel(Dasher::CEventHandler *pEventHandler, CSettingsStore *pSettingsStore, const CAlphabet *pAlph)
+:CLanguageModel(pEventHandler, pSettingsStore, pAlph), m_iMaxOrder(5), NodesAllocated(0), m_NodeAlloc(8192), m_ContextAlloc(1024) {
   m_pRoot = m_NodeAlloc.Alloc();
   m_pRoot->symbol = -1;
 
diff --git a/Src/DasherCore/LanguageModelling/JapaneseLanguageModel.h b/Src/DasherCore/LanguageModelling/JapaneseLanguageModel.h
index 98737c3..034d791 100644
--- a/Src/DasherCore/LanguageModelling/JapaneseLanguageModel.h
+++ b/Src/DasherCore/LanguageModelling/JapaneseLanguageModel.h
@@ -21,7 +21,7 @@ namespace Dasher {
   /// \{
   class CJapaneseLanguageModel:public CLanguageModel, private NoClones {
   public:
-    CJapaneseLanguageModel(Dasher::CEventHandler * pEventHandler, CSettingsStore * pSettingsStore, const CSymbolAlphabet & alph);
+    CJapaneseLanguageModel(Dasher::CEventHandler * pEventHandler, CSettingsStore * pSettingsStore, const CAlphabet *pAlph);
 
     virtual ~ CJapaneseLanguageModel();
 
diff --git a/Src/DasherCore/LanguageModelling/LanguageModel.cpp b/Src/DasherCore/LanguageModelling/LanguageModel.cpp
index 14b084e..541bd32 100644
--- a/Src/DasherCore/LanguageModelling/LanguageModel.cpp
+++ b/Src/DasherCore/LanguageModelling/LanguageModel.cpp
@@ -27,8 +27,8 @@ static char THIS_FILE[] = __FILE__;
 
 ///////////////////////////////////////////////////////////////////
 
-CLanguageModel::CLanguageModel(Dasher::CEventHandler *pEventHandler, CSettingsStore *pSettingsStore, const CSymbolAlphabet &Alphabet)
-  :CDasherComponent(pEventHandler, pSettingsStore), m_Alphabet(Alphabet) {
+CLanguageModel::CLanguageModel(Dasher::CEventHandler *pEventHandler, CSettingsStore *pSettingsStore, const CAlphabet *pAlph)
+  :CDasherComponent(pEventHandler, pSettingsStore), m_pAlphabet(pAlph) {
 }
 
 void CLanguageModel::HandleEvent(Dasher::CEvent *pEvent) {
diff --git a/Src/DasherCore/LanguageModelling/LanguageModel.h b/Src/DasherCore/LanguageModelling/LanguageModel.h
index 684e3a7..28365d0 100644
--- a/Src/DasherCore/LanguageModelling/LanguageModel.h
+++ b/Src/DasherCore/LanguageModelling/LanguageModel.h
@@ -11,7 +11,7 @@
 
 #include "../DasherTypes.h"
 
-#include "SymbolAlphabet.h"
+#include "../Alphabet/Alphabet.h"
 #include "../DasherComponent.h"
 #include <vector>
 
@@ -36,7 +36,7 @@ public:
 
   /////////////////////////////////////////////////////////////////////////////
 
-  CLanguageModel(Dasher::CEventHandler *pEventHandler, CSettingsStore *pSettingsStore, const CSymbolAlphabet &Alphabet);
+  CLanguageModel(Dasher::CEventHandler *pEventHandler, CSettingsStore *pSettingsStore, const CAlphabet *pAlph);
 
   virtual ~CLanguageModel() {};
 
@@ -118,17 +118,6 @@ public:
 
   /// @}
 
-  /// @name Internal member access
-  /// Access to internal member classes. This is dangerous and should
-  /// be considered obsolete.
-  /// @{
-
-  const CSymbolAlphabet &SymbolAlphabet() const {
-    return m_Alphabet;
-  };
-
-  /// @}
-
   ///
   /// Get the maximum useful context length for this language model
 
@@ -157,13 +146,10 @@ public:
   };
 
   int GetSize() const {
-    return m_Alphabet.GetSize();
+    return m_pAlphabet->GetNumberTextSymbols();
   }
 
-
- private:
-
-  const CSymbolAlphabet m_Alphabet;
+  const CAlphabet *m_pAlphabet;
 
 };
 
diff --git a/Src/DasherCore/LanguageModelling/MixtureLanguageModel.h b/Src/DasherCore/LanguageModelling/MixtureLanguageModel.h
index 7a78907..7bcee9a 100644
--- a/Src/DasherCore/LanguageModelling/MixtureLanguageModel.h
+++ b/Src/DasherCore/LanguageModelling/MixtureLanguageModel.h
@@ -13,7 +13,6 @@
 #include "PPMLanguageModel.h"
 #include "DictLanguageModel.h"
 
-#include "SymbolAlphabet.h"
 //#include <iostream>
 #include <vector>
 
@@ -29,14 +28,14 @@ namespace Dasher {
 
     /////////////////////////////////////////////////////////////////////////////
 
-    CMixtureLanguageModel(Dasher::CEventHandler * pEventHandler, CSettingsStore * pSettingsStore, const CSymbolAlphabet & Alphabet):CLanguageModel(pEventHandler, pSettingsStore, Alphabet) {
+    CMixtureLanguageModel(Dasher::CEventHandler * pEventHandler, CSettingsStore * pSettingsStore, const CAlphabet *pAlph):CLanguageModel(pEventHandler, pSettingsStore, pAlph) {
 
-      //      std::cout << SymbolAlphabet().GetAlphabetPointer() << std::endl;
+      //      std::cout << m_pAlphabet << std::endl;
 
       NextContext = 0;
 
-      lma = new CPPMLanguageModel(m_pEventHandler, m_pSettingsStore, Alphabet);
-      lmb = new CDictLanguageModel(m_pEventHandler, m_pSettingsStore, Alphabet);
+      lma = new CPPMLanguageModel(m_pEventHandler, m_pSettingsStore, m_pAlphabet);
+      lmb = new CDictLanguageModel(m_pEventHandler, m_pSettingsStore, m_pAlphabet);
 
     };
 
diff --git a/Src/DasherCore/LanguageModelling/PPMLanguageModel.cpp b/Src/DasherCore/LanguageModelling/PPMLanguageModel.cpp
index ad0a739..3e39120 100644
--- a/Src/DasherCore/LanguageModelling/PPMLanguageModel.cpp
+++ b/Src/DasherCore/LanguageModelling/PPMLanguageModel.cpp
@@ -30,8 +30,8 @@ static char THIS_FILE[] = __FILE__;
 
 /////////////////////////////////////////////////////////////////////
 
-CPPMLanguageModel::CPPMLanguageModel(Dasher::CEventHandler *pEventHandler, CSettingsStore *pSettingsStore, const CSymbolAlphabet &SymbolAlphabet)
-:CLanguageModel(pEventHandler, pSettingsStore, SymbolAlphabet), m_iMaxOrder(4), NodesAllocated(0), m_NodeAlloc(8192), m_ContextAlloc(1024) {
+CPPMLanguageModel::CPPMLanguageModel(Dasher::CEventHandler *pEventHandler, CSettingsStore *pSettingsStore, const CAlphabet *pAlph)
+:CLanguageModel(pEventHandler, pSettingsStore, pAlph), m_iMaxOrder(4), NodesAllocated(0), m_NodeAlloc(8192), m_ContextAlloc(1024) {
   m_pRoot = m_NodeAlloc.Alloc();
   m_pRoot->sym = -1;
 
diff --git a/Src/DasherCore/LanguageModelling/PPMLanguageModel.h b/Src/DasherCore/LanguageModelling/PPMLanguageModel.h
index b7edce3..5765658 100644
--- a/Src/DasherCore/LanguageModelling/PPMLanguageModel.h
+++ b/Src/DasherCore/LanguageModelling/PPMLanguageModel.h
@@ -90,7 +90,7 @@ namespace Dasher {
       int order;
     };
   public:
-    CPPMLanguageModel(Dasher::CEventHandler * pEventHandler, CSettingsStore * pSettingsStore, const CSymbolAlphabet & alph);
+    CPPMLanguageModel(Dasher::CEventHandler * pEventHandler, CSettingsStore * pSettingsStore, const CAlphabet *pAlph);
     bool eq(CPPMLanguageModel *other);
     virtual ~ CPPMLanguageModel();
 
diff --git a/Src/DasherCore/LanguageModelling/PPMPYLanguageModel.cpp b/Src/DasherCore/LanguageModelling/PPMPYLanguageModel.cpp
index 85fad58..1b13cf5 100644
--- a/Src/DasherCore/LanguageModelling/PPMPYLanguageModel.cpp
+++ b/Src/DasherCore/LanguageModelling/PPMPYLanguageModel.cpp
@@ -13,7 +13,6 @@
 #include "../../Common/Common.h"
 #include "PPMPYLanguageModel.h"
 #include "LanguageModel.h"
-#include "SymbolAlphabet.h"
 #include <math.h>
 #include <stack>
 #include <sstream>
@@ -34,8 +33,8 @@ static char THIS_FILE[] = __FILE__;
 
 /////////////////////////////////////////////////////////////////////
 
-CPPMPYLanguageModel::CPPMPYLanguageModel(Dasher::CEventHandler *pEventHandler, CSettingsStore *pSettingsStore, const CSymbolAlphabet &SymbolAlphabet, const CSymbolAlphabet &pySymbolAlphabet)
-  :CLanguageModel(pEventHandler, pSettingsStore, SymbolAlphabet), m_iMaxOrder(2), NodesAllocated(0), m_NodeAlloc(8192), m_ContextAlloc(1024), m_pyAlphabet(pySymbolAlphabet){
+CPPMPYLanguageModel::CPPMPYLanguageModel(Dasher::CEventHandler *pEventHandler, CSettingsStore *pSettingsStore, const CAlphabet *pAlph, const CAlphabet *pPyAlphabet)
+  :CLanguageModel(pEventHandler, pSettingsStore, pAlph), m_iMaxOrder(2), NodesAllocated(0), m_NodeAlloc(8192), m_ContextAlloc(1024), m_pPyAlphabet(pPyAlphabet){
   m_pRoot = m_NodeAlloc.Alloc();
   m_pRoot->symbol = -1;
   //  m_pRoot->child.resize(DIVISION, NULL);
@@ -47,9 +46,9 @@ CPPMPYLanguageModel::CPPMPYLanguageModel(Dasher::CEventHandler *pEventHandler, C
   m_pRootContext->head = m_pRoot;
   m_pRootContext->order = 0;
 
-  m_iAlphSize = SymbolAlphabet.GetSize();
+  m_iAlphSize = GetSize();
   //  std::cout<<"Alphaunit: "<<UNITALPH<<std::endl;
-  m_iPYAlphSize = pySymbolAlphabet.GetSize();
+  m_iPYAlphSize = m_pPyAlphabet->GetNumberTextSymbols();
   //  std::cout<<"PYunit: "<<UNITPY<<std::endl;
   
   // Cache the result of update exclusion - otherwise we have to look up a lot when training, which is slow
@@ -328,7 +327,7 @@ void CPPMPYLanguageModel::GetProbs(Context context, std::vector<unsigned int> &p
   */
   //  DASHER_ASSERT(m_setContexts.count(ppmcontext) > 0);
 
-  int iNumSymbols = m_pyAlphabet.GetSize();
+  int iNumSymbols = m_pPyAlphabet->GetNumberTextSymbols();
   
   probs.resize(iNumSymbols);
 
@@ -483,7 +482,7 @@ void CPPMPYLanguageModel::AddPYSymbol(CPPMPYLanguageModel::CPPMPYContext &contex
   if(pysym==0)
     return;
 
-  DASHER_ASSERT(pysym >= 0 && pysym < m_pyAlphabet.GetSize());
+  DASHER_ASSERT(pysym >= 0 && pysym < m_pPyAlphabet->GetNumberTextSymbols());
 
   CPPMPYnode *vineptr, *temp, *pytail;
   int updatecnt = 1;
@@ -577,7 +576,7 @@ void CPPMPYLanguageModel::LearnPYSymbol(Context c, int Symbol) {
     return;
   
 
-  DASHER_ASSERT(Symbol >= 0 && Symbol < m_pyAlphabet.GetSize());
+  DASHER_ASSERT(Symbol >= 0 && Symbol < m_pPyAlphabet->GetNumberTextSymbols());
   CPPMPYLanguageModel::CPPMPYContext & context = *(CPPMPYContext *) (c);
  
   //  std::cout<<"py learn context : "<<context.head->symbol<<std::endl;
diff --git a/Src/DasherCore/LanguageModelling/PPMPYLanguageModel.h b/Src/DasherCore/LanguageModelling/PPMPYLanguageModel.h
index fcca317..38258dc 100644
--- a/Src/DasherCore/LanguageModelling/PPMPYLanguageModel.h
+++ b/Src/DasherCore/LanguageModelling/PPMPYLanguageModel.h
@@ -75,7 +75,7 @@ namespace Dasher {
     };
 	  
   public:
-    CPPMPYLanguageModel(Dasher::CEventHandler * pEventHandler, CSettingsStore * pSettingsStore, const CSymbolAlphabet & alph, const CSymbolAlphabet & pyalph);
+    CPPMPYLanguageModel(Dasher::CEventHandler * pEventHandler, CSettingsStore * pSettingsStore, const CAlphabet *pAlph, const CAlphabet *pPyAlph);
 
     virtual ~ CPPMPYLanguageModel();
 
@@ -131,7 +131,7 @@ namespace Dasher {
 
   private:
 
-    CSymbolAlphabet m_pyAlphabet;
+    const CAlphabet *m_pPyAlphabet;
     int m_iAlphSize;
     int m_iPYAlphSize;
 
diff --git a/Src/DasherCore/LanguageModelling/WordLanguageModel.cpp b/Src/DasherCore/LanguageModelling/WordLanguageModel.cpp
index 7886bc6..ec9ec9c 100644
--- a/Src/DasherCore/LanguageModelling/WordLanguageModel.cpp
+++ b/Src/DasherCore/LanguageModelling/WordLanguageModel.cpp
@@ -122,8 +122,8 @@ CWordLanguageModel::CWordnode * CWordLanguageModel::AddSymbolToNode(CWordnode *p
 /////////////////////////////////////////////////////////////////////
 
 CWordLanguageModel::CWordLanguageModel(Dasher::CEventHandler *pEventHandler, CSettingsStore *pSettingsStore, 
-				       const CSymbolAlphabet &Alphabet)
-  :CLanguageModel(pEventHandler, pSettingsStore, Alphabet), NodesAllocated(0), 
+				       const CAlphabet *pAlph)
+  :CLanguageModel(pEventHandler, pSettingsStore, pAlph), NodesAllocated(0), 
    max_order(2), m_NodeAlloc(8192), m_ContextAlloc(1024) {
   
   // Construct a root node for the trie
@@ -134,7 +134,7 @@ CWordLanguageModel::CWordLanguageModel(Dasher::CEventHandler *pEventHandler, CSe
 
   // Create a spelling model
 
-  pSpellingModel = new CPPMLanguageModel(m_pEventHandler, m_pSettingsStore, Alphabet);
+  pSpellingModel = new CPPMLanguageModel(m_pEventHandler, m_pSettingsStore, m_pAlphabet);
 
   // Construct a root context
   
@@ -163,10 +163,10 @@ CWordLanguageModel::CWordLanguageModel(Dasher::CEventHandler *pEventHandler, CSe
 
       CPPMLanguageModel::Context TempContext(pSpellingModel->CreateEmptyContext());
 
-      //      std::cout << SymbolAlphabet().GetAlphabetPointer() << std::endl;
+      //      std::cout << m_pAlphabet << std::endl;
 
       std::vector < symbol > Symbols;
-      SymbolAlphabet().GetAlphabetPointer()->GetSymbols(Symbols, CurrentWord);
+      m_pAlphabet->GetSymbols(Symbols, CurrentWord);
 
       for(std::vector < symbol >::iterator it(Symbols.begin()); it != Symbols.end(); ++it) {
         pSpellingModel->LearnSymbol(TempContext, *it);
@@ -386,7 +386,7 @@ void CWordLanguageModel::CollapseContext(CWordLanguageModel::CWordContext &conte
 
       // FIXME - remember to delete member vectors when we're done
 
-      // FIXME broken SymbolAlphabet().GetAlphabetPointer()->GetSymbols( &oSymbols, &(context.current_word), false );
+      // FIXME broken m_pAlphabet->GetSymbols( &oSymbols, &(context.current_word), false );
 
       // We're not storing the actual string - just a list of symbol IDs
 
@@ -626,7 +626,7 @@ void CWordLanguageModel::AddSymbol(CWordLanguageModel::CWordContext &context, sy
   // Collapse the context (with learning) if we've just entered a space
   // FIXME - we need to generalise this for more languages.
 
-  if(sym == SymbolAlphabet().GetSpaceSymbol()) {
+  if(sym == m_pAlphabet->GetSpaceSymbol()) {
     CollapseContext(context, bLearn);
     context.m_dSpellingFactor = 1.0;
   }
diff --git a/Src/DasherCore/LanguageModelling/WordLanguageModel.h b/Src/DasherCore/LanguageModelling/WordLanguageModel.h
index c3c63ed..2154811 100644
--- a/Src/DasherCore/LanguageModelling/WordLanguageModel.h
+++ b/Src/DasherCore/LanguageModelling/WordLanguageModel.h
@@ -35,7 +35,7 @@ namespace Dasher {
   ///
   class CWordLanguageModel:public CLanguageModel {
   public:
-    CWordLanguageModel(Dasher::CEventHandler * pEventHandler, CSettingsStore * pSettingsStore, const CSymbolAlphabet & Alphabet);
+    CWordLanguageModel(Dasher::CEventHandler * pEventHandler, CSettingsStore * pSettingsStore, const CAlphabet *pAlph);
       virtual ~ CWordLanguageModel();
 
     Context CreateEmptyContext();
diff --git a/Src/DasherCore/NodeCreationManager.cpp b/Src/DasherCore/NodeCreationManager.cpp
index 9392ca6..510448f 100644
--- a/Src/DasherCore/NodeCreationManager.cpp
+++ b/Src/DasherCore/NodeCreationManager.cpp
@@ -31,10 +31,6 @@ CNodeCreationManager::CNodeCreationManager(Dasher::CDasherInterfaceBase *pInterf
     pSettingsStore->SetLongParameter(LP_REAL_ORIENTATION, m_pAlphabet->GetOrientation());
   // --
   
-  CSymbolAlphabet alphabet(m_pAlphabet->GetNumberTextSymbols());
-  alphabet.SetSpaceSymbol(m_pAlphabet->GetSpaceSymbol());      // FIXME - is this right, or do we have to do some kind of translation?
-  alphabet.SetAlphabetPointer(m_pAlphabet);    // Horrible hack, but ignore for now.
-  
   // Create an appropriate language model;
   
   //WZ: Mandarin Dasher Change
@@ -45,11 +41,8 @@ CNodeCreationManager::CNodeCreationManager(Dasher::CDasherInterfaceBase *pInterf
     Dasher::CAlphIO::AlphInfo oCHAlphInfo = pAlphIO->GetInfo(CHAlphabet);
     CAlphabet *pCHAlphabet = new CAlphabet(oCHAlphInfo);
     
-    CSymbolAlphabet chalphabet(pCHAlphabet->GetNumberTextSymbols());
-    chalphabet.SetSpaceSymbol(pCHAlphabet->GetSpaceSymbol());
-    chalphabet.SetAlphabetPointer(pCHAlphabet);
-    //std::cout<<"CHALphabet size "<<chalphabet.GetSize(); [7603]
-    m_pLanguageModel = new CPPMPYLanguageModel(pEventHandler, pSettingsStore, chalphabet, alphabet);
+    //std::cout<<"CHALphabet size "<< pCHAlphabet->GetNumberTextSymbols(); [7603]
+    m_pLanguageModel = new CPPMPYLanguageModel(pEventHandler, pSettingsStore, pCHAlphabet, m_pAlphabet);
     m_pTrainer = new CMandarinTrainer(m_pLanguageModel, m_pAlphabet, pCHAlphabet);
     std::cout<<"Setting PPMPY model"<<std::endl;
   }
@@ -59,22 +52,22 @@ CNodeCreationManager::CNodeCreationManager(Dasher::CDasherInterfaceBase *pInterf
     // FIXME - return to using enum here
     switch (pSettingsStore->GetLongParameter(LP_LANGUAGE_MODEL_ID)) {
       case 0:
-        m_pLanguageModel = new CPPMLanguageModel(pEventHandler, pSettingsStore, alphabet);
+        m_pLanguageModel = new CPPMLanguageModel(pEventHandler, pSettingsStore, m_pAlphabet);
         break;
       case 2:
-        m_pLanguageModel = new CWordLanguageModel(pEventHandler, pSettingsStore, alphabet);
+        m_pLanguageModel = new CWordLanguageModel(pEventHandler, pSettingsStore, m_pAlphabet);
         break;
       case 3:
-        m_pLanguageModel = new CMixtureLanguageModel(pEventHandler, pSettingsStore, alphabet);
+        m_pLanguageModel = new CMixtureLanguageModel(pEventHandler, pSettingsStore, m_pAlphabet);
         break;  
       case 4:
-        m_pLanguageModel = new CCTWLanguageModel(pEventHandler, pSettingsStore, alphabet);
+        m_pLanguageModel = new CCTWLanguageModel(pEventHandler, pSettingsStore, m_pAlphabet);
         break;
         
       default:
         // If there is a bogus value for the language model ID, we'll default
         // to our trusty old PPM language model.
-        m_pLanguageModel = new CPPMLanguageModel(pEventHandler, pSettingsStore, alphabet);    
+        m_pLanguageModel = new CPPMLanguageModel(pEventHandler, pSettingsStore, m_pAlphabet);    
         break;
     }
     m_pTrainer = new CTrainer(m_pLanguageModel, m_pAlphabet);
@@ -111,7 +104,7 @@ CNodeCreationManager::CNodeCreationManager(Dasher::CDasherInterfaceBase *pInterf
     //test...
     m_pLanguageModel->WriteToFile("test.model");
     CPPMLanguageModel *pLan = (CPPMLanguageModel *)m_pLanguageModel;
-    CPPMLanguageModel *pLM2 = new CPPMLanguageModel(pEventHandler, pSettingsStore, pLan->SymbolAlphabet());
+    CPPMLanguageModel *pLM2 = new CPPMLanguageModel(pEventHandler, pSettingsStore, m_pAlphabet);
     pLM2->ReadFromFile("test.model");
     if (!pLan->eq(pLM2)) {
       std::cout << "Not equal!" << std::endl;
diff --git a/Src/MacOSX/Dasher.xcodeproj/project.pbxproj b/Src/MacOSX/Dasher.xcodeproj/project.pbxproj
index 96388ae..9750753 100755
--- a/Src/MacOSX/Dasher.xcodeproj/project.pbxproj
+++ b/Src/MacOSX/Dasher.xcodeproj/project.pbxproj
@@ -99,7 +99,6 @@
 		1948BF060C226CFD001DFA32 /* MixtureLanguageModel.h in Headers */ = {isa = PBXBuildFile; fileRef = 1948BE610C226CFD001DFA32 /* MixtureLanguageModel.h */; };
 		1948BF070C226CFD001DFA32 /* PPMLanguageModel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1948BE620C226CFD001DFA32 /* PPMLanguageModel.cpp */; };
 		1948BF080C226CFD001DFA32 /* PPMLanguageModel.h in Headers */ = {isa = PBXBuildFile; fileRef = 1948BE630C226CFD001DFA32 /* PPMLanguageModel.h */; };
-		1948BF090C226CFD001DFA32 /* SymbolAlphabet.h in Headers */ = {isa = PBXBuildFile; fileRef = 1948BE640C226CFD001DFA32 /* SymbolAlphabet.h */; };
 		1948BF0A0C226CFD001DFA32 /* WordLanguageModel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1948BE650C226CFD001DFA32 /* WordLanguageModel.cpp */; };
 		1948BF0B0C226CFD001DFA32 /* WordLanguageModel.h in Headers */ = {isa = PBXBuildFile; fileRef = 1948BE660C226CFD001DFA32 /* WordLanguageModel.h */; };
 		1948BF0D0C226CFD001DFA32 /* MemoryLeak.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1948BE680C226CFD001DFA32 /* MemoryLeak.cpp */; };
@@ -510,7 +509,6 @@
 		1948BE610C226CFD001DFA32 /* MixtureLanguageModel.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = MixtureLanguageModel.h; sourceTree = "<group>"; };
 		1948BE620C226CFD001DFA32 /* PPMLanguageModel.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = PPMLanguageModel.cpp; sourceTree = "<group>"; };
 		1948BE630C226CFD001DFA32 /* PPMLanguageModel.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = PPMLanguageModel.h; sourceTree = "<group>"; };
-		1948BE640C226CFD001DFA32 /* SymbolAlphabet.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SymbolAlphabet.h; sourceTree = "<group>"; };
 		1948BE650C226CFD001DFA32 /* WordLanguageModel.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = WordLanguageModel.cpp; sourceTree = "<group>"; };
 		1948BE660C226CFD001DFA32 /* WordLanguageModel.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = WordLanguageModel.h; sourceTree = "<group>"; };
 		1948BE680C226CFD001DFA32 /* MemoryLeak.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = MemoryLeak.cpp; sourceTree = "<group>"; };
@@ -1096,7 +1094,6 @@
 				1948BE610C226CFD001DFA32 /* MixtureLanguageModel.h */,
 				1948BE620C226CFD001DFA32 /* PPMLanguageModel.cpp */,
 				1948BE630C226CFD001DFA32 /* PPMLanguageModel.h */,
-				1948BE640C226CFD001DFA32 /* SymbolAlphabet.h */,
 				1948BE650C226CFD001DFA32 /* WordLanguageModel.cpp */,
 				1948BE660C226CFD001DFA32 /* WordLanguageModel.h */,
 			);
@@ -1449,7 +1446,6 @@
 				1948BF040C226CFD001DFA32 /* LanguageModel.h in Headers */,
 				1948BF060C226CFD001DFA32 /* MixtureLanguageModel.h in Headers */,
 				1948BF080C226CFD001DFA32 /* PPMLanguageModel.h in Headers */,
-				1948BF090C226CFD001DFA32 /* SymbolAlphabet.h in Headers */,
 				1948BF0B0C226CFD001DFA32 /* WordLanguageModel.h in Headers */,
 				1948BF0E0C226CFD001DFA32 /* MemoryLeak.h in Headers */,
 				1948BF110C226CFD001DFA32 /* ModuleManager.h in Headers */,



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]