ANSIAPI.H
/* 
 * ansiapi.h 
 * This file contains prototypes of ANSI version of OLE apis 
 * and mapping fooA to foo 
 */ 
#ifndef _ANSIAPI_INCL 
#define _ANSIAPI_INCL 
 
#define UNICODEOLE32 
 
#ifdef WIN32S 
#if !defined(UNICODEOLE32) 
#pragma message("Compiling for 32bit ANSI Ole!\n"); 
#endif 
#endif 
 
#define WASANSI() {                                                           \ 
                   OutputDebugString("\n\r\t\tUnicode string was ANSI!\r\n"); \ 
                   Assert(0);                                                 \ 
                   _asm { int 3 }                                             \ 
                  } 
 
 
#ifndef UNICODEOLE32 
 
#define W2A(w, a, cb)     lstrcpy (a, w) 
#define A2W(a, w, cb)     lstrcpy (w, a) 
 
#define FREELOCALSTRING(p) 
#define MAKE_STR_LOCAL_COPYW2A(s, l)  l = s 
#define MAKE_STR_LOCAL_COPYA2W(s, l)  l = s 
 
#define OLESTRCPY                lstrcpy 
#define OLESTRCAT                lstrcat 
#define OLESTRLEN                lstrlen 
#define OLESTRCMP                lstrcmp 
 
#define DeleteFile_AW            DeleteFile 
#define _lopen_AW                _lopen 
#define _lcreat_AW               _lcreat 
#define GlobalAddAtom_AW         GlobalAddAtom 
#define GlobalGetAtomName_AW     GlobalGetAtomName 
#define RegOpenKey_AW            RegOpenKey 
 
#define CoLoadLibraryA   CoLoadLibrary 
 
#define StringFromCLSID2A    StringFromCLSID2 
#define StringFromIID2A      StringFromIID2 
#define StringFromGUID2A     StringFromGUID2 
#define CLSIDFromProgIDA     CLSIDFromProgID 
#define CLSIDFromStringA     CLSIDFromString 
#define ProgIDFromCLSIDA     ProgIDFromCLSID 
#define StringFromCLSIDA     StringFromCLSID 
 
#define UtDupStringA2W       UtDupString 
 
// Storage APIs 
#define StgOpenStorageA      StgOpenStorage 
 
// IPersistFile ansi translation 
 
#define IPersistFile_LoadA(pf, file, mode) (pf)->Load(file, mode) 
 
// IMoniker ansi translation 
 
#define IMoniker_GetDisplayNameA(pm, p1, p2, p3) (pm)->GetDisplayName(p1,p2,p3) 
 
#define CreateFileMonikerA   CreateFileMoniker 
 
#else  // UNICODEOLE32 
 
#define W2A(w, a, cb)     WideCharToMultiByte(                              \ 
                                               CP_ACP,                      \ 
                                               0,                           \ 
                                               w,                           \ 
                                               -1,                          \ 
                                               a,                           \ 
                                               cb,                          \ 
                                               NULL,                        \ 
                                               NULL) 
 
#define A2W(a, w, cb)     MultiByteToWideChar(                              \ 
                                               CP_ACP,                      \ 
                                               0,                           \ 
                                               a,                           \ 
                                               -1,                          \ 
                                               w,                           \ 
                                               cb) 
 
 
#define FREELOCALSTRING(p)      delete (p) 
#define MAKE_STR_LOCAL_COPYW2A(s, l)  {                                   \ 
                                      l = UtDupStringW2A(s);              \ 
                                      if (!l) {                           \ 
                                         return ResultFromScode(S_OOM);   \ 
                                      }                                   \ 
                                   } 
 
#define MAKE_STR_LOCAL_COPYA2W(s, l)  {                                   \ 
                                      l = UtDupStringA2W(s);              \ 
                                      if (!l) {                           \ 
                                         return ResultFromScode(S_OOM);   \ 
                                      }                                   \ 
                                   } 
 
#define OLESTRCPY                wcscpy 
#define OLESTRCAT                wcscat 
#define OLESTRLEN                wcslen 
#define OLESTRCMP                wcscmp 
 
#define DeleteFile_AW            DeleteFileW 
#define _lopen_AW                _lopenW 
#define _lcreat_AW               _lcreatW 
#define GlobalAddAtom_AW         GlobalAddAtomW 
#define GlobalGetAtomName_AW     GlobalGetAtomNameW 
#define RegOpenKey_AW            RegOpenKeyW 
 
//STDAPI_(HINSTANCE) CoLoadLibraryA(LPSTR lpszLibName, BOOL bAutoFree); 
 
#define StringFromCLSID2A(rclsid, lpsz, cbMax) \ 
    StringFromGUID2A(rclsid, lpsz, cbMax) 
 
#define StringFromIID2A(riid, lpsz, cbMax) \ 
    StringFromGUID2A(riid, lpsz, cbMax) 
 
 
//STDAPI_(int)  StringFromGUID2A(REFGUID rguid, LPSTR lpsz, int cbMax); 
//STDAPI        CLSIDFromProgIDA(LPCSTR szProgID, LPCLSID pclsid); 
//STDAPI        CLSIDFromStringA(LPSTR lpsz, LPCLSID lpclsid); 
//STDAPI        StringFromCLSIDA(REFCLSID rclsid, LPSTR FAR* lplpsz); 
//STDAPI        ProgIDFromCLSIDA (REFCLSID clsid, LPSTR FAR* lplpszProgID); 
 
//LPWSTR UtDupStringA2W(LPCSTR pSrc); 
//LPSTR  UtDupStringW2A(LPCWSTR pSrc); 
 
// Storage APIs 
//STDAPI StgOpenStorageA(LPCSTR pwcsName,IStorage FAR *pstgPriority, DWORD grfMode, SNB snbExclude, DWORD reserved, IStorage FAR * FAR *ppstgOpen); 
 
// IPersistFile ansi translation 
 
//HRESULT IPersistFile_LoadA(LPPERSISTFILE pIPF, LPSTR szFile, DWORD dwMode); 
 
// IMoniker ansi translation 
 
//HRESULT IMoniker_GetDisplayNameA(LPMONIKER pm, LPBC p1, LPMONIKER p2, LPSTR FAR *p3); 
 
//OLEAPI CreateFileMonikerA ( LPSTR lpszPathName, LPMONIKER FAR * ppmk ); 
 
#endif // !UNICODEOLE32 
 
#endif //  _ANSIAPI_INCL