summaryrefslogtreecommitdiffstats
path: root/public/sdk/inc/mfc42/afxconv.h
diff options
context:
space:
mode:
Diffstat (limited to 'public/sdk/inc/mfc42/afxconv.h')
-rw-r--r--public/sdk/inc/mfc42/afxconv.h148
1 files changed, 148 insertions, 0 deletions
diff --git a/public/sdk/inc/mfc42/afxconv.h b/public/sdk/inc/mfc42/afxconv.h
new file mode 100644
index 000000000..a401555d4
--- /dev/null
+++ b/public/sdk/inc/mfc42/afxconv.h
@@ -0,0 +1,148 @@
+#ifndef __AFXCONV_H__
+#define __AFXCONV_H__
+
+#ifndef _OBJBASE_H_
+#include <objbase.h>
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// Global UNICODE<>ANSI translation helpers
+
+LPWSTR AFXAPI AfxA2WHelper(LPWSTR lpw, LPCSTR lpa, int nChars);
+LPSTR AFXAPI AfxW2AHelper(LPSTR lpa, LPCWSTR lpw, int nChars);
+
+#define A2CW(lpa) (\
+ ((LPCSTR)lpa == NULL) ? NULL : (\
+ _convert = (lstrlenA(lpa)+1),\
+ (LPCWSTR)AfxA2WHelper((LPWSTR) alloca(_convert*2), lpa, _convert)\
+ )\
+)
+
+#define A2W(lpa) (\
+ ((LPCSTR)lpa == NULL) ? NULL : (\
+ _convert = (lstrlenA(lpa)+1),\
+ AfxA2WHelper((LPWSTR) alloca(_convert*2), lpa, _convert)\
+ )\
+)
+
+#define W2CA(lpw) (\
+ ((LPCWSTR)lpw == NULL) ? NULL : (\
+ _convert = (wcslen(lpw)+1)*2,\
+ (LPCSTR)AfxW2AHelper((LPSTR) alloca(_convert), lpw, _convert)\
+ )\
+)
+
+#define W2A(lpw) (\
+ ((LPCWSTR)lpw == NULL) ? NULL : (\
+ _convert = (wcslen(lpw)+1)*2,\
+ AfxW2AHelper((LPSTR) alloca(_convert), lpw, _convert)\
+ )\
+)
+
+#ifndef _DEBUG
+#define USES_CONVERSION int _convert; _convert
+#else
+#define USES_CONVERSION int _convert = 0;
+#endif
+
+#ifdef _UNICODE
+ #define T2A W2A
+ #define T2CA W2CA
+ #define A2T A2W
+ #define A2CT A2CW
+ inline LPWSTR T2W(LPTSTR lp) { return lp; }
+ inline LPCWSTR T2CW(LPCTSTR lp) { return lp; }
+ inline LPTSTR W2T(LPWSTR lp) { return lp; }
+ inline LPCTSTR W2CT(LPCWSTR lp) { return lp; }
+#else
+ #define T2W A2W
+ #define T2CW A2CW
+ #define W2T W2A
+ #define W2CT W2CA
+ inline LPSTR T2A(LPTSTR lp) { return lp; }
+ inline LPCSTR T2CA(LPCTSTR lp) { return lp; }
+ inline LPTSTR A2T(LPSTR lp) { return lp; }
+ inline LPCTSTR A2CT(LPCSTR lp) { return lp; }
+#endif
+
+#define OLESTDDELIMOLE OLESTR("\\")
+
+#if defined(_UNICODE)
+// in these cases the default (TCHAR) is the same as OLECHAR
+ #define DEVMODEOLE DEVMODEW
+ #define LPDEVMODEOLE LPDEVMODEW
+ #define TEXTMETRICOLE TEXTMETRICW
+ #define LPTEXTMETRICOLE LPTEXTMETRICW
+ inline size_t ocslen(LPCOLESTR x) { return wcslen(x); }
+ inline OLECHAR* ocscpy(LPOLESTR dest, LPCOLESTR src) { return wcscpy(dest, src); }
+ inline LPCOLESTR T2COLE(LPCTSTR lp) { return lp; }
+ inline LPCTSTR OLE2CT(LPCOLESTR lp) { return lp; }
+ inline LPOLESTR T2OLE(LPTSTR lp) { return lp; }
+ inline LPTSTR OLE2T(LPOLESTR lp) { return lp; }
+ inline LPOLESTR TASKSTRINGT2OLE(LPOLESTR lp) { return lp; }
+ inline LPTSTR TASKSTRINGOLE2T(LPOLESTR lp) { return lp; }
+ inline LPDEVMODEW DEVMODEOLE2T(LPDEVMODEOLE lp) { return lp; }
+ inline LPDEVMODEOLE DEVMODET2OLE(LPDEVMODEW lp) { return lp; }
+ inline LPTEXTMETRICW TEXTMETRICOLE2T(LPTEXTMETRICOLE lp) { return lp; }
+ inline LPTEXTMETRICOLE TEXTMETRICT2OLE(LPTEXTMETRICW lp) { return lp; }
+ inline BSTR BSTR2TBSTR(BSTR bstr) { return bstr;}
+#elif defined(OLE2ANSI)
+// in these cases the default (TCHAR) is the same as OLECHAR
+ #define DEVMODEOLE DEVMODEA
+ #define LPDEVMODEOLE LPDEVMODEA
+ #define TEXTMETRICOLE TEXTMETRICA
+ #define LPTEXTMETRICOLE LPTEXTMETRICA
+ inline size_t ocslen(LPCOLESTR x) { return lstrlenA(x); }
+ inline OLECHAR* ocscpy(LPOLESTR dest, LPCOLESTR src) { return lstrcpyA(dest, src); }
+ inline LPCOLESTR T2COLE(LPCTSTR lp) { return lp; }
+ inline LPCTSTR OLE2CT(LPCOLESTR lp) { return lp; }
+ inline LPOLESTR T2OLE(LPTSTR lp) { return lp; }
+ inline LPTSTR OLE2T(LPOLESTR lp) { return lp; }
+ inline LPOLESTR TASKSTRINGT2OLE(LPOLESTR lp) { return lp; }
+ inline LPTSTR TASKSTRINGOLE2T(LPOLESTR lp) { return lp; }
+ inline LPDEVMODE DEVMODEOLE2T(LPDEVMODEOLE lp) { return lp; }
+ inline LPDEVMODEOLE DEVMODET2OLE(LPDEVMODE lp) { return lp; }
+ inline LPTEXTMETRIC TEXTMETRICOLE2T(LPTEXTMETRICOLE lp) { return lp; }
+ inline LPTEXTMETRICOLE TEXTMETRICT2OLE(LPTEXTMETRIC lp) { return lp; }
+ inline BSTR BSTR2TBSTR(BSTR bstr) { return bstr; }
+#else
+ #define DEVMODEOLE DEVMODEW
+ #define LPDEVMODEOLE LPDEVMODEW
+ #define TEXTMETRICOLE TEXTMETRICW
+ #define LPTEXTMETRICOLE LPTEXTMETRICW
+ inline size_t ocslen(LPCOLESTR x) { return wcslen(x); }
+ inline OLECHAR* ocscpy(LPOLESTR dest, LPCOLESTR src) { return wcscpy(dest, src); }
+ #define T2COLE(lpa) A2CW(lpa)
+ #define T2OLE(lpa) A2W(lpa)
+ #define OLE2CT(lpo) W2CA(lpo)
+ #define OLE2T(lpo) W2A(lpo)
+ #define TASKSTRINGT2OLE(lpa) AfxTaskStringA2W(lpa)
+ #define TASKSTRINGOLE2T(lpo) AfxTaskStringW2A(lpo)
+ #define DEVMODEOLE2T(lpo) DEVMODEW2A(lpo)
+ #define DEVMODET2OLE(lpa) DEVMODEA2W(lpa)
+ #define TEXTMETRICOLE2T(lptmw) TEXTMETRICW2A(lptmw)
+ #define TEXTMETRICT2OLE(lptma) TEXTMETRICA2W(lptma)
+ #define BSTR2TBSTR(bstr) AfxBSTR2ABSTR(bstr)
+#endif
+
+#ifdef OLE2ANSI
+ #define W2OLE W2A
+ #define W2COLE W2CA
+ #define OLE2W A2W
+ #define OLE2CW A2CW
+ inline LPOLESTR A2OLE(LPSTR lp) { return lp; }
+ inline LPCOLESTR A2COLE(LPCSTR lp) { return lp; }
+ inline LPSTR OLE2A(LPOLESTR lp) { return lp; }
+ inline LPCSTR OLE2CA(LPCOLESTR lp) { return lp; }
+#else
+ #define A2OLE A2W
+ #define A2COLE A2CW
+ #define OLE2A W2A
+ #define OLE2CA W2CA
+ inline LPOLESTR W2OLE(LPWSTR lp) { return lp; }
+ inline LPCOLESTR W2COLE(LPCWSTR lp) { return lp; }
+ inline LPWSTR OLE2W(LPOLESTR lp) { return lp; }
+ inline LPCWSTR OLE2CW(LPCOLESTR lp) { return lp; }
+#endif
+
+#endif //__AFXCONV_H__