From 725f68b6808a8a30778f58223fac75386f082785 Mon Sep 17 00:00:00 2001 From: Kirill Volinsky Date: Fri, 18 May 2012 22:10:43 +0000 Subject: plugins folders renaming git-svn-id: http://svn.miranda-ng.org/main/trunk@61 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- plugins/Modernb/modern_commonheaders.cpp | 430 +++++++++++++++++++++++++++++++ 1 file changed, 430 insertions(+) create mode 100644 plugins/Modernb/modern_commonheaders.cpp (limited to 'plugins/Modernb/modern_commonheaders.cpp') diff --git a/plugins/Modernb/modern_commonheaders.cpp b/plugins/Modernb/modern_commonheaders.cpp new file mode 100644 index 0000000000..86c1309884 --- /dev/null +++ b/plugins/Modernb/modern_commonheaders.cpp @@ -0,0 +1,430 @@ +#define DB_USEHELPERFUNCTIONS +#include "hdr/modern_commonheaders.h" + +int __cdecl ModernGetSettingByte_Helper(HANDLE hContact, const char *szModule, const char *szSetting, int errorValue, const char *szFile, const int nLine) +{ + #if defined( _DEBUG ) + return DBGetContactSettingByte_Helper( hContact, szModule, szSetting, errorValue, szFile, nLine ); + #else + return DBGetContactSettingByte_Helper( hContact, szModule, szSetting, errorValue ); + #endif +} + +int __cdecl ModernGetSettingWord_Helper(HANDLE hContact, const char *szModule, const char *szSetting, int errorValue, const char *szFile, const int nLine) +{ + #if defined( _DEBUG ) + return DBGetContactSettingWord_Helper( hContact, szModule, szSetting, errorValue, szFile, nLine ); + #else + return DBGetContactSettingWord_Helper( hContact, szModule, szSetting, errorValue ); + #endif +} + +int __cdecl ModernGetSettingDword_Helper(HANDLE hContact, const char *szModule, const char *szSetting, int errorValue, const char *szFile, const int nLine) +{ + #if defined( _DEBUG ) + return DBGetContactSettingDword_Helper( hContact, szModule, szSetting, errorValue, szFile, nLine ); + #else + return DBGetContactSettingDword_Helper( hContact, szModule, szSetting, errorValue ); + #endif +} + +int __cdecl ModernGetSettingString_Helper(HANDLE hContact,const char *szModule, const char *szSetting,DBVARIANT *dbv, const char *szFile, const int nLine, const int nType) +{ + #if defined( _DEBUG ) + return DBGetContactSettingString_Helper( hContact, szModule, szSetting, dbv, szFile, nLine, nType ); + #else + return DBGetContactSettingString_Helper( hContact, szModule, szSetting, dbv, nType ); + #endif +} + +int __cdecl ModernGetSetting_Helper(HANDLE hContact,const char *szModule,const char *szSetting,DBVARIANT *dbv, const char *szFile, const int nLine) +{ + #if defined( _DEBUG ) + return DBGetContactSetting_Helper(hContact, szModule, szSetting, dbv, szFile, nLine); + #else + return DBGetContactSetting_Helper(hContact, szModule, szSetting, dbv); + #endif +} + +int __cdecl ModernWriteSettingByte(HANDLE hContact,const char *szModule,const char *szSetting,BYTE val) +{ + return DBWriteContactSettingByte( hContact, szModule, szSetting, val); +} + +int __cdecl ModernWriteSettingWord(HANDLE hContact,const char *szModule,const char *szSetting,WORD val) +{ + return DBWriteContactSettingWord( hContact, szModule, szSetting, val); +} + +int __cdecl ModernWriteSettingDword(HANDLE hContact,const char *szModule,const char *szSetting,DWORD val) +{ + return DBWriteContactSettingDword( hContact, szModule, szSetting, val); +} + +int __cdecl ModernWriteSettingString(HANDLE hContact,const char *szModule,const char *szSetting,const char *val) +{ + return DBWriteContactSettingString( hContact, szModule, szSetting, val ); +} +#ifdef _UNICODE +int __cdecl ModernWriteSettingWString(HANDLE hContact,const char *szModule,const char *szSetting,const WCHAR *val) +{ + return DBWriteContactSettingWString( hContact, szModule, szSetting, val ); +} +#endif + +int __cdecl ModernDBFreeVariant(DBVARIANT *dbv) +{ + return DBFreeVariant( dbv ); +} + +int __cdecl ModernDeleteSetting(HANDLE hContact,const char *szModule,const char *szSetting) +{ + return DBDeleteContactSetting( hContact, szModule, szSetting ); +} + +char* __cdecl ModernGetStringA( HANDLE hContact, const char *szModule, const char *szSetting ) +{ + char *str=NULL; + DBVARIANT dbv={0}; + ModernGetSettingString(hContact,szModule,szSetting,&dbv); + if(dbv.type==DBVT_ASCIIZ) + str=mir_strdup(dbv.pszVal); + ModernDBFreeVariant(&dbv); + return str; +} + +wchar_t* __cdecl ModernGetStringW( HANDLE hContact, const char *szModule, const char *szSetting ) +{ + wchar_t *str=NULL; + DBVARIANT dbv={0}; + DBGetContactSettingWString(hContact,szModule,szSetting,&dbv); + if(dbv.type==DBVT_WCHAR) + str=mir_wstrdup(dbv.pwszVal); + DBFreeVariant(&dbv); + return str; +} + +WORD __cdecl ModernGetSettingRangedWord(HANDLE hContact, const char *szModule, const char *szSetting, WORD errorValue, WORD minValue, WORD maxValue) +{ + return DBGetContactSettingRangedWord( hContact, szModule, szSetting, errorValue, minValue, maxValue); +} + +BYTE gl_TrimText=1; + +char * __cdecl strstri( char *a, const char *b) +{ + char * x, *y; + if (!a || !b) return FALSE; + x=_strdup(a); + y=_strdup(b); + x=_strupr(x); + y=_strupr(y); + char * pos = strstr(x,y); + if ( pos ) + { + char * retval = a + ( pos - x ); + free(x); + free(y); + return retval; + } + free(x); + free(y); + return NULL; +} +int __cdecl mir_strcmpi(const char *a, const char *b) +{ + if (a==NULL && b==NULL) return 0; + if (a==NULL || b==NULL) return _stricmp(a?a:"",b?b:""); + return _stricmp(a,b); +} + +int __cdecl mir_tstrcmpi(const TCHAR *a, const TCHAR *b) +{ + if (a==NULL && b==NULL) return 0; + if (a==NULL || b==NULL) return _tcsicmp(a?a:TEXT(""),b?b:TEXT("")); + return _tcsicmp(a,b); +} +BOOL __cdecl mir_bool_strcmpi(const char *a, const char *b) +{ + if (a==NULL && b==NULL) return 1; + if (a==NULL || b==NULL) return _stricmp(a?a:"",b?b:"")==0; + return _stricmp(a,b)==0; +} + +BOOL __cdecl mir_bool_tstrcmpi(const TCHAR *a, const TCHAR *b) +{ + if (a==NULL && b==NULL) return 1; + if (a==NULL || b==NULL) return _tcsicmp(a?a:TEXT(""),b?b:TEXT(""))==0; + return _tcsicmp(a,b)==0; +} + +#ifdef strlen +#undef strcmp +#undef strlen +#endif + +int __cdecl mir_strcmp (const char *a, const char *b) +{ + if (!(a&&b)) return a!=b; + return (strcmp(a,b)); +}; + +int mir_strlen (const char *a) +{ + if (a==NULL) return 0; + return (int)(strlen(a)); +}; + +#define strlen(a) mir_strlen(a) +#define strcmp(a,b) mir_strcmp(a,b) + +/* +__inline void *mir_calloc( size_t num, size_t size ) +{ + void *p=mir_alloc(num*size); + if (p==NULL) return NULL; + memset(p,0,num*size); + return p; +}; +*/ +wchar_t * mir_strdupW(const wchar_t * src) +{ + wchar_t * p; + if (src==NULL) return NULL; + p=(wchar_t *) mir_alloc((lstrlenW(src)+1)*sizeof(wchar_t)); + if (!p) return 0; + lstrcpyW(p, src); + return p; +} + +//copy len symbols from string - do not check is it null terminated or len is more then actual +char * strdupn(const char * src, int len) +{ + char * p; + if (src==NULL) return NULL; + p= (char*)malloc(len+1); + if (!p) return 0; + memcpy(p,src,len); + p[len]='\0'; + return p; +} + +DWORD exceptFunction(LPEXCEPTION_POINTERS EP) +{ + //printf("1 "); // printed first + char buf[4096]; + + + mir_snprintf(buf, SIZEOF(buf), "\r\nExceptCode: %x\r\nExceptFlags: %x\r\nExceptAddress: %p\r\n", + EP->ExceptionRecord->ExceptionCode, + EP->ExceptionRecord->ExceptionFlags, + EP->ExceptionRecord->ExceptionAddress + ); + TRACE(buf); + MessageBoxA(0,buf,"clist_mw Exception",0); + + + return EXCEPTION_EXECUTE_HANDLER; +} + +#ifdef _DEBUG +#undef DeleteObject +#endif + +void TRACE_ERROR() +{ + DWORD t = GetLastError(); + LPVOID lpMsgBuf; + if (!FormatMessage( + FORMAT_MESSAGE_ALLOCATE_BUFFER | + FORMAT_MESSAGE_FROM_SYSTEM | + FORMAT_MESSAGE_IGNORE_INSERTS, + NULL, + t, + MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language + (LPTSTR) &lpMsgBuf, + 0, + NULL )) + { + // Handle the error. + return ; + } +#ifdef _DEBUG + MessageBox( NULL, (LPCTSTR)lpMsgBuf, _T("Error"), MB_OK | MB_ICONINFORMATION ); + DebugBreak(); +#endif + LocalFree( lpMsgBuf ); + +} + +BOOL DebugDeleteObject(HGDIOBJ a) +{ + BOOL res=DeleteObject(a); + if (!res) TRACE_ERROR(); + return res; +} + +BOOL mod_DeleteDC(HDC hdc) +{ +// ske_ResetTextEffect(hdc); + return DeleteDC(hdc); +} +#ifdef _DEBUG +#define DeleteObject(a) DebugDeleteObject(a) +#endif + + +// load small icon (shared) it's not need to be destroyed + +HICON LoadSmallIconShared(HINSTANCE hInstance, LPCTSTR lpIconName) +{ + int cx=GetSystemMetrics(SM_CXSMICON); + return (HICON)LoadImage(hInstance,lpIconName, IMAGE_ICON,cx,cx, LR_DEFAULTCOLOR|LR_SHARED); +} + +// load small icon (not shared) it IS NEED to be destroyed +HICON LoadSmallIcon(HINSTANCE hInstance, LPCTSTR lpIconName) +{ + HICON hIcon=NULL; // icon handle + int index=-(int)lpIconName; + TCHAR filename[MAX_PATH]={0}; + GetModuleFileName(hInstance,filename,MAX_PATH); + ExtractIconEx(filename,index,NULL,&hIcon,1); + return hIcon; +} + +// load small icon from hInstance +HICON LoadIconEx(HINSTANCE hInstance, LPCTSTR lpIconName, BOOL bShared) +{ + HICON hResIcon=bShared?LoadSmallIcon(hInstance,lpIconName):LoadSmallIconShared(hInstance,lpIconName); + if (!hResIcon) //Icon not found in hInstance lets try to load it from core + { + HINSTANCE hCoreInstance=GetModuleHandle(NULL); + if (hCoreInstance!=hInstance) + hResIcon=bShared?LoadSmallIcon(hInstance,lpIconName):LoadSmallIconShared(hInstance,lpIconName); + } + return hResIcon; +} + +BOOL DestroyIcon_protect(HICON icon) +{ + if (icon) return DestroyIcon(icon); + return FALSE; +} + +void li_ListDestruct(SortedList *pList, ItemDestuctor pItemDestructor) +{ + int i=0; + if (!pList) return; + for (i=0; irealCount; i++) pItemDestructor(pList->items[i]); + li.List_Destroy(pList); + mir_free(pList); +} + +void li_RemoveDestruct(SortedList *pList, int index, ItemDestuctor pItemDestructor) +{ + if (index>=0 && indexrealCount) + { + pItemDestructor(pList->items[index]); + li.List_Remove(pList, index); + } +} + +void li_RemovePtrDestruct(SortedList *pList, void * ptr, ItemDestuctor pItemDestructor) +{ + if (li.List_RemovePtr(pList, ptr)) + pItemDestructor(ptr); +} + +void li_SortList(SortedList *pList, FSortFunc pSortFunct) +{ + FSortFunc pOldSort=pList->sortFunc; + int i; + if (!pSortFunct) pSortFunct=pOldSort; + pList->sortFunc=NULL; + for (i=0; irealCount-1; i++) + if (pOldSort(pList->items[i],pList->items[i+1])<0) + { + void * temp=pList->items[i]; + pList->items[i]=pList->items[i+1]; + pList->items[i+1]=temp; + i--; + if (i>0) i--; + } + pList->sortFunc=pOldSort; +} + +typedef struct _HookRec +{ + HANDLE hHook; +#ifdef _DEBUG + char * HookStr; + char * _debug_file; + int _debug_line; +#endif +} HookRec; + +static HookRec * hooksrec=NULL; +static DWORD hooksRecAlloced=0; + + + +HANDLE ModernHookEvent(char *EventID, MIRANDAHOOK HookProc) +{ + HookRec * hr=NULL; + DWORD i; + //1. Find free + for (i=0;ihHook=HookEvent(EventID,HookProc); + return hr->hHook; +} + +int ModernUnhookEvent(HANDLE hHook) +{ + DWORD i; + //1. Find free + + for (i=0;i