//--------------------------------------------------------------------------------------- // // @doc // // @module pputils.h | Passport utilities. // // Author: stevefu // // Date: 05/01/2000 // //--------------------------------------------------------------------------------------- #if !defined(PPUTILITIES_H__INCLUDED_) #define PPUTILITIES_H__INCLUDED_ #pragma once #include "nsconst.h" // Useful macros #define PPF_BOOL(b) (((b) == false) ? (k_szFalse) : (k_szTrue)) #define PPF_CHAR(p) ((((LPCSTR )(p)) == NULL) ? ("") : ((LPCSTR )(p))) #define PPF_WCHAR(p) ((((LPCWSTR )(p)) == NULL) ? (L"") : ((LPCWSTR )(p))) //////////////////////////////////////////////////////////////////////////////////////// // String utilities void Mbcs2Unicode(LPCSTR pszIn, unsigned codepage, BOOL bNEC, CStringW& wOut); void Unicode2Mbcs(LPCWSTR pwszIn, unsigned codepage, BOOL bNEC, CStringA& wOut); void FixUpHtmlDecimalCharacters(CStringW& str); void HtmlEscapeString(CStringW& str, LPCWSTR escch = L"\"<>" ); void HtmlEscapeString(CStringA& str, LPCSTR escch = "\"<>"); void UrlEscapeString(CStringW& wStr ); void UrlEscapeString(CStringA& oStr); CStringA UrlEscapeStr(const CStringA& oStr); void UrlUnescapeString(CStringW& wStr ); void UrlUnescapeString(CStringA& aStr); void BSTRMove(BSTR& src, CStringW& dest); void BSTRMove(BSTR& src, CStringA& dest); long HexToNum(wchar_t c); long FromHex(LPCWSTR pszHexString); void EncodeXMLString(CStringW& str ); void EncodeXMLString(CStringA& str); void EncodeWMLString(CStringW& str ); void EncodeWMLString(CStringA& str); void EncodeHDMLString(CStringW& str ); void EncodeHDMLString(CStringA& str); void ToHexStr(CStringA& outputToAppend, LPCWSTR instr) throw(); void ToHexStr(CStringA& outputToAppend, unsigned short in) throw(); void ToHexStr(CStringA& outputToAppend, unsigned long in) throw(); void ToHexStr(CStringA& outputToAppend, PBYTE pData, ULONG len) throw(); //////////////////////////////////////////////////////////////////////////////////////// // ini file processing typedef struct tag_ConfigIniPair { CString strIniKey; CString strIniValue; } IniSettingPair; BOOL GetPrivateProfilePairs( LPCTSTR lpFileName, LPCTSTR lpSectionName, ATL::CAtlArray& r ); //////////////////////////////////////////////////////////////////////////////////////// // Browser info // class CBrowserInfo { protected: BOOL m_bIsBrowserHigh; BOOL m_bIsWebTVBased; unsigned int m_nBrowserIndex; unsigned int m_nBrowserMajorVersion; unsigned int m_nBrowserMinorVersion; CStringA m_strBrowserVersion; CStringA m_strUserAgent; public: CBrowserInfo(LPCSTR pszUserAgentStr = NULL); ~CBrowserInfo(); BOOL Initialize(LPCSTR pszUserAgent); enum BROWSER_NAME_ID { BROWSER_UNKNOWN=0, BROWSER_IE=1, BROWSER_NETSCAPE=2, BROWSER_PASSPORT_CLIENT=3, BROWSER_UP=4, BROWSER_DoCoMo=5, BROWSER_WEBTV=6, BROWSER_ROGERS=7, BROWSER_MSTV=8, BROWSER_MMEPHONE = 9, BROWSER_IE_WINCE = 10, BROWSER_AVANTGO }; unsigned int GetBrowserNameIndex(); unsigned int GetBrowserMajorVersion(); unsigned int GetBrowserMinorVersion(); LPCSTR GetBrowserVersionString(); BOOL IsHighBrowser(); BOOL IsWebTVBased(); BOOL IfUserAgentHasStr(LPCSTR str); }; //////////////////////////////////////////////////////////////////////////////////////// // URL helper: ATLSvr CUrl. // It does not provide an easy way to set name-value pair on query string. Anyone feel strong // about needing one? // // // Time helper, birthdate helper: ATLSvr CTime, CTimeSpan // // // cookie helper: ATLSvr CCookie // #endif //PPUTILITIES_H__INCLUDED_