6 * Created by cererd.long on 10-10-8.
7 * Copyright 2010 __MyCompanyName__. All rights reserved.
12 #ifndef SUNPY_HUNPIN_SEG_H
13 #define SUNPY_HUNPIN_SEG_H
19 #include "portability.h"
20 #include "shuangpin_data.h"
21 #include "segmentor.h"
22 #include "pinyin_data.h"
26 class CHunpinSegmentor : public IPySegmentor
29 CHunpinSegmentor (EShuangpinType shpType);
31 virtual TSegmentVec& getSegments(bool) { return m_segs; }
34 virtual const wstring& getInputBuffer() { return m_inputBuf; }
36 virtual const char* getSylSeps() { return "'"; }
38 virtual unsigned push(unsigned ch);
39 virtual unsigned pop();
40 virtual unsigned insertAt(unsigned idx, unsigned ch);
41 virtual unsigned deleteAt(unsigned idx, bool backward = true);
42 virtual unsigned clear(unsigned from = 0);
44 virtual unsigned updatedFrom() { return m_updatedFrom; }
46 bool load(const char * pyTrieFileName);
48 void setGetFuzzySyllablesOp(CGetFuzzySyllablesOp<CPinyinData> *op) {
49 m_pGetFuzzySyllablesOp = op; }
55 inline unsigned _push(unsigned ch);
56 inline unsigned _clear(unsigned from);
57 inline void _addFuzzySyllables(TSegment &seg);
58 inline unsigned _updateWith(const std::string& new_pystr,
59 unsigned from = UINT_MAX);
60 inline void _locateSegment(unsigned idx, unsigned &strIdx, unsigned &segIdx);
61 int _encode(const char* buf, int ret);
62 int _encode(const char* buf);
65 CGetFuzzySyllablesOp<CPinyinData> *m_pGetFuzzySyllablesOp;
68 CDATrie<short> m_pytrie;
72 TSegmentVec m_fuzzy_segs;
73 TSegmentVec m_merged_segs;
75 unsigned m_updatedFrom;
76 static CShuangpinData s_shpData;
79 #endif /* SUNPY_PINYIN_SEG_H */