我和我的输入提示----XHTree.h

【代码一直在写,文档有点没时间补充了,最后一起添加吧】


//注: 查询的时候,很少有越界检查,因为检查需要消耗时间,因此正确性交给建立索引的时候去控制

#ifndef _XH_TREE_H_
#define _XH_TREE_H_
#include "common/XHTreeStruct.h"
#include <string>


using namespace std;


#define TREE_TYPE_CHINESE       0
#define TREE_TYPE_SPELL         1
#define TREE_TYPE_CENTERCHINESE 2
#define TREE_TYPE_CENTERSPELL   3


class CTreeBase {
public:
        CTreeBase();
        ~CTreeBase();
        const int GetTreeType();
        const int GetTreeMemSize();
        const XHRbNode * GetTreeRoot();
        const XHRbNode * GetTreeLeft(const XHRbNode * p);
        const XHRbNode * GetTreeMid(const XHRbNode * p);
        const XHRbNode * GetTreeRight(const XHRbNode * p);
        const char * GetSSValue_Spell(const  XHRbNode * p, const string & strSimple);
        const char * GetSSValue_Simple(const  XHRbNode * p, const string & strSimple);
        const void * GetTreeWife(const XHRbNode * p);
        const char * GetString(const XHRbNode *p);
        const char * GetNodeString(const XHRbNode *p);
        const void * GetNodeExtraInfo(const XHRbNode *pNode) {};
        const void * GetNodeDataFromId(unsigned int uiId);


public:
        int m_iTreeType;
        //int m_iWifeDataSize;


        char * m_pzExtraInfo;   //扩展信息,结构同上  ---->没有\0
        char * m_pcStringData;  //字符串内容的存储地址,结构同上
        //下面两个对于汉字树与拼音树对应的结构和信息不同
        //m_pzExtraInfo,汉字对应的为:用户扩展信息; 拼音:对的上级信息
        //对应-----汉字结构
        //数据的格式有两种,分别为包含扩展信息和不包含扩展信息
        //1. 不包含: p1   p2
        //           |    |
        //          \|/  \|/
        //           key\0key2\0
        //2. 包含:  p1        p2
        //          |         |
        //         \|/       \|/
        //     4字节key\04字节key2\0
        //注:4字节为后面的key对应的数据扩展部分在m_pzExtraInfo的位置
        //如果4字节为0,代表没有扩展信息
        char * m_pzTreeWife;    //树的数据信息,结构同上 --->没有\0
        char * m_pstTreeRoot;   //XHRbNode, 结构为:前四个字节为大小,后面为内容
        char * m_pstSimpleSelf; //拼音树(包含中间拼音树),简拼指向全拼的内容uiSpellSelf部分


        //获取在制定内存移动一段距离后的位置
        const char * GetPMove(const char * p, const unsigned int iMove);
};


class CTreeChinese : public CTreeBase {
public:
        CTreeChinese();
        const void * GetNodeExtraInfo(const XHRbNode *pNode);
        const char * GetNodeExtraStringFromData(const XHChineseData* pData);
        const void * GetNodeStringFromData(const XHChineseData* pData);
        const unsigned int GetIdFromNode(const XHRbNode *pNode);
};


class CTreeSpell: public CTreeBase {
public:
        CTreeSpell();
        const void * GetNodeExtraInfo(const XHRbNode *pNode);
        const unsigned int GetNodeExtraNums(const XHRbNode *pNode);
        const void * GetNodeString(const XHChineseData* pData);
};


class CTreeCenterChinese: public CTreeSpell {
public:
        CTreeCenterChinese();
        const void * GetNodeExtraInfo(const XHSpellData *pData);
        const unsigned int GetNodeExtraNums(const XHSpellData *pData);
};


class CTreeCenterSpell: public CTreeSpell {
public:
        CTreeCenterSpell();
        //char * GetNodeExtraInfo(XHRbNode *pNode);
};


/*
class CTreeDataManage {
};
*/


#endifXHTree.h
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值