• 大小: 212KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-09
  • 语言: 其他
  • 标签: everyting  源码  

资源简介

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个文件信息

评论

共有 条评论