// ITGROUP.H: IITGroup interface declaration #ifndef __ITGROUP_H__ #define __ITGROUP_H__ //#include // {B1A6CA91-A479-11d0-9741-00AA006117EB} DEFINE_GUID(IID_IITGroup, 0xb1a6ca91, 0xa479, 0x11d0, 0x97, 0x41, 0x0, 0xaa, 0x0, 0x61, 0x17, 0xeb); // {98258914-B6AB-11d0-9D92-00A0C90F55A5} DEFINE_GUID(IID_IITGroupArray, 0x98258914, 0xb6ab, 0x11d0, 0x9d, 0x92, 0x0, 0xa0, 0xc9, 0xf, 0x55, 0xa5); #ifdef ITPROXY // {B1A6CA92-A479-11d0-9741-00AA006117EB} DEFINE_GUID(CLSID_IITGroup, 0xb1a6ca92, 0xa479, 0x11d0, 0x97, 0x41, 0x0, 0xaa, 0x0, 0x61, 0x17, 0xeb); // {98258915-B6AB-11d0-9D92-00A0C90F55A5} DEFINE_GUID(CLSID_IITGroupArray, 0x98258915, 0xb6ab, 0x11d0, 0x9d, 0x92, 0x0, 0xa0, 0xc9, 0xf, 0x55, 0xa5); #else // {4662daab-d393-11d0-9a56-00c04fb68bf7} (changed from IT 3.0) DEFINE_GUID(CLSID_IITGroupLocal, 0x4662daab, 0xd393, 0x11d0, 0x9a, 0x56, 0x00, 0xc0, 0x4f, 0xb6, 0x8b, 0xf7); // {4662daac-d393-11d0-9a56-00c04fb68bf7} (changed from IT 3.0) DEFINE_GUID(CLSID_IITGroupArrayLocal, 0x4662daac, 0xd393, 0x11d0, 0x9a, 0x56, 0x00, 0xc0, 0x4f, 0xb6, 0x8b, 0xf7); #endif // ITPROXY // Forward declarations interface IITDatabase; DECLARE_INTERFACE_(IITGroup, IUnknown) { STDMETHOD(Initiate)(DWORD lcGrpItem) PURE; STDMETHOD(CreateFromBitVector)(LPBYTE lpBits, DWORD dwSize, DWORD dwItems) PURE; STDMETHOD(CreateFromBuffer)(HANDLE h) PURE; STDMETHOD(Open)(IITDatabase* lpITDB, LPCWSTR lpszMoniker) PURE; STDMETHOD(Free)(void) PURE; STDMETHOD(CopyOutBitVector)(IITGroup* pIITGroup) PURE; STDMETHOD(AddItem)(DWORD dwGrpItem) PURE; STDMETHOD(RemoveItem)(DWORD dwGrpItem) PURE; STDMETHOD(FindTopicNum)(DWORD dwCount, LPDWORD lpdwOutputTopicNum) PURE; STDMETHOD(FindOffset)(DWORD dwTopicNum, LPDWORD lpdwOutputOffset) PURE; STDMETHOD(GetSize)(LPDWORD dwGrpSize) PURE; STDMETHOD(Trim)(void) PURE; STDMETHOD(And)(IITGroup* pIITGroup) PURE; STDMETHOD(And)(IITGroup* pIITGroupIn, IITGroup* pIITGroupOut) PURE; STDMETHOD(Or)(IITGroup* pIITGroup) PURE; STDMETHOD(Or)(IITGroup* pIITGroupIn, IITGroup* pIITGroupOut) PURE; STDMETHOD(Not)(void) PURE; STDMETHOD(Not)(IITGroup* pIITGroupOut) PURE; STDMETHOD(IsBitSet)(DWORD dwTopicNum) PURE; STDMETHOD(CountBitsOn)(LPDWORD lpdwTotalNumBitsOn) PURE; STDMETHOD(Clear)(void) PURE; STDMETHOD_(LPVOID, GetLocalImageOfGroup)(void) PURE; STDMETHOD(PutRemoteImageOfGroup)(LPVOID lpGroupIn) PURE; }; typedef IITGroup* LPITGROUP; #define ITGP_MAX_GROUPARRAY_ENTRIES 32 // maximum number of groups allowed in a collection #define ITGP_ALL_ENTRIES (-1L) #define ITGP_OPERATOR_OR 0 #define ITGP_OPERATOR_AND 1 DECLARE_INTERFACE_(IITGroupArray, IITGroup) { // composite group interface STDMETHOD(InitEntry)(IITDatabase *piitDB, LPCWSTR lpwszName, LONG& lEntryNum) PURE; STDMETHOD(InitEntry)(IITGroup *piitGroup, LONG& lEntryNum) PURE; STDMETHOD(SetEntry)(LONG lEntryNum) PURE; STDMETHOD(ClearEntry)(LONG lEntryNum) PURE; STDMETHOD(SetDefaultOp)(LONG cDefaultOp) PURE; STDMETHOD(ToString)(LPWSTR *ppwBuffer) PURE; }; typedef IITGroupArray* LPIITGroupArray; #endif // __ITGROUP_H__