/* Copyright (c) 1997-1999 Microsoft Corporation Module Name: sdpcset.h Abstract: Author: */ #ifndef __SDP_CHARACTER_SET__ #define __SDP_CHARACTER_SET__ // for code pages etc. #include const CHAR SDP_CHARACTER_SET_STRING[] = "\na=charset:"; const USHORT SDP_CHARACTER_SET_STRLEN = (USHORT) strlen(SDP_CHARACTER_SET_STRING); const CHAR ASCII_STRING[] = "ascii"; const USHORT ASCII_STRLEN = (USHORT) strlen(ASCII_STRING); const CHAR UTF7_STRING[] = "unicode-1-1-utf7"; const USHORT UTF7_STRLEN = (USHORT) strlen(UTF7_STRING); const CHAR UTF8_STRING[] = "unicode-1-1-utf8"; const USHORT UTF8_STRLEN = (USHORT) strlen(UTF8_STRING); enum SDP_CHARACTER_SET { CS_IMPLICIT, // implicit from the sdp CS_ASCII, // 8bit ISO 8859-1 CS_UTF7, // unicode, ISO 10646, UTF-7 encoding (rfc 1642) CS_UTF8, // unicode, UTF-8 encoding CS_INVALID // invalid character set }; struct SDP_CHARACTER_SET_ENTRY { SDP_CHARACTER_SET m_CharSetCode; const CHAR *m_CharSetString; USHORT m_Length; }; const SDP_CHARACTER_SET_ENTRY SDP_CHARACTER_SET_TABLE[] = { {CS_UTF7, UTF7_STRING, UTF7_STRLEN}, {CS_UTF8, UTF8_STRING, UTF8_STRLEN}, {CS_ASCII, ASCII_STRING, ASCII_STRLEN} }; const USHORT NUM_SDP_CHARACTER_SET_ENTRIES = sizeof(SDP_CHARACTER_SET_TABLE)/sizeof(SDP_CHARACTER_SET_ENTRY); inline BOOL IsLegalCharacterSet( IN SDP_CHARACTER_SET CharacterSet, IN OUT UINT *CodePage = NULL ) { switch(CharacterSet) { case CS_ASCII: { if ( NULL != CodePage ) *CodePage = CP_ACP; } break; case CS_UTF7: { if ( NULL != CodePage ) *CodePage = CP_UTF7; } break; case CS_UTF8: { if ( NULL != CodePage ) *CodePage = CP_UTF8; } break; default: { return FALSE; } } return TRUE; } #endif // __SDP_CHARACTER_SET__