summaryrefslogtreecommitdiff
path: root/inputmethods/dasher/PPMLanguageModel.h
Side-by-side diff
Diffstat (limited to 'inputmethods/dasher/PPMLanguageModel.h') (more/less context) (ignore whitespace changes)
-rw-r--r--inputmethods/dasher/PPMLanguageModel.h7
1 files changed, 4 insertions, 3 deletions
diff --git a/inputmethods/dasher/PPMLanguageModel.h b/inputmethods/dasher/PPMLanguageModel.h
index bd860b8..7025a0a 100644
--- a/inputmethods/dasher/PPMLanguageModel.h
+++ b/inputmethods/dasher/PPMLanguageModel.h
@@ -1,122 +1,123 @@
// PPMLanguageModel.h
//
/////////////////////////////////////////////////////////////////////////////
//
// Copyright (c) 1999-2002 David Ward
//
/////////////////////////////////////////////////////////////////////////////
#ifndef __PPMLanguageModel_h__
#define __PPMLanguageModel_h__
#include "NoClones.h"
#include "MSVC_Unannoy.h"
#include <vector>
#include <stdio.h>
#include "LanguageModel.h"
-static char dumpTrieStr[40000];
+// static char dumpTrieStr[40000];
const int MAX_ORDER = 5;
const int maxcont =200;
namespace Dasher {class CPPMLanguageModel;}
class Dasher::CPPMLanguageModel : public Dasher::CLanguageModel, private NoClones
{
public:
CPPMLanguageModel(CAlphabet *_alphabet, int _normalization);
- ~CPPMLanguageModel();
+ virtual ~CPPMLanguageModel();
class CPPMnode {
public:
CPPMnode* find_symbol(int sym);
CPPMnode* add_symbol_to_node(int sym,int *update);
CPPMnode* child;
CPPMnode* next;
CPPMnode* vine;
short int count;
const short int symbol;
CPPMnode(int sym);
};
class CPPMContext : public CContext {
public:
- CPPMContext(CPPMContext const &input) {head = input.head; order= input.order;}
+ CPPMContext(CPPMContext const &input) : CContext(input)
+ { head = input.head;order= input.order;}
CPPMContext(CPPMnode* _head=0, int _order=0) : head(_head),order(_order) {};
~CPPMContext() {};
void dump();
CPPMnode* head;
int order;
};
void ReleaseContext(CContext*);
CContext* GetRootContext();
inline CContext* CloneContext(CContext*);
void EnterSymbol(CContext* context, modelchar Symbol);
//inline bool GetProbs(CContext*,std::vector<symbol> &newchars,std::vector<unsigned int> &groups,std::vector<unsigned int> &probs,double addprob);
bool GetProbs(CContext*, std::vector<unsigned int> &Probs, double AddProb);
void LearnSymbol(CContext* Context, modelchar Symbol);
void dump();
private:
CPPMContext *m_rootcontext;
CPPMnode *root;
void AddSymbol(CPPMContext& context,int symbol);
void dumpSymbol(int symbol);
void dumpString( char *str, int pos, int len );
void dumpTrie( CPPMnode *t, int d );
};
////////////////////////////////////////////////////////////////////////
// Inline functions
////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////
inline CPPMLanguageModel::CPPMnode::CPPMnode(int sym) : symbol(sym)
{
child=next=vine=0;
count=1;
}
///////////////////////////////////////////////////////////////////
inline void CPPMLanguageModel::CPPMContext::dump()
// diagnostic output
{
// TODO uncomment this when headers sorted out
//dchar debug[128];
//Usprintf(debug,TEXT("head %x order %d\n"),head,order);
//DebugOutput(debug);
}
///////////////////////////////////////////////////////////////////
inline CContext* CPPMLanguageModel::GetRootContext()
{
CPPMContext * nc = new CPPMLanguageModel::CPPMContext(*m_rootcontext);
CContext *cont=static_cast<CContext *> (nc);
return cont;
}
///////////////////////////////////////////////////////////////////
inline CContext* CPPMLanguageModel::CloneContext(CContext *copythis)
{
CPPMContext *ppmcontext=static_cast<CPPMContext *> (copythis);
CPPMContext * nc = new CPPMLanguageModel::CPPMContext(*ppmcontext);
return static_cast<CContext *> (nc);
}
///////////////////////////////////////////////////////////////////
inline void CPPMLanguageModel::ReleaseContext(CContext *release)
{
delete release;
}
#endif /* #ifndef __PPMLanguageModel_H__ */