资源简介
Everything桌面搜索,原理,源码,强大的功能,与工具everything几乎性能一样
代码片段和文件信息
// BasicSearch.cpp
// 版权所有(C) 陈雄
// Homepage:
// Email:chenxiong0115@163.com chenxiong115@qq.com
// purpose:
// 您可以以任何方式使用本代码,如果您对本代码不满,
// 您可以将其粉碎。您也可以删除版权信息和作者联系方式。
// 如果您给我一个进步的机会,我将万分感谢。
/////////////////////////////////////////////////////////////////////////////////
#include “global.h“
#include “StrMatch.h“
const int ALPHABETA_SIZE=0x80;
const short FAIL_STATE=0x8000; //-32768 用于AC算法
BYTE g_NoCaseTable[ALPHABETA_SIZE]; //搜索时已经初始化
void Helper_InitNoCaseTable()
{
for(int i=0;i if(i>=‘A‘ && i<=‘Z‘) g_NoCaseTable[i]=i+32;
else g_NoCaseTable[i]=i;
}
}
//pParentDir是待考察文件的直接父指针
__forceinline BOOL IsExtnameSat(PDIRECTORY_RECORD pParentDirPDIRECTORY_RECORD* ppDirint *pbSubDirint nCheck)//扩展名满足么
{
PDIRECTORY_RECORD p;
for(int i=0;i {
p=pParentDir;
if(pbSubDir[i]){//含子目录
for(;p;p=p->ParentPtr)
{
if(ppDir[i]==p) return TRUE;
}
}else{//不包含子目录
if(ppDir[i]==p) return TRUE;
}
}
return FALSE;
}
//遍历文件,使用AC算法判断<0x80转换表
//空间优化9~0x31不存在
const DWORDLONG MAX_DWORDLONG=0xffffffffffffffff;
void Helper_OnlyNormalSearchAscii(BOOL bCase
BOOL bDirSearchBOOL bFileSearch
int *pIdExtint nExt
PDIRECTORY_RECORD* ppDirint *pbSubDirint nCheck
)
{
if(pIdExt) bDirSearch=FALSE;//如果存在有效扩展名 不搜索目录
SearchStrOpt *pStrOpt;
if(bCase) pStrOpt=&g_StrOptCase;
else pStrOpt=&g_StrOptNoCase;
ListNormal *pNormal;
int _nMaxStates=1;//最大状态数,至少一个初态
DWORDLONG nTerminalTag=MAX_DWORDLONG;
short iFinalState=-1;
for(pNormal=pStrOpt->pNormal;pNormal;pNormal=pNormal->_pNext){
_nMaxStates+=pNormal->_len;
nTerminalTag&=~(0x1<<(-iFinalState--));
}
//终止状态标志<0 [-1 -2 -3]
short *pStateTable=new short[_nMaxStates*ALPHABETA_SIZE];
short **pStatebase =new short*[_nMaxStates];
//pStatebase[i][0]表示是否为终态标识 pStatebase[i][1]表示fail函数
for(int i=0;i<_nMaxStates;++i) pStatebase[i]=pStateTable+i*ALPHABETA_SIZE;
//初始化所有TO状态为失效状态
for(int i=0;i<_nMaxStates;++i){
*pStatebase[i]=0;//<0时表示终止状态
for(int j=32;jse[i][j]=FAIL_STATE;
}
PWCHAR pWchpWchEnd;
short statenextState;//状态变量
short nTotalState=0;//总状态数
iFinalState=-1;
for(pNormal=pStrOpt->pNormal;pNormal;pNormal=pNormal->_pNext){//增加模式到AC图
state=0;
pWch=pNormal->_wchs;pWchEnd=pNormal->_wchs+pNormal->_len;
for(;pWch nextState=pStatebase[state][*pWch];
if(FAIL_STATE==nextState) break;
state=nextState;
}
//继续添加
for(;pWch pStatebase[state][*pWch]=++nTotalState;
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 34182 2010-09-30 15:27 【分享】山寨Everything桌面搜索原理源码\NtfsDesktopSearch\BasicSearch.cpp
文件 63996 2010-06-08 18:29 【分享】山寨Everything桌面搜索原理源码\NtfsDesktopSearch\DesktopSearch.aps
文件 97281 2010-09-30 15:27 【分享】山寨Everything桌面搜索原理源码\NtfsDesktopSearch\DesktopSearch.cpp
文件 5895 2010-05-20 15:28 【分享】山寨Everything桌面搜索原理源码\NtfsDesktopSearch\DesktopSearch.rc
文件 890 2010-06-08 13:31 【分享】山寨Everything桌面搜索原理源码\NtfsDesktopSearch\DesktopSearch.sln
..A..H. 193536 2010-06-09 16:52 【分享】山寨Everything桌面搜索原理源码\NtfsDesktopSearch\DesktopSearch.suo
文件 6014 2010-05-22 19:10 【分享】山寨Everything桌面搜索原理源码\NtfsDesktopSearch\DesktopSearch.vcproj
文件 1413 2010-06-09 16:52 【分享】山寨Everything桌面搜索原理源码\NtfsDesktopSearch\DesktopSearch.vcproj.QINGQING.Administrator.user
文件 10005 2010-09-30 15:27 【分享】山寨Everything桌面搜索原理源码\NtfsDesktopSearch\DirBasicInfoMap.cpp
文件 1864 2010-09-30 15:27 【分享】山寨Everything桌面搜索原理源码\NtfsDesktopSearch\DirBasicInfoMap.h
文件 15771 2010-09-30 15:27 【分享】山寨Everything桌面搜索原理源码\NtfsDesktopSearch\DirFilterList.cpp
文件 3148 2010-09-30 15:27 【分享】山寨Everything桌面搜索原理源码\NtfsDesktopSearch\DirFilterList.h
文件 13015 2010-09-30 15:27 【分享】山寨Everything桌面搜索原理源码\NtfsDesktopSearch\ExtArray.cpp
文件 2722 2010-09-30 15:27 【分享】山寨Everything桌面搜索原理源码\NtfsDesktopSearch\ExtArray.h
文件 13790 2010-06-08 13:31 【分享】山寨Everything桌面搜索原理源码\NtfsDesktopSearch\FilterCtrl.cpp
文件 2145 2010-06-08 13:31 【分享】山寨Everything桌面搜索原理源码\NtfsDesktopSearch\FilterCtrl.h
文件 3917 2010-06-09 16:49 【分享】山寨Everything桌面搜索原理源码\NtfsDesktopSearch\global.h
文件 5570 2010-06-08 13:31 【分享】山寨Everything桌面搜索原理源码\NtfsDesktopSearch\Helper.h
文件 15912 2010-06-08 13:31 【分享】山寨Everything桌面搜索原理源码\NtfsDesktopSearch\Index.cpp
文件 1765 2010-06-08 13:31 【分享】山寨Everything桌面搜索原理源码\NtfsDesktopSearch\Index.h
文件 4471 2010-06-08 13:31 【分享】山寨Everything桌面搜索原理源码\NtfsDesktopSearch\IndexNodeBlock.h
文件 672 2010-06-08 13:31 【分享】山寨Everything桌面搜索原理源码\NtfsDesktopSearch\Lock.h
文件 1498 2010-06-08 13:31 【分享】山寨Everything桌面搜索原理源码\NtfsDesktopSearch\MemoryMgr.cpp
文件 700 2010-06-08 13:31 【分享】山寨Everything桌面搜索原理源码\NtfsDesktopSearch\MemoryMgr.h
文件 1992 2010-06-08 13:31 【分享】山寨Everything桌面搜索原理源码\NtfsDesktopSearch\MemoryPool.cpp
文件 3100 2010-06-08 13:31 【分享】山寨Everything桌面搜索原理源码\NtfsDesktopSearch\MemoryPool.h
文件 8098 2010-06-08 13:31 【分享】山寨Everything桌面搜索原理源码\NtfsDesktopSearch\NameSort.cpp
文件 8454 2010-06-08 13:31 【分享】山寨Everything桌面搜索原理源码\NtfsDesktopSearch\NameSort.h
文件 8140 2010-06-08 13:31 【分享】山寨Everything桌面搜索原理源码\NtfsDesktopSearch\ntfs.cpp
文件 7126 2010-06-08 13:31 【分享】山寨Everything桌面搜索原理源码\NtfsDesktopSearch\ntfs.h
............此处省略14个文件信息
- 上一篇:s3c2440裸机DS18B20程序
- 下一篇:28335的SPWM调试
相关资源
- 图的深度优先遍历算法源码
- 易语言一键修改虚拟机硬盘id源码
- uc/os2内核源码
- 尚硅谷springcloud课程源码,springcloud
- ADC0808实现数字电压表源码与仿真
- SSM+Shiro+BootStrap框架整合源码
- LSD-直线检测源码
- BACnet协议源码
- 餐厅小程序整套源码
- RSA混合加密系统源码
- 基于stm32环境数据采集,采集端源码
- UDP协议通信演示Delphi源码
- pascal源码自动转换为c源码软件
- 五子棋源码加详细注释
- SJF2440源码 源代码 官方发布VC++完整
- newtonsoft.json源码
- 简单的人才招聘系统源码
- 弹弹堂瞄准器V1.3源码
- 二叉树深度+建树+查找+遍历二叉树
- 自己动手改造TabControl--从山寨Safari开
- win8加载圆圈动画(含源码/demo)
- N皇后问题答案求解QT实现带源码
- e4a e4a源码 彩票35选7源码
- dnf黄龙脚本源码
- 本人写的win7 64位 过tp双机调试源码及
- MSP430F5529+ESP8266连接手机热点源码例程
- sphinx使用rt实时索引源码
- Unity3D使用socket通讯源码
- 简单防火墙功能程序设计源码
- delphi 7 idhttp post 的8种使用方法(含源
评论
共有 条评论