xpmgr/BuildTools/Include/infotech.h

690 lines
25 KiB
C++

#ifndef __INFOTECH_H__
#define __INFOTECH_H__
#include <comdef.h>
#include <ocidl.h>
// {1F403BB1-9997-11d0-A850-00AA006C7D01}
DEFINE_GUID(IID_IITPropList,
0x1f403bb1, 0x9997, 0x11d0, 0xa8, 0x50, 0x0, 0xaa, 0x0, 0x6c, 0x7d, 0x1);
// {4662daae-d393-11d0-9a56-00c04fb68bf7}
DEFINE_GUID(CLSID_IITPropList,
0x4662daae, 0xd393, 0x11d0, 0x9a, 0x56, 0x00, 0xc0, 0x4f, 0xb6, 0x8b, 0xf7);
typedef DWORD PROPID;
// Operations you can do on a property
#define PROP_ADD 0x00000000
#define PROP_DELETE 0x00000001
#define PROP_UPDATE 0x00000002
// Type of data
#define TYPE_VALUE 0x00000000
#define TYPE_POINTER 0x00000001
#define TYPE_STRING 0x00000002
// Class definition of CProperty
class CProperty
{
public:
PROPID dwPropID; // property ID
DWORD cbData; // Amount of data
DWORD dwType; // What type this is
union
{
LPWSTR lpszwData; // String
LPVOID lpvData; // Any kind of data
DWORD dwValue; // Numerical data
};
BOOL fPersist; // TRUE to persist this property
};
typedef CProperty* LPPROP;
// Interface def. for IITPropList
DECLARE_INTERFACE_(IITPropList, IPersistStreamInit)
{
// dwOperation = operation (add, delete, update, etc.) to perform on property list
STDMETHOD(Set)(PROPID PropID, DWORD dwData, DWORD dwOperation) PURE;
STDMETHOD(Set)(PROPID PropID, LPVOID lpvData, DWORD cbData, DWORD dwOperation) PURE;
STDMETHOD(Set)(PROPID PropID, LPCWSTR lpszwString, DWORD dwOperation) PURE;
STDMETHOD(Add)(CProperty& Prop) PURE;
STDMETHOD(Get)(PROPID PropID, CProperty& Property) PURE;
STDMETHOD(Clear)() PURE;
// set persistence state on property
STDMETHOD(SetPersist)(PROPID PropID, BOOL fPersist) PURE; // single property
STDMETHOD(SetPersist)(BOOL fPersist) PURE; // all properties in list
// for enumerating properties
STDMETHOD(GetFirst)(CProperty& Property) PURE;
STDMETHOD(GetNext)(CProperty& Property) PURE;
STDMETHOD(GetPropCount)(LONG &cProp) PURE;
// persist header and data separately
STDMETHOD(SaveHeader)(LPVOID lpvData, DWORD dwHdrSize) PURE;
STDMETHOD(SaveData)(LPVOID lpvHeader, DWORD dwHdrSize, LPVOID lpvData, DWORD dwBufSize) PURE;
STDMETHOD(GetHeaderSize)(DWORD& dwHdrSize) PURE;
STDMETHOD(GetDataSize)(LPVOID lpvHeader, DWORD dwHdrSize, DWORD& dwDataSize) PURE;
STDMETHOD(SaveDataToStream)(LPVOID lpvHeader, DWORD dwHdrSize, IStream* pStream) PURE;
// persist to a memory buffer
STDMETHOD(LoadFromMem)(LPVOID lpvData, DWORD dwBufSize) PURE;
STDMETHOD(SaveToMem)(LPVOID lpvData, DWORD dwBufSize) PURE;
};
typedef IITPropList* LPITPROPLIST;
// {8fa0d5a2-dedf-11d0-9a61-00c04fb68bf7} (changed from IT 3.0)
DEFINE_GUID(IID_IITDatabase,
0x8fa0d5a2, 0xdedf, 0x11d0, 0x9a, 0x61, 0x00, 0xc0, 0x4f, 0xb6, 0x8b, 0xf7);
#ifdef ITPROXY
// {66673452-8C23-11d0-A84E-00AA006C7D01}
DEFINE_GUID(CLSID_IITDatabase,
0x66673452, 0x8c23, 0x11d0, 0xa8, 0x4e, 0x0, 0xaa, 0x0, 0x6c, 0x7d, 0x1);
#else
// {4662daa9-d393-11d0-9a56-00c04fb68bf7} (changed from IT 3.0)
DEFINE_GUID(CLSID_IITDatabaseLocal,
0x4662daa9, 0xd393, 0x11d0, 0x9a, 0x56, 0x00, 0xc0, 0x4f, 0xb6, 0x8b, 0xf7);
#endif // ITPROXY
// This value is invalid for dwObjInstance params in IITDatabase methods.
#define IITDB_OBJINST_NULL ((DWORD) 0xFFFFFFFF)
DECLARE_INTERFACE_(IITDatabase, IUnknown)
{
STDMETHOD(Open)(LPCWSTR lpszHost, LPCWSTR lpszMoniker, DWORD dwFlags) PURE;
STDMETHOD(Close)(void) PURE;
// Creates an unnamed object that can be referenced in the future
// by *pdwObjInstance. Note that the value in *pdwObjInstance will be
// persisted by the database when it is asked to save
STDMETHOD(CreateObject)(REFCLSID rclsid, DWORD *pdwObjInstance) PURE;
// Retrieves a specified IUnknown-based interface on the object identified
// by dwObjInstance.
STDMETHOD(GetObject)(DWORD dwObjInstance, REFIID riid, LPVOID *ppvObj) PURE;
// To obtain a pointer to a named object's persistence the object's full
// name (including any object-specific type prefix) should be passed in
// lpswszObject. If *lpwszObject is NULL, then the database's own storage
// will be returned. If lpwszObject is NULL, then dwObjInstance will be
// used to identify the object and locate its persistence. On exit,
// *ppvPersistence will be either an IStorage* or an IStream*, depending
// on what the caller specified with the fStream param. The caller should
// assume that only read operations can be performed on *ppvPersistence.
// If the specified object's persistence doesn't exist, or if it exists
// but is of the wrong type, then STG_E_FILENOTFOUND will be returned.
STDMETHOD(GetObjectPersistence)(LPCWSTR lpwszObject, DWORD dwObjInstance,
LPVOID *ppvPersistence, BOOL fStream) PURE;
};
typedef IITDatabase* LPITDB;
// Document property macros
#define STDPROP_UID 1
#define STDPROP_TITLE 2
#define STDPROP_USERDATA 3
#define STDPROP_KEY 4
#define STDPROP_SORTKEY 100
#define STDPROP_DISPLAYKEY 101
#define STDPROP_SORTORDINAL 102
#define STDPROP_INDEX_TEXT 200
#define STDPROP_INDEX_VFLD 201
#define STDPROP_INDEX_DTYPE 202
#define STDPROP_INDEX_LENGTH 203
#define STDPROP_INDEX_BREAK 204
#define STDPROP_INDEX_TERM 210
#define STDPROP_INDEX_TERM_RAW_LENGTH 211
#define STDPROP_USERPROP_BASE 0x00010000
#define STDPROP_USERPROP_MAX 0x7FFFFFFF
// Property destinations for word wheels
#define SZ_WWDEST_GLOBAL L"GLOBAL"
#define SZ_WWDEST_KEY L"KEY"
#define SZ_WWDEST_OCC L"OCC"
// {4662daa2-d393-11d0-9a56-00c04fb68bf7}
DEFINE_GUID(CLSID_IITCmdInt,
0x4662daa2, 0xd393, 0x11d0, 0x9a, 0x56, 0x00, 0xc0, 0x4f, 0xb6, 0x8b, 0xf7);
// {4662daa3-d393-11d0-9a56-00c04fb68bf7}
DEFINE_GUID(CLSID_IITSvMgr,
0x4662daa3, 0xd393, 0x11d0, 0x9a, 0x56, 0x00, 0xc0, 0x4f, 0xb6, 0x8b, 0xf7);
// {4CF34C30-9BF9-11d0-8764-00A0C913F764}
DEFINE_GUID(IID_IITCmdInt,
0x4cf34c30, 0x9bf9, 0x11d0, 0x87, 0x64, 0x0, 0xa0, 0xc9, 0x13, 0xf7, 0x64);
// {4E7DA031-9C11-11d0-8764-00A0C913F764}
DEFINE_GUID(IID_IITSvMgr,
0x4e7da031, 0x9c11, 0x11d0, 0x87, 0x64, 0x0, 0xa0, 0xc9, 0x13, 0xf7, 0x64);
// {4662daa5-d393-11d0-9a56-00c04fb68bf7}
DEFINE_GUID(CLSID_IITWordWheelUpdate,
0x4662daa5, 0xd393, 0x11d0, 0x9a, 0x56, 0x00, 0xc0, 0x4f, 0xb6, 0x8b, 0xf7);
// {8fa0d5a5-dedf-11d0-9a61-00c04fb68bf7}
DEFINE_GUID(IID_IITBuildCollect,
0x8fa0d5a5, 0xdedf, 0x11d0, 0x9a, 0x61, 0x0, 0xc0, 0x4f, 0xb6, 0x8b, 0xf7);
// {4662daa4-d393-11d0-9a56-00c04fb68bf7}
DEFINE_GUID(CLSID_IITGroupUpdate,
0x4662daa4, 0xd393, 0x11d0, 0x9a, 0x56, 0x00, 0xc0, 0x4f, 0xb6, 0x8b, 0xf7);
// {8fa0d5aa-dedf-11d0-9a61-00c04fb68bf7}
DEFINE_GUID(CLSID_IITIndexBuild,
0x8fa0d5aa, 0xdedf, 0x11d0, 0x9a, 0x61, 0x00, 0xc0, 0x4f, 0xb6, 0x8b, 0xf7);
// {8fa0d5ab-dedf-11d0-9a61-00c04fb68bf7}
DEFINE_GUID(CLSID_IITWWFilterBuild,
0x8fa0d5ab, 0xdedf, 0x11d0, 0x9a, 0x61, 0x00, 0xc0, 0x4f, 0xb6, 0x8b, 0xf7);
// Word Breaker Defines:
// {8fa0d5a4-dedf-11d0-9a61-00c04fb68bf7}
DEFINE_GUID(IID_IITWordWheel,
0x8fa0d5a4, 0xdedf, 0x11d0, 0x9a, 0x61, 0x00, 0xc0, 0x4f, 0xb6, 0x8b, 0xf7);
#ifdef ITPROXY
// {D73725C2-8C12-11d0-A84E-00AA006C7D01}
DEFINE_GUID(CLSID_IITWordWheel,
0xd73725c2, 0x8c12, 0x11d0, 0xa8, 0x4e, 0x0, 0xaa, 0x0, 0x6c, 0x7d, 0x1);
#else
// {4662daa8-d393-11d0-9a56-00c04fb68bf7}
DEFINE_GUID(CLSID_IITWordWheelLocal,
0x4662daa8, 0xd393, 0x11d0, 0x9a, 0x56, 0x00, 0xc0, 0x4f, 0xb6, 0x8b, 0xf7);
#endif // ITPROXY
// Word-wheel open flags
#define ITWW_OPEN_CONNECT 0x00000000 // connect to server on open (the default)
#define ITWW_OPEN_NOCONNECT 0x00000001 // don't connect to server on open
// Constants for IITWordWheel::Lookup.
#define ITWW_CBKEY_MAX 1024 // Max size of keys allowed in Word Wheels.
// Forward declarations
interface IITDatabase;
interface IITResultSet;
interface IITGroup;
interface IITPropList;
interface IITQuery;
DECLARE_INTERFACE_(IITWordWheel, IUnknown)
{
STDMETHOD(Open)(IITDatabase* lpITDB, LPCWSTR lpszMoniker, DWORD dwFlags=0) PURE;
STDMETHOD(Close)(void) PURE;
// Returns the code page ID and locale ID that the word wheel was built and
// sorted with.
STDMETHOD(GetLocaleInfo)(DWORD *pdwCodePageID, LCID *plcid) PURE;
// Returns in *pdwObjInstance the ID of the external sort instance being used by
// this word wheel. The instance ID can be passed to IITDatabase::GetObject to
// to obtain an interface pointer on the instantiated instance. If the word
// wheel doesn't use external sorting, then IITDB_OBJINST_NULL.
STDMETHOD(GetSorterInstance)(DWORD *pdwObjInstance) PURE;
STDMETHOD(Count)(LONG *pcEntries) PURE;
// To be safe, the length of lpvKeyBuf should always be at least ITWW_CBKEY_MAX.
STDMETHOD(Lookup)(LONG lEntry, LPVOID lpvKeyBuf, DWORD cbKeyBuf) PURE;
STDMETHOD(Lookup)(LONG lEntry, IITResultSet* lpITResult, LONG cEntries) PURE;
STDMETHOD(Lookup)(LPCVOID lpcvPrefix, BOOL fExactMatch, LONG *plEntry) PURE;
STDMETHOD(SetGroup)(IITGroup* piitGroup) PURE;
STDMETHOD(GetGroup)(IITGroup** ppiitGroup) PURE;
STDMETHOD(GetDataCount)(LONG lEntry, DWORD *pdwCount) PURE;
STDMETHOD(GetData)(LONG lEntry, IITResultSet* lpITResult) PURE;
STDMETHOD(GetDataColumns)(IITResultSet* pRS) PURE;
};
typedef IITWordWheel* LPITWORDWHEEL;
// IWordBreaker, IWordSink, IPhraseSink, IStem
#ifndef __IStemSink_FWD_DEFINED__
#define __IStemSink_FWD_DEFINED__
typedef interface IStemSink IStemSink;
#endif /* __IStemSink_FWD_DEFINED__ */
#ifndef __IStemmer_FWD_DEFINED__
#define __IStemmer_FWD_DEFINED__
typedef interface IStemmer IStemmer;
#endif /* __IStemmer_FWD_DEFINED__ */
#ifndef __IStemmerConfig_FWD_DEFINED__
#define __IStemmerConfig_FWD_DEFINED__
typedef interface IStemmerConfig IStemmerConfig;
#endif /* __IStemmerConfig_FWD_DEFINED__ */
DECLARE_INTERFACE_(IStemmer, IUnknown)
{
STDMETHOD(Init)(ULONG ulMaxTokenSize, BOOL *pfLicense) PURE;
STDMETHOD(GetLicenseToUse)(WCHAR const **ppwcsLicense) PURE;
STDMETHOD(StemWord)(WCHAR const *pwcInBuf, ULONG cwc,
IStemSink *pStemSink) PURE;
};
typedef IStemmer *PISTEM;
DECLARE_INTERFACE_(IStemSink, IUnknown)
{
STDMETHOD(PutAltWord)(WCHAR const *pwcInBuf, ULONG cwc) PURE;
STDMETHOD(PutWord)(WCHAR const *pwcInBuf, ULONG cwc) PURE;
};
typedef IStemSink *PISTEMSNK;
DECLARE_INTERFACE_(IStemmerConfig, IUnknown)
{
// Sets/gets locale info that will affect the stemming
// behavior of IStemmer::StemWord.
// Returns S_OK if locale described by params is supported
// by the breaker object; E_INVALIDARG otherwise.
STDMETHOD(SetLocaleInfo)(DWORD dwCodePageID, LCID lcid) PURE;
STDMETHOD(GetLocaleInfo)(DWORD *pdwCodePageID, LCID *plcid) PURE;
// Sets/gets info that controls certain aspects of stemming.
// This method currently accepts only the following set of flags
// in grfStemFlags:
// In the future, additional information may be passed in through
// dwReserved.
STDMETHOD(SetControlInfo)(DWORD grfStemFlags, DWORD dwReserved) PURE;
STDMETHOD(GetControlInfo)(DWORD *pgrfStemFlags, DWORD *pdwReserved) PURE;
// Will load external stemmer data, such as word part lists, etc.
// The format of the data in the stream is entirely
// implementation-specific.
STDMETHOD(LoadExternalStemmerData)(IStream *pStream,
DWORD dwExtDataType) PURE;
};
typedef IStemmerConfig *PISTEMC;
#ifndef __IPhraseSink_FWD_DEFINED__
#define __IPhraseSink_FWD_DEFINED__
typedef interface IPhraseSink IPhraseSink;
#endif /* __IPhraseSink_FWD_DEFINED__ */
#ifndef __IWordSink_FWD_DEFINED__
#define __IWordSink_FWD_DEFINED__
typedef interface IWordSink IWordSink;
#endif /* __IWordSink_FWD_DEFINED__ */
#ifndef __IWordBreaker_FWD_DEFINED__
#define __IWordBreaker_FWD_DEFINED__
typedef interface IWordBreaker IWordBreaker;
#endif /* __IWordBreaker_FWD_DEFINED__ */
#ifndef __IWordBreakerConfig_FWD_DEFINED__
#define __IWordBreakerConfig_FWD_DEFINED__
typedef interface IWordBreakerConfig IWordBreakerConfig;
#endif /* __IWordBreakerConfig_FWD_DEFINED__ */
#ifndef __IITStopWordList_FWD_DEFINED__
#define __IITStopWordList_FWD_DEFINED__
typedef interface IITStopWordList IITStopWordList;
#endif /* __IITStopWordList_FWD_DEFINED__ */
// Supporting definitions for IWordBreaker.
typedef struct tagTEXT_SOURCE TEXT_SOURCE;
typedef SCODE (__stdcall *PFNFILLTEXTBUFFER)(TEXT_SOURCE *pTextSource);
typedef struct tagTEXT_SOURCE
{
PFNFILLTEXTBUFFER pfnFillTextBuffer;
WCHAR *awcBuffer;
ULONG iEnd;
ULONG iCur;
} TEXT_SOURCE;
DECLARE_INTERFACE_(IWordBreaker, IUnknown)
{
STDMETHOD(Init)(BOOL fQuery, ULONG ulMaxTokenSize, BOOL *pfLicense) PURE;
STDMETHOD(BreakText)(TEXT_SOURCE *pTextSource, IWordSink *pWordSink,
IPhraseSink *pPhraseSink) PURE;
STDMETHOD(ComposePhrase)(WCHAR const *pwcNoun, ULONG cwcNoun,
WCHAR const *pwcModifier, ULONG cwcModifier,
ULONG ulAttachmentType, WCHAR *pwcPhrase,
ULONG *pcwcPhrase) PURE;
STDMETHOD(GetLicenseToUse)(WCHAR const **ppwcsLicense) PURE;
};
typedef IWordBreaker *PIWBRK;
// Break word types that can be passed to
// IWordBreakerConfig::SetBreakWordType.
#define IITWBC_BREAKTYPE_TEXT ((DWORD) 0)
#define IITWBC_BREAKTYPE_NUMBER ((DWORD) 1)
#define IITWBC_BREAKTYPE_DATE ((DWORD) 2)
#define IITWBC_BREAKTYPE_TIME ((DWORD) 3)
#define IITWBC_BREAKTYPE_EPOCH ((DWORD) 4)
// Breaker control flags that can be passed to
// IWordBreakerConfig::SetControlInfo.
#define IITWBC_BREAK_ACCEPT_WILDCARDS 0x00000001 // Interpret wildcard chars as such.
#define IITWBC_BREAK_AND_STEM 0x00000002 // Stem words after breaking them.
// External data types that can be passed to
// IWordBreakerConfig::LoadExternalBreakerData.
#define IITWBC_EXTDATA_CHARTABLE ((DWORD) 0)
#define IITWBC_EXTDATA_STOPWORDLIST ((DWORD) 1)
DECLARE_INTERFACE_(IWordBreakerConfig, IUnknown)
{
// Sets/gets locale info that will affect the word breaking
// behavior of IWordBreaker::BreakText.
// Returns S_OK if locale described by params is supported
// by the breaker object; E_INVALIDARG otherwise.
STDMETHOD(SetLocaleInfo)(DWORD dwCodePageID, LCID lcid) PURE;
STDMETHOD(GetLocaleInfo)(DWORD *pdwCodePageID, LCID *plcid) PURE;
// Sets/gets the type of words the breaker should expect
// to see in all subsequent calls to IWordBreaker::BreakText.
// Returns S_OK if the type is understood by the breaker
// object; E_INVALIDARG otherwise.
STDMETHOD(SetBreakWordType)(DWORD dwBreakWordType) PURE;
STDMETHOD(GetBreakWordType)(DWORD *pdwBreakWordType) PURE;
// Sets/gets info that controls certain aspects of word breaking.
// This method currently accepts only the following set of flags
// in grfBreakFlags:
// IITWBC_BREAK_ACCEPT_WILDCARDS
// IITWBC_BREAK_AND_STEM
// In the future, additional information may be passed in through
// dwReserved.
STDMETHOD(SetControlInfo)(DWORD grfBreakFlags, DWORD dwReserved) PURE;
STDMETHOD(GetControlInfo)(DWORD *pgrfBreakFlags, DWORD *pdwReserved) PURE;
// Will load external breaker data, such as a table containing
// char-by-char break information or a list of stop words.
// Although the format of the data in the stream is entirely
// implementation-specific, this interface does define a couple
// of general types for that data which can be passed in
// dwStreamDataType:
// IITWBC_EXTDATA_CHARTABLE
// IITWBC_EXTDATA_STOPWORDLIST
STDMETHOD(LoadExternalBreakerData)(IStream *pStream,
DWORD dwExtDataType) PURE;
// These methods allow a stemmer to be associated with the breaker. The
// breaker will take responsibility for calling
// IPersistStreamInit::Load/Save when it is loaded/saved if the stemmer
// supports that interface.
STDMETHOD(SetWordStemmer)(REFCLSID rclsid, IStemmer *pStemmer) PURE;
STDMETHOD(GetWordStemmer)(IStemmer **ppStemmer) PURE;
};
//
// The InfoTech error codes
//
#define E_NOTEXIST _HRESULT_TYPEDEF_(0x80001000L)
#define E_DUPLICATE _HRESULT_TYPEDEF_(0x80001001L)
#define E_BADVERSION _HRESULT_TYPEDEF_(0x80001002L)
#define E_BADFILE _HRESULT_TYPEDEF_(0x80001003L)
#define E_BADFORMAT _HRESULT_TYPEDEF_(0x80001004L)
#define E_NOPERMISSION _HRESULT_TYPEDEF_(0x80001005L)
#define E_ASSERT _HRESULT_TYPEDEF_(0x80001006L)
#define E_INTERRUPT _HRESULT_TYPEDEF_(0x80001007L)
#define E_NOTSUPPORTED _HRESULT_TYPEDEF_(0x80001008L)
#define E_OUTOFRANGE _HRESULT_TYPEDEF_(0x80001009L)
#define E_GROUPIDTOOBIG _HRESULT_TYPEDEF_(0x8000100AL)
#define E_TOOMANYTITLES _HRESULT_TYPEDEF_(0x8000100BL)
#define E_NOMERGEDDATA _HRESULT_TYPEDEF_(0x8000100CL)
#define E_NOTFOUND _HRESULT_TYPEDEF_(0x8000100DL)
#define E_CANTFINDDLL _HRESULT_TYPEDEF_(0x8000100EL)
#define E_NOHANDLE _HRESULT_TYPEDEF_(0x8000100FL)
#define E_GETLASTERROR _HRESULT_TYPEDEF_(0x80001010L)
#define E_BADPARAM _HRESULT_TYPEDEF_(0x80001011L)
#define E_INVALIDSTATE _HRESULT_TYPEDEF_(0x80001012L)
#define E_NOTOPEN _HRESULT_TYPEDEF_(0x80001013L)
#define E_ALREADYOPEN _HRESULT_TYPEDEF_(0x80001013L)
#define E_UNKNOWN_TRANSPORT _HRESULT_TYPEDEF_(0x80001016L)
#define E_UNSUPPORTED_TRANSPORT _HRESULT_TYPEDEF_(0x80001017L)
#define E_BADFILTERSIZE _HRESULT_TYPEDEF_(0x80001018L)
#define E_TOOMANYOBJECTS _HRESULT_TYPEDEF_(0x80001019L)
#define E_NAMETOOLONG _HRESULT_TYPEDEF_(0x80001020L)
#define E_FILECREATE _HRESULT_TYPEDEF_(0x80001030L)
#define E_FILECLOSE _HRESULT_TYPEDEF_(0x80001031L)
#define E_FILEREAD _HRESULT_TYPEDEF_(0x80001032L)
#define E_FILESEEK _HRESULT_TYPEDEF_(0x80001033L)
#define E_FILEWRITE _HRESULT_TYPEDEF_(0x80001034L)
#define E_FILEDELETE _HRESULT_TYPEDEF_(0x80001035L)
#define E_FILEINVALID _HRESULT_TYPEDEF_(0x80001036L)
#define E_FILENOTFOUND _HRESULT_TYPEDEF_(0x80001037L)
#define E_DISKFULL _HRESULT_TYPEDEF_(0x80001038L)
#define E_TOOMANYTOPICS _HRESULT_TYPEDEF_(0x80001050L)
#define E_TOOMANYDUPS _HRESULT_TYPEDEF_(0x80001051L)
#define E_TREETOOBIG _HRESULT_TYPEDEF_(0x80001052L)
#define E_BADBREAKER _HRESULT_TYPEDEF_(0x80001053L)
#define E_BADVALUE _HRESULT_TYPEDEF_(0x80001054L)
#define E_ALL_WILD _HRESULT_TYPEDEF_(0x80001055L)
#define E_TOODEEP _HRESULT_TYPEDEF_(0x80001056L)
#define E_EXPECTEDTERM _HRESULT_TYPEDEF_(0x80001057L)
#define E_MISSLPAREN _HRESULT_TYPEDEF_(0x80001058L)
#define E_MISSRPAREN _HRESULT_TYPEDEF_(0x80001059L)
#define E_MISSQUOTE _HRESULT_TYPEDEF_(0x8000105AL)
#define E_NULLQUERY _HRESULT_TYPEDEF_(0x8000105BL)
#define E_STOPWORD _HRESULT_TYPEDEF_(0x8000105CL)
#define E_BADRANGEOP _HRESULT_TYPEDEF_(0x8000105DL)
#define E_UNMATCHEDTYPE _HRESULT_TYPEDEF_(0x8000105EL)
#define E_WORDTOOLONG _HRESULT_TYPEDEF_(0x8000105FL)
#define E_BADINDEXFLAGS _HRESULT_TYPEDEF_(0x80001060L)
#define E_WILD_IN_DTYPE _HRESULT_TYPEDEF_(0x80001061L)
#define E_NOSTEMMER _HRESULT_TYPEDEF_(0x80001062L)
// Property list and result set errors
#define E_MISSINGPROP _HRESULT_TYPEDEF_(0x80001080L)
#define E_PROPLISTNOTEMPTY _HRESULT_TYPEDEF_(0x80001081L)
#define E_PROPLISTEMPTY _HRESULT_TYPEDEF_(0x80001082L)
#define E_ALREADYINIT _HRESULT_TYPEDEF_(0x80001083L)
#define E_NOTINIT _HRESULT_TYPEDEF_(0x80001084L)
#define E_RESULTSETEMPTY _HRESULT_TYPEDEF_(0x80001085L)
#define E_TOOMANYCOLUMNS _HRESULT_TYPEDEF_(0x80001086L)
#define E_NOKEYPROP _HRESULT_TYPEDEF_(0x80001087L)
// ITResultSet interface declaration
// {3BB91D41-998B-11d0-A850-00AA006C7D01}
DEFINE_GUID(IID_IITResultSet,
0x3bb91d41, 0x998b, 0x11d0, 0xa8, 0x50, 0x0, 0xaa, 0x0, 0x6c, 0x7d, 0x1);
// {4662daa7-d393-11d0-9a56-00c04fb68bf7}
DEFINE_GUID(CLSID_IITResultSet,
0x4662daa7, 0xd393, 0x11d0, 0x9a, 0x56, 0x00, 0xc0, 0x4f, 0xb6, 0x8b, 0xf7);
// maximum number of columns in a row set
#define MAX_COLUMNS 256
// Column priorities
typedef enum
{
PRIORITY_LOW = 0,
PRIORITY_NORMAL = 1,
PRIORITY_HIGH = 2,
} PRIORITY;
// Forward declarations
class CProperty;
typedef struct tagROWSTATUS
{
LONG lRowFirst;
LONG cRows;
LONG cProperties;
LONG cRowsTotal;
} ROWSTATUS, *LPROWSTATUS;
typedef struct tagCOLUMNSTATUS
{
LONG cPropCount;
LONG cPropsLoaded;
} COLUMNSTATUS, *LPCOLUMNSTATUS;
// Used by IITResultSet::SetColumnHeap.
typedef SCODE (__stdcall *PFNCOLHEAPFREE)(LPVOID);
DECLARE_INTERFACE_(IITResultSet, IUnknown)
{
// Initialization
STDMETHOD(SetColumnPriority)(LONG lColumnIndex, PRIORITY ColumnPriority) PURE;
STDMETHOD(SetColumnHeap)(LONG lColumnIndex, LPVOID lpvHeap,
PFNCOLHEAPFREE pfnColHeapFree) PURE;
STDMETHOD(SetKeyProp)(PROPID PropID) PURE;
STDMETHOD(Add)(LPVOID lpvHdr) PURE;
STDMETHOD(Add)(PROPID PropID, LPVOID lpvDefaultData, DWORD cbData, PRIORITY Priority) PURE;
STDMETHOD(Add)(PROPID PropID, LPCWSTR lpszwDefault, PRIORITY Priority) PURE;
STDMETHOD(Add)(PROPID PropID, DWORD dwDefaultData, PRIORITY Priority) PURE;
// Build result set
STDMETHOD(Append)(LPVOID lpvHdr, LPVOID lpvData) PURE;
STDMETHOD(Set)(LONG lRowIndex, LPVOID lpvHdr, LPVOID lpvData) PURE;
STDMETHOD(Set)(LONG lRowIndex, LONG lColumnIndex, DWORD_PTR dwData) PURE;
STDMETHOD(Set)(LONG lRowIndex, LONG lColumnIndex, LPCWSTR lpwStr) PURE;
STDMETHOD(Set)(LONG lRowIndex, LONG lColumnIndex, LPVOID lpvData, DWORD cbData) PURE;
STDMETHOD(Copy)(IITResultSet* pRSCopy) PURE;
STDMETHOD(AppendRows)(IITResultSet* pResSrc, LONG lRowSrcFirst, LONG cSrcRows,
LONG& lRowFirstDest) PURE;
// Obtain info about result set
STDMETHOD(Get)(LONG lRowIndex, LONG lColumnIndex, CProperty& Prop) PURE;
STDMETHOD(GetKeyProp)(PROPID& KeyPropID) PURE;
STDMETHOD(GetColumnPriority)(LONG lColumnIndex, PRIORITY& ColumnPriority) PURE;
STDMETHOD(GetRowCount)(LONG& lNumberOfRows) PURE;
STDMETHOD(GetColumnCount)(LONG& lNumberOfColumns) PURE;
STDMETHOD(GetColumn)(LONG lColumnIndex, PROPID& PropID) PURE;
STDMETHOD(GetColumn)(LONG lColumnIndex, PROPID& PropID, DWORD& dwType, LPVOID& lpvDefaultValue,
DWORD& cbSize, PRIORITY& ColumnPriority) PURE;
STDMETHOD(GetColumnFromPropID)(PROPID PropID, LONG& lColumnIndex) PURE;
// Clear result set
STDMETHOD(Clear)() PURE;
STDMETHOD(ClearRows)() PURE;
STDMETHOD(Free)() PURE;
// Asynchronous support
STDMETHOD(IsCompleted)() PURE; // returns S_OK or S_FALSE
STDMETHOD(Cancel)() PURE;
STDMETHOD(Pause)(BOOL fPause) PURE;
STDMETHOD(GetRowStatus)(LONG lRowFirst, LONG cRows, LPROWSTATUS lpRowStatus) PURE;
STDMETHOD(GetColumnStatus)(LPCOLUMNSTATUS lpColStatus) PURE;
};
typedef IITResultSet* LPITRS;
//----------------------------------------------------------------------
//------ Word Breaking Definitions ------------
//----------------------------------------------------------------------
// {D53552C8-77E3-101A-B552-08002B33B0E6}
DEFINE_GUID(IID_IWordBreaker,
0xD53552C8, 0x77E3, 0x101A, 0xB5, 0x52, 0x08, 0x00, 0x2B, 0x33, 0xB0, 0xE6);
// {CC907054-C058-101A-B554-08002B33B0E6}
DEFINE_GUID(IID_IWordSink,
0xCC907054, 0xC058, 0x101A, 0xB5, 0x54, 0x08, 0x00, 0x2B, 0x33, 0xB0, 0xE6);
// {CC906FF0-C058-101A-B554-08002B33B0E6}
DEFINE_GUID(IID_IPhraseSink,
0xCC906FF0, 0xC058, 0x101A, 0xB5, 0x54, 0x08, 0x00, 0x2B, 0x33, 0xB0, 0xE6);
// {8fa0d5a6-dedf-11d0-9a61-00c04fb68bf7}
DEFINE_GUID(IID_IWordBreakerConfig,
0x8fa0d5a6, 0xdedf, 0x11d0, 0x9a, 0x61, 0x00, 0xc0, 0x4f, 0xb6, 0x8b, 0xf7);
// {4662daaf-d393-11d0-9a56-00c04fb68bf7}
DEFINE_GUID(CLSID_ITStdBreaker,
0x4662daaf, 0xd393, 0x11d0, 0x9a, 0x56, 0x00, 0xc0, 0x4f, 0xb6, 0x8b, 0xf7);
//----------------------------------------------------------------------
//------ Stop Word List Definitions ------------
//----------------------------------------------------------------------
// {8fa0d5ad-dedf-11d0-9a61-00c04fb68bf7}
DEFINE_GUID(IID_IITStopWordList,
0x8fa0d5ad, 0xdedf, 0x11d0, 0x9a, 0x61, 0x00, 0xc0, 0x4f, 0xb6, 0x8b, 0xf7);
//----------------------------------------------------------------------
//------ Stemming Definitions ------------
//----------------------------------------------------------------------
// {efbaf140-7f42-11ce-be57-00aa0051fe20}
DEFINE_GUID(IID_IStemmer,
0xefbaf140, 0x7f42, 0x11ce, 0xbe, 0x57, 0x00, 0xaa, 0x00, 0x51, 0xfe, 0x20);
// {fe77c330-7f42-11ce-be57-00aa0051fe20}
DEFINE_GUID(IID_IStemSink,
0xfe77c330, 0x7f42, 0x11ce, 0xbe, 0x57, 0x00, 0xaa, 0x00, 0x51, 0xfe, 0x20);
// {8fa0d5a7-dedf-11d0-9a61-00c04fb68bf7}
DEFINE_GUID(IID_IStemmerConfig,
0x8fa0d5a7, 0xdedf, 0x11d0, 0x9a, 0x61, 0x00, 0xc0, 0x4f, 0xb6, 0x8b, 0xf7);
// {8fa0d5a8-dedf-11d0-9a61-00c04fb68bf7}
DEFINE_GUID(CLSID_ITEngStemmer,
0x8fa0d5a8, 0xdedf, 0x11d0, 0x9a, 0x61, 0x00, 0xc0, 0x4f, 0xb6, 0x8b, 0xf7);
#endif // __INFOTECH_H__