You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
205 lines
6.0 KiB
205 lines
6.0 KiB
//+------------------------------------------------------------
|
|
//
|
|
// Copyright (C) 1998, Microsoft Corporation
|
|
//
|
|
// File: icatprops.h
|
|
//
|
|
// Contents: Implementation of ICategorizerProperties
|
|
//
|
|
// Classes: CCategorizerItemIMP
|
|
//
|
|
// Functions:
|
|
//
|
|
// History:
|
|
// jstamerj 1998/11/11 18:50:28: Created
|
|
//
|
|
//-------------------------------------------------------------
|
|
#ifndef __ICATPROPS_H__
|
|
#define __ICATPROPS_H__
|
|
|
|
#include <windows.h>
|
|
#include <dbgtrace.h>
|
|
#include <smtpevent.h>
|
|
|
|
#define CICATEGORIZERPROPSIMP_SIGNATURE (DWORD)'ICPR'
|
|
#define CICATEGORIZERPROPSIMP_SIGNATURE_FREE (DWORD)'XCPR'
|
|
|
|
|
|
class CICategorizerPropertiesIMP :
|
|
public ICategorizerProperties
|
|
{
|
|
public:
|
|
//IUnknown
|
|
STDMETHOD (QueryInterface) (REFIID iid, LPVOID *ppv) {
|
|
return m_pIUnknown->QueryInterface(iid, ppv);
|
|
}
|
|
STDMETHOD_(ULONG, AddRef) () { return m_pIUnknown->AddRef(); }
|
|
STDMETHOD_(ULONG, Release) () { return m_pIUnknown->Release(); }
|
|
|
|
public:
|
|
//ICategorizerProperties
|
|
STDMETHOD (GetStringA) (
|
|
DWORD dwPropId,
|
|
DWORD cch,
|
|
LPSTR pszValue);
|
|
STDMETHOD (PutStringA) (
|
|
DWORD dwPropId,
|
|
LPSTR pszValue);
|
|
STDMETHOD (GetDWORD) (
|
|
DWORD dwPropId,
|
|
DWORD *pdwValue);
|
|
STDMETHOD (PutDWORD) (
|
|
DWORD dwPropId,
|
|
DWORD dwValue);
|
|
STDMETHOD (GetHRESULT) (
|
|
DWORD dwPropId,
|
|
HRESULT *phrValue);
|
|
STDMETHOD (PutHRESULT) (
|
|
DWORD dwPropId,
|
|
HRESULT hrValue);
|
|
STDMETHOD (GetBool) (
|
|
DWORD dwPropId,
|
|
BOOL *pfValue);
|
|
STDMETHOD (PutBool) (
|
|
DWORD dwPropId,
|
|
BOOL fValue);
|
|
STDMETHOD (GetPVoid) (
|
|
DWORD dwPropId,
|
|
PVOID *ppv);
|
|
STDMETHOD (PutPVoid) (
|
|
DWORD dwPropId,
|
|
PVOID pvValue);
|
|
STDMETHOD (GetIUnknown) (
|
|
DWORD dwPropId,
|
|
IUnknown **ppUnknown);
|
|
STDMETHOD (PutIUnknown) (
|
|
DWORD dwPropId,
|
|
IUnknown *pUnknown);
|
|
STDMETHOD (GetIMailMsgProperties) (
|
|
DWORD dwPropId,
|
|
IMailMsgProperties **ppIMailMsgProperties);
|
|
STDMETHOD (PutIMailMsgProperties) (
|
|
DWORD dwPropId,
|
|
IMailMsgProperties *ppIMailMsgProperties);
|
|
STDMETHOD (GetIMailMsgRecipientsAdd) (
|
|
DWORD dwPropId,
|
|
IMailMsgRecipientsAdd **ppIMsgRecipientsAdd);
|
|
STDMETHOD (PutIMailMsgRecipientsAdd) (
|
|
DWORD dwPropId,
|
|
IMailMsgRecipientsAdd *pIMsgRecipientsAdd);
|
|
STDMETHOD (GetICategorizerItemAttributes) (
|
|
DWORD dwPropId,
|
|
ICategorizerItemAttributes **ppICategorizerItemAttributes);
|
|
STDMETHOD (PutICategorizerItemAttributes) (
|
|
DWORD dwPropId,
|
|
ICategorizerItemAttributes *pICategorizerItemAttributes);
|
|
STDMETHOD (GetICategorizerListResolve) (
|
|
DWORD dwPropId,
|
|
ICategorizerListResolve **ppICategorizerListResolve);
|
|
STDMETHOD (PutICategorizerListResolve) (
|
|
DWORD dwPropId,
|
|
ICategorizerListResolve *pICategorizerListResolve);
|
|
STDMETHOD (GetICategorizerMailMsgs) (
|
|
DWORD dwPropId,
|
|
ICategorizerMailMsgs **ppICategorizerMailMsgs);
|
|
STDMETHOD (PutICategorizerMailMsgs) (
|
|
DWORD dwPropId,
|
|
ICategorizerMailMsgs *pICategorizerMailMsgs);
|
|
STDMETHOD (GetICategorizerItem) (
|
|
DWORD dwPropId,
|
|
ICategorizerItem **ppICategorizerItem);
|
|
STDMETHOD (PutICategorizerItem) (
|
|
DWORD dwPropId,
|
|
ICategorizerItem *pICategorizerItem);
|
|
STDMETHOD (UnSetPropId) (
|
|
DWORD dwPropId);
|
|
|
|
public:
|
|
DWORD NumProps() {return m_dwNumPropIds;}
|
|
HRESULT GetStringAPtr(
|
|
DWORD dwPropId,
|
|
LPSTR *ppsz);
|
|
|
|
private:
|
|
CICategorizerPropertiesIMP(IUnknown *pIUnknown);
|
|
virtual ~CICategorizerPropertiesIMP();
|
|
|
|
void * operator new(size_t size, DWORD dwNumProps);
|
|
|
|
HRESULT Initialize();
|
|
LPSTR m_strdup(LPSTR psz);
|
|
|
|
typedef enum _PropStatus {
|
|
PROPSTATUS_UNSET = 0,
|
|
PROPSTATUS_SET_DWORD,
|
|
PROPSTATUS_SET_HRESULT,
|
|
PROPSTATUS_SET_BOOL,
|
|
PROPSTATUS_SET_PVOID,
|
|
PROPSTATUS_SET_STRINGA,
|
|
PROPSTATUS_SET_IUNKNOWN,
|
|
PROPSTATUS_SET_IMAILMSGPROPERTIES,
|
|
PROPSTATUS_SET_IMAILMSGRECIPIENTSADD,
|
|
PROPSTATUS_SET_ICATEGORIZERITEMATTRIBUTES,
|
|
PROPSTATUS_SET_ICATEGORIZERLISTRESOLVE,
|
|
PROPSTATUS_SET_ICATEGORIZERMAILMSGS,
|
|
PROPSTATUS_SET_ICATEGORIZERITEM
|
|
} PROPSTATUS, *PPROPSTATUS;
|
|
|
|
typedef struct _tagProp {
|
|
PROPSTATUS PropStatus;
|
|
union _tag_PropValue {
|
|
LPSTR pszValue;
|
|
DWORD dwValue;
|
|
BOOL fValue;
|
|
PVOID pvValue;
|
|
IUnknown *pIUnknownValue;
|
|
IMailMsgProperties *pIMailMsgPropertiesValue;
|
|
IMailMsgRecipientsAdd *pIMailMsgRecipientsAddValue;
|
|
ICategorizerItemAttributes *pICategorizerItemAttributesValue;
|
|
ICategorizerListResolve *pICategorizerListResolveValue;
|
|
ICategorizerMailMsgs *pICategorizerMailMsgsValue;
|
|
ICategorizerItem *pICategorizerItemValue;
|
|
} PropValue;
|
|
} PROPERTY, *PPROPERTY;
|
|
|
|
DWORD m_dwSignature;
|
|
IUnknown *m_pIUnknown;
|
|
DWORD m_dwNumPropIds;
|
|
PPROPERTY m_rgProperties;
|
|
|
|
friend class CCategorizer;
|
|
friend class CICategorizerItemIMP;
|
|
friend class CICategorizerListResolveIMP;
|
|
friend class CICategorizerDLListResolveIMP;
|
|
};
|
|
|
|
//+------------------------------------------------------------
|
|
//
|
|
// Function: CICategorizerPropertiesIMP::m_strdup
|
|
//
|
|
// Synopsis: Allocates and copies a string
|
|
//
|
|
// Arguments:
|
|
// psz: String to copy
|
|
//
|
|
// Returns:
|
|
// Address of allocated string buffer, or NULL if out of memory
|
|
//
|
|
// History:
|
|
// jstamerj 1998/06/20 19:07:12: Created.
|
|
//
|
|
//-------------------------------------------------------------
|
|
inline LPSTR CICategorizerPropertiesIMP::m_strdup(
|
|
LPSTR psz)
|
|
{
|
|
_ASSERT(psz);
|
|
|
|
LPSTR pszNew;
|
|
pszNew = new CHAR[lstrlen(psz)+1];
|
|
if(pszNew) {
|
|
lstrcpy(pszNew, psz);
|
|
}
|
|
return pszNew;
|
|
}
|
|
|
|
#endif //__ICATPROPS_H__
|