資源簡介
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調試
評論
共有 條評論