54 lines
1.5 KiB
C
54 lines
1.5 KiB
C
|
// INDEXIMP.H: Definition of CITIndexLocal
|
||
|
|
||
|
#ifndef __INDEXIMP_H__
|
||
|
#define __INDEXIMP_H__
|
||
|
|
||
|
#include "verinfo.h"
|
||
|
#include "idxobr.h"
|
||
|
|
||
|
// Implemenation of IITIndex
|
||
|
class CITIndexLocal:
|
||
|
public IITIndex,
|
||
|
public CComObjectRootEx<CComMultiThreadModel>,
|
||
|
public CComCoClass<CITIndexLocal, &CLSID_IITIndexLocal>
|
||
|
|
||
|
{
|
||
|
public:
|
||
|
CITIndexLocal() : m_idx(NULL), m_fSkipOcc(FALSE), m_pCatalog(NULL),
|
||
|
m_piwbrk(NULL) {;}
|
||
|
virtual ~CITIndexLocal() { if (m_idx) Close(); }
|
||
|
|
||
|
BEGIN_COM_MAP(CITIndexLocal)
|
||
|
COM_INTERFACE_ENTRY(IITIndex)
|
||
|
END_COM_MAP()
|
||
|
|
||
|
DECLARE_REGISTRY(CLSID_IITIndexLocal, "ITIR.IndexSearch.4", "ITIR.IndexSearch", 0, THREADFLAGS_BOTH)
|
||
|
|
||
|
// IITIndex methods
|
||
|
public:
|
||
|
STDMETHOD(Open)(IITDatabase* pITDB, LPCWSTR lpszIndexMoniker, BOOL fInsideDB);
|
||
|
STDMETHOD(CreateQueryInstance)(IITQuery** ppITQuery);
|
||
|
STDMETHOD(Search)(IITQuery* pITQuery, IITResultSet* pITResult);
|
||
|
STDMETHOD(Search)(IITQuery* pITQuery, IITGroup* pITGroup);
|
||
|
STDMETHOD(Close)(void);
|
||
|
STDMETHOD(GetLocaleInfo)(DWORD *pdwCodePageID, LCID *plcid);
|
||
|
STDMETHOD(GetWordBreakerInstance)(DWORD *pdwObjInstance);
|
||
|
|
||
|
// Private methods
|
||
|
private:
|
||
|
STDMETHOD(HitListToResultSet)(LPHL pHitList, IITResultSet* pITResult,
|
||
|
CITIndexObjBridge *pidxobr);
|
||
|
STDMETHOD(QueryParse)(IITQuery* pITQuery, LPQT* pQueryTree,
|
||
|
CITIndexObjBridge *pidxobr);
|
||
|
|
||
|
// Data members
|
||
|
private:
|
||
|
LPIDX m_idx;
|
||
|
BOOL m_fSkipOcc;
|
||
|
IITCatalog* m_pCatalog;
|
||
|
PIWBRK m_piwbrk; // pointer to IWordBreakerConfig
|
||
|
_ThreadModel::AutoCriticalSection m_cs; // Critical section obj.
|
||
|
};
|
||
|
|
||
|
|
||
|
#endif
|