Leaked source code of windows server 2003
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

//+------------------------------------------------------------
//
// 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__