diff options
author | MikalaiR <nikolay.romanovich@narod.ru> | 2016-01-20 19:11:39 +0000 |
---|---|---|
committer | MikalaiR <nikolay.romanovich@narod.ru> | 2016-01-20 19:11:39 +0000 |
commit | 553f922a7f1d56d0132b9e2dd2f01a9606a11108 (patch) | |
tree | d6b4900efdcf6ffe59b421dc2045324bfb80b7c6 /plugins/IEView/src/external_funcs.cpp | |
parent | 57b80b65d310667d22faa05906eaf4458f977483 (diff) |
IEView: code optimization
git-svn-id: http://svn.miranda-ng.org/main/trunk@16129 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c
Diffstat (limited to 'plugins/IEView/src/external_funcs.cpp')
-rw-r--r-- | plugins/IEView/src/external_funcs.cpp | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/plugins/IEView/src/external_funcs.cpp b/plugins/IEView/src/external_funcs.cpp new file mode 100644 index 0000000000..26f07d490e --- /dev/null +++ b/plugins/IEView/src/external_funcs.cpp @@ -0,0 +1,45 @@ +#include "stdafx.h"
+
+namespace External
+{
+ HRESULT db_get(DISPPARAMS *pDispParams, VARIANT *pVarResult)
+ {
+ if (pDispParams->cArgs == 3 && pDispParams && pVarResult)
+ {
+ MCONTACT hContact = pDispParams->rgvarg[2].vt == VT_INT ? pDispParams->rgvarg[2].intVal : NULL;
+ BSTR szModule = pDispParams->rgvarg[1].vt == VT_BSTR ? pDispParams->rgvarg[1].bstrVal : NULL;
+ BSTR szSetting = pDispParams->rgvarg[0].vt == VT_BSTR ? pDispParams->rgvarg[0].bstrVal : NULL;
+
+ DBVARIANT dbv = { 0 };
+
+ db_get(hContact, _T2A((TCHAR*)szModule), _T2A((TCHAR*)szSetting), &dbv);
+
+ switch (dbv.type)
+ {
+ case DBVT_BYTE:
+ pVarResult->bVal = dbv.bVal;
+ pVarResult->vt = VT_BOOL;
+ break;
+ case DBVT_WCHAR:
+ pVarResult->vt = VT_BSTR;
+ pVarResult->bstrVal = ::SysAllocString(dbv.pwszVal);
+ break;
+ case DBVT_UTF8:
+ pVarResult->vt = VT_BSTR;
+ pVarResult->bstrVal = ::SysAllocString(ptrW(mir_utf8decodeW(dbv.pszVal)));
+ break;
+ case DBVT_ASCIIZ:
+ pVarResult->vt = VT_BSTR;
+ pVarResult->bstrVal = ::SysAllocString(_A2T(dbv.pszVal));
+ break;
+ case DBVT_DWORD:
+ pVarResult->vt = VT_INT;
+ pVarResult->intVal = dbv.dVal;
+ }
+
+
+ return S_OK;
+ }
+ return E_INVALIDARG;
+ }
+}
\ No newline at end of file |