Windows-Server-2003/inetsrv/iis/svcs/smtp/smtpmd/tables.h

196 lines
5.0 KiB
C

/*++
Copyright (c) 1997 Microsoft Corporation
Module Name :
tables.h
Abstract:
mapping tables to convert various info between text and binary
Environment:
Win32 User Mode
Author:
jaroslad (jan 1997)
--*/
#if !defined (__JD_TABLES_H)
#define __JD_TABLES_H
#include <afx.h>
#ifdef UNICODE
#include <iadmw.h>
#else
#include "ansimeta.h"
#endif
//constanst to be returned by functions that map name to code
//
#define NAME_NOT_FOUND 0xFFFFFFFE
BOOL IsNumber(const CString& name);
BOOL IsServiceName(const CString& name);
//**********************************************************************
// PROPERTY NAME TABLE DEFINITION
//**********************************************************************
struct tPropertyNameTable;
tPropertyNameTable gPropertyNameTable[];
struct tPropertyNameTable
{
DWORD dwCode;
LPCTSTR lpszName;
DWORD dwDefAttributes; //default attributes (metadata compatible)
DWORD dwDefUserType; //default user type (metadata compatible)
DWORD dwDefDataType; //default data type (metadata compatible)
DWORD dwFlags; //internal flags (nothing to do with metadata)
static tPropertyNameTable * FindRecord(DWORD dwCode, tPropertyNameTable * PropertyNameTable=::gPropertyNameTable);
static tPropertyNameTable * FindRecord(const CString strName, tPropertyNameTable * PropertyNameTable=::gPropertyNameTable);
static DWORD MapNameToCode(const CString& strName, tPropertyNameTable * PropertyNameTable=::gPropertyNameTable);
static CString MapCodeToName(DWORD dwCode, tPropertyNameTable * PropertyNameTable=::gPropertyNameTable);
};
DWORD MapPropertyNameToCode(const CString & strName);
//**********************************************************************
// VALUE TABLE DEFINITION
//**********************************************************************
struct tValueTable ;
tValueTable gValueTable[];
struct tValueTable
{
enum {TYPE_EXCLUSIVE=1};
DWORD dwCode;
LPCTSTR lpszName;
DWORD dwRelatedPropertyCode; // code of the Property this value can be used for
DWORD dwFlags; //internal flags (nothing to do with metadata)
static DWORD MapNameToCode(const CString& strName, DWORD dwRelatedPropertyCode, tValueTable * ValueTable=::gValueTable);
static CString MapValueContentToString(DWORD dwValueContent, DWORD dwRelatedPropertyCode, tValueTable * ValueTable=::gValueTable);
};
DWORD MapValueNameToCode(const CString & strName, DWORD dwRelatedPropertyCode);
//**********************************************************************
// COMMAND NAME TABLE DEFINITION
//**********************************************************************
struct tCommandNameTable ;
tCommandNameTable gCommandNameTable[];
struct tCommandNameTable
{
DWORD dwCode;
LPCTSTR lpszName;
DWORD dwFlags; //internal flags (nothing to do with metadata)
static DWORD MapNameToCode(const CString& strName, tCommandNameTable * CommandNameTable=::gCommandNameTable);
};
DWORD MapCommandNameToCode(const CString & strName);
enum
{ CMD_SET=1,
CMD_GET,
CMD_COPY,
CMD_DELETE,
CMD_ENUM,
CMD_ENUM_ALL,
CMD_CREATE,
CMD_RENAME,
CMD_SCRIPT,
CMD_SAVE,
CMD_APPCREATEINPROC,
CMD_APPCREATEOUTPROC,
CMD_APPDELETE,
CMD_APPRENAME,
CMD_APPUNLOAD,
CMD_APPGETSTATUS,
};
//**********************************************************************
// PROPERTY ATTRIB NAME TABLE DEFINITION
//**********************************************************************
struct tAttribNameTable ;
tAttribNameTable gAttribNameTable[];
struct tAttribNameTable
{
DWORD dwCode;
LPCTSTR lpszName;
DWORD dwFlags; //internal flags (nothing to do with metadata)
static DWORD MapNameToCode(const CString& strName, tAttribNameTable * AttribNameTable=::gAttribNameTable);
};
DWORD MapAttribNameToCode(const CString & strName);
//**********************************************************************
// PROPERTY DATA TYPE NAME TABLE DEFINITION
//**********************************************************************
struct tDataTypeNameTable ;
tDataTypeNameTable gDataTypeNameTable[];
struct tDataTypeNameTable
{
DWORD dwCode;
LPCTSTR lpszName;
DWORD dwFlags; //internal flags (nothing to do with metadata)
static DWORD MapNameToCode(const CString& strName, tDataTypeNameTable * DataTypeNameTable=::gDataTypeNameTable);
static CString MapCodeToName(DWORD a_dwCode, tDataTypeNameTable * DataTypeNameTable=::gDataTypeNameTable);
};
DWORD MapDataTypeNameToCode(const CString & strName);
//**********************************************************************
// PROPERTY USER TYPE NAME TABLE DEFINITION AND IMPLEMENTATION
//**********************************************************************
struct tUserTypeNameTable ;
tUserTypeNameTable gUserTypeNameTable[];
struct tUserTypeNameTable
{
DWORD dwCode;
LPCTSTR lpszName;
DWORD dwFlags; //internal flags (nothing to do with metadata)
static DWORD MapNameToCode(const CString& strName, tUserTypeNameTable * UserTypeNameTable=::gUserTypeNameTable);
};
DWORD MapUserTypeNameToCode(const CString & strName);
void PrintTablesInfo(void);
#endif