2 #ifndef __SUNPINYIN_PYTRIE_WRITER_H__
3 #define __SUNPINYIN_PYTRIE_WRITER_H__
9 class OtherEndian<CPinyinTrie::TNode>
13 unsigned m_bFullSyllableTransfer : 1;
14 unsigned m_csLevel : 2;
15 unsigned m_nTransfer : 12;
16 unsigned m_nWordId : 12;
20 unsigned m_nWordId : 12;
21 unsigned m_nTransfer : 12;
22 unsigned m_csLevel : 2;
23 unsigned m_bFullSyllableTransfer : 1;
27 DEFINE_OTHER_TYPE(TNode);
29 static TargetType create(const CPinyinTrie::TNode& from){
31 to.m_nTransfer = from.m_nTransfer;
32 to.m_nWordId = from.m_nWordId;
33 to.m_bFullSyllableTransfer = from.m_bFullSyllableTransfer;
34 to.m_csLevel = from.m_csLevel;
35 // we don't care about m_other though
36 to.m_other = from.m_other;
42 class OtherEndian<TSyllable>
59 DEFINE_OTHER_TYPE(TSyllable);
61 static TargetType create(const TSyllable& from){
63 to.other = from.other;
64 to.initial = from.initial;
65 to.final = from.final;
72 class OtherEndian<CPinyinTrie::TWordIdInfo>
74 struct TWordIdInfo_BE {
77 unsigned m_csLevel : 2;
78 unsigned m_id : WORD_ID_WIDTH;
81 struct TWordIdInfo_LE {
82 unsigned m_id : WORD_ID_WIDTH;
83 unsigned m_csLevel : 2;
89 DEFINE_OTHER_TYPE(TWordIdInfo);
91 static TargetType create(const CPinyinTrie::TWordIdInfo& from){
94 to.m_csLevel = from.m_csLevel;
95 to.m_bSeen = from.m_bSeen;
96 to.m_cost = from.m_cost;
102 bool revert_write<CPinyinTrie::TTransUnit> (const CPinyinTrie::TTransUnit& t,
105 #endif //__SUNPINYIN_PYTRIE_WRITER_H__