diff deps/Platinum/ThirdParty/Neptune/Source/System/WinCE/NptWinCeUtils.h @ 0:3425707ddbf6

Initial import (hopefully this mercurial stuff works...)
author fraserofthenight
date Mon, 06 Jul 2009 08:06:28 -0700
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/deps/Platinum/ThirdParty/Neptune/Source/System/WinCE/NptWinCeUtils.h	Mon Jul 06 08:06:28 2009 -0700
@@ -0,0 +1,92 @@
+/*****************************************************************
+|
+|   Neptune - Windows CE Utils
+|
+|   (c) 2001-2006 Gilles Boccon-Gibod
+|   Author: Gilles Boccon-Gibod (bok@bok.net)
+|
+****************************************************************/
+
+
+#ifndef _NPT_WINCE_UTILS_H_
+#define _NPT_WINCE_UTILS_H_
+
+/*----------------------------------------------------------------------
+|   includes
++---------------------------------------------------------------------*/
+#include <windows.h>
+
+/*----------------------------------------------------------------------
+|   fix windows macros
++---------------------------------------------------------------------*/
+#if defined(CreateDirectory)
+#undef CreateDirectory
+#endif
+
+#if defined(DeleteFile)
+#undef DeleteFile
+#endif
+
+/*----------------------------------------------------------------------
+|   includes
++---------------------------------------------------------------------*/
+#include "NptTypes.h"
+
+/*----------------------------------------------------------------------
+|   A2WHelper
++---------------------------------------------------------------------*/
+static LPWSTR A2WHelper(LPWSTR lpw, LPCSTR lpa, int nChars, UINT acp)
+{
+    int ret;
+
+    assert(lpa != NULL);
+    assert(lpw != NULL);
+    if (lpw == NULL || lpa == NULL) return NULL;
+
+    lpw[0] = '\0';
+    ret = MultiByteToWideChar(acp, 0, lpa, -1, lpw, nChars);
+    if (ret == 0) {
+        assert(0);
+        return NULL;
+    }        
+    return lpw;
+}
+
+/*----------------------------------------------------------------------
+|   W2AHelper
++---------------------------------------------------------------------*/
+static LPSTR W2AHelper(LPSTR lpa, LPCWSTR lpw, int nChars, UINT acp)
+{
+    int ret;
+
+    assert(lpw != NULL);
+    assert(lpa != NULL);
+    if (lpa == NULL || lpw == NULL) return NULL;
+
+    lpa[0] = '\0';
+    ret = WideCharToMultiByte(acp, 0, lpw, -1, lpa, nChars, NULL, NULL);
+    if (ret == 0) {
+        assert(0);
+        return NULL;
+    }
+    return lpa;
+}
+
+/*----------------------------------------------------------------------
+|   macros
++---------------------------------------------------------------------*/
+#define USES_CONVERSION int _convert = 0; LPCWSTR _lpw = NULL; LPCSTR _lpa = NULL
+
+#define A2W(lpa) (\
+    ((_lpa = lpa) == NULL) ? NULL : (\
+    _convert = (strlen(_lpa)+1),\
+    (INT_MAX/2<_convert)? NULL :  \
+    A2WHelper((LPWSTR) alloca(_convert*sizeof(WCHAR)), _lpa, _convert, CP_UTF8)))
+
+#define W2A(lpw) (\
+    ((_lpw = lpw) == NULL) ? NULL : (\
+    (_convert = (lstrlenW(_lpw)+1), \
+    (_convert>INT_MAX/2) ? NULL : \
+    W2AHelper((LPSTR) alloca(_convert*sizeof(WCHAR)), _lpw, _convert*sizeof(WCHAR), CP_UTF8))))
+
+#endif /* _NPT_WINCE_UTILS_H_ */
\ No newline at end of file