home *** CD-ROM | disk | FTP | other *** search
/ The Net: Ultimate Internet Guide / WWLCD1.ISO / pc / frntpage.sdk / cgi / olecgi / noafxstr.h < prev    next >
Encoding:
C/C++ Source or Header  |  1996-05-31  |  4.0 KB  |  114 lines

  1.  
  2. /* noafxstr.h: 
  3.  
  4.    need string conversions for OLE, but don't want all of MFC;
  5.    these were borrowed from various MFC header files */
  6.  
  7. LPWSTR NoAfxA2WHelper(LPWSTR lpw, LPCSTR lpa, int nChars);
  8. LPSTR NoAfxW2AHelper(LPSTR lpa, LPCWSTR lpw, int nChars);
  9.  
  10. #define A2CW(lpa) (\
  11.     ((LPCSTR)lpa == NULL) ? NULL : (\
  12.         _convert = (strlen(lpa)+1),\
  13.         (LPCWSTR)NoAfxA2WHelper((LPWSTR) alloca(_convert*2), lpa, _convert)\
  14.     )\
  15. )
  16.  
  17. #define A2W(lpa) (\
  18.     ((LPCSTR)lpa == NULL) ? NULL : (\
  19.         _convert = (strlen(lpa)+1),\
  20.         NoAfxA2WHelper((LPWSTR) alloca(_convert*2), lpa, _convert)\
  21.     )\
  22. )
  23.  
  24. #define W2CA(lpw) (\
  25.     ((LPCWSTR)lpw == NULL) ? NULL : (\
  26.         _convert = (wcslen(lpw)+1)*2,\
  27.         (LPCSTR)NoAfxW2AHelper((LPSTR) alloca(_convert), lpw, _convert)\
  28.     )\
  29. )
  30.  
  31. #define W2A(lpw) (\
  32.     ((LPCWSTR)lpw == NULL) ? NULL : (\
  33.         _convert = (wcslen(lpw)+1)*2,\
  34.         NoAfxW2AHelper((LPSTR) alloca(_convert), lpw, _convert)\
  35.     )\
  36. )
  37.  
  38. #ifndef _DEBUG
  39. #define USES_CONVERSION int _convert; _convert
  40. #else
  41. #define USES_CONVERSION int _convert = 0;
  42. #endif
  43.  
  44. #if defined(_UNICODE)
  45. // in these cases the default (TCHAR) is the same as OLECHAR
  46.     #define DEVMODEOLE DEVMODEW
  47.     #define LPDEVMODEOLE LPDEVMODEW
  48.     #define TEXTMETRICOLE TEXTMETRICW
  49.     #define LPTEXTMETRICOLE LPTEXTMETRICW
  50.     inline size_t ocslen(LPCOLESTR x) { return wcslen(x); }
  51.     inline OLECHAR* ocscpy(LPOLESTR dest, LPCOLESTR src) { return wcscpy(dest, src); }
  52.     inline LPCOLESTR T2COLE(LPCTSTR lp) { return lp; }
  53.     inline LPCTSTR OLE2CT(LPCOLESTR lp) { return lp; }
  54.     inline LPOLESTR T2OLE(LPTSTR lp) { return lp; }
  55.     inline LPTSTR OLE2T(LPOLESTR lp) { return lp; }
  56.     inline LPOLESTR TASKSTRINGT2OLE(LPOLESTR lp) { return lp; }
  57.     inline LPTSTR TASKSTRINGOLE2T(LPOLESTR lp) { return lp; }
  58.     inline LPDEVMODEW DEVMODEOLE2T(LPDEVMODEOLE lp) { return lp; }
  59.     inline LPDEVMODEOLE DEVMODET2OLE(LPDEVMODEW lp) { return lp; }
  60.     inline LPTEXTMETRICW TEXTMETRICOLE2T(LPTEXTMETRICOLE lp) { return lp; }
  61.     inline LPTEXTMETRICOLE TEXTMETRICT2OLE(LPTEXTMETRICW lp) { return lp; }
  62.     inline BSTR BSTR2TBSTR(BSTR bstr) { return bstr;}
  63. #elif defined(OLE2ANSI)
  64. // in these cases the default (TCHAR) is the same as OLECHAR
  65.     #define DEVMODEOLE DEVMODEA
  66.     #define LPDEVMODEOLE LPDEVMODEA
  67.     #define TEXTMETRICOLE TEXTMETRICA
  68.     #define LPTEXTMETRICOLE LPTEXTMETRICA
  69.     inline size_t ocslen(LPCOLESTR x) { return strlen(x); }
  70.     inline OLECHAR* ocscpy(LPOLESTR dest, LPCOLESTR src) { return strcpy(dest, src); }
  71.     inline LPCOLESTR T2COLE(LPCTSTR lp) { return lp; }
  72.     inline LPCTSTR OLE2CT(LPCOLESTR lp) { return lp; }
  73.     inline LPOLESTR T2OLE(LPTSTR lp) { return lp; }
  74.     inline LPTSTR OLE2T(LPOLESTR lp) { return lp; }
  75.     inline LPOLESTR TASKSTRINGT2OLE(LPOLESTR lp) { return lp; }
  76.     inline LPTSTR TASKSTRINGOLE2T(LPOLESTR lp) { return lp; }
  77.     inline LPDEVMODE DEVMODEOLE2T(LPDEVMODEOLE lp) { return lp; }
  78.     inline LPDEVMODEOLE DEVMODET2OLE(LPDEVMODE lp) { return lp; }
  79.     inline LPTEXTMETRIC TEXTMETRICOLE2T(LPTEXTMETRICOLE lp) { return lp; }
  80.     inline LPTEXTMETRICOLE TEXTMETRICT2OLE(LPTEXTMETRIC lp) { return lp; }
  81.     inline BSTR BSTR2TBSTR(BSTR bstr) { return bstr; }
  82. #else
  83.     #define DEVMODEOLE DEVMODEW
  84.     #define LPDEVMODEOLE LPDEVMODEW
  85.     #define TEXTMETRICOLE TEXTMETRICW
  86.     #define LPTEXTMETRICOLE LPTEXTMETRICW
  87.     inline size_t ocslen(LPCOLESTR x) { return wcslen(x); }
  88.     inline OLECHAR* ocscpy(LPOLESTR dest, LPCOLESTR src) { return wcscpy(dest, src); }
  89.     #define T2COLE(lpa) A2CW(lpa)
  90.     #define T2OLE(lpa) A2W(lpa)
  91.     #define OLE2CT(lpo) W2CA(lpo)
  92.     #define OLE2T(lpo) W2A(lpo)
  93.     #define TASKSTRINGT2OLE(lpa)    AfxTaskStringA2W(lpa)
  94.     #define TASKSTRINGOLE2T(lpo) AfxTaskStringW2A(lpo)
  95.     #define DEVMODEOLE2T(lpo) DEVMODEW2A(lpo)
  96.     #define DEVMODET2OLE(lpa) DEVMODEA2W(lpa)
  97.     #define TEXTMETRICOLE2T(lptmw) TEXTMETRICW2A(lptmw)
  98.     #define TEXTMETRICT2OLE(lptma) TEXTMETRICA2W(lptma)
  99.     #define BSTR2TBSTR(bstr) AfxBSTR2ABSTR(bstr)
  100. #endif
  101.  
  102. #ifdef _UNICODE
  103.     #define T2A W2A
  104.     #define A2T A2W
  105.     #define T2W(x)  (x)
  106.     #define W2T(x)  (x)
  107. #else
  108.     #define T2W A2W
  109.     #define W2T W2A
  110.     #define T2A(x)  (x)
  111.     #define A2T(x)  (x)
  112. #endif
  113.  
  114.