From 65e002b63efdb00571d0ba4ec1a73b14e1d7d3a0 Mon Sep 17 00:00:00 2001 From: Alexey Kulakov Date: Wed, 4 Jul 2012 20:10:29 +0000 Subject: Pascal headers moved to include\delphi directory (with small updates) removed deprecated m_mwclc.h file and link on it in AutoShutdown plugin git-svn-id: http://svn.miranda-ng.org/main/trunk@763 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- include/delphi/m_helpers.inc | 1091 ++++++++++++++++++------------------------ 1 file changed, 478 insertions(+), 613 deletions(-) (limited to 'include/delphi/m_helpers.inc') diff --git a/include/delphi/m_helpers.inc b/include/delphi/m_helpers.inc index ae5b28db8f..8eb4aa804c 100644 --- a/include/delphi/m_helpers.inc +++ b/include/delphi/m_helpers.inc @@ -1,613 +1,478 @@ -(* - -Miranda IM: the free IM client for Microsoft* Windows* - -Copyright 2000-2003 Miranda ICQ/IM project, -all portions of this codebase are copyrighted to the people -listed in contributors.txt. - -This program is free software; you can redistribute it and/or -modify it under the terms of the GNU General Public License -as published by the Free Software Foundation; either version 2 -of the License, or (at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - -*) - -{$ifdef M_API_UNIT} - - function PLUGIN_MAKE_VERSION(a,b,c,d: Cardinal): int; - function PLUGIN_CMP_VERSION(verA: LongInt; verB: LongInt): int; - -{$else} - - function PLUGIN_MAKE_VERSION(a,b,c,d: Cardinal): int; - {$ifdef FPC} - inline; - {$endif} - begin - Result := (a shl 24) or (b shl 16) or (c shl 8) or d; - end; - - function PLUGIN_CMP_VERSION(verA: LongInt; verB: LongInt): int; - {$ifdef FPC} - inline; - {$endif} - begin - Result := 0; - { could be used to compare for severity of age for positive values, if a 0 then - Result := ErrorValue - else - Result := dbv.bVal; - end; - - function DBGetContactSettingWord(hContact: THandle; - const szModule: PChar; const szSetting: PChar; errorValue: Integer): Integer; - {$ifdef FPC} - inline; - {$endif} - var - dbv: TDBVARIANT; - cgs: TDBCONTACTGETSETTING; - begin - cgs.szModule := szModule; - cgs.szSetting := szSetting; - cgs.pValue := @dbv; - If PluginLink^.CallService(MS_DB_CONTACT_GETSETTING, hContact, lParam(@cgs)) <> 0 then - Result := ErrorValue - else - Result := dbv.wVal; - end; - - function DBGetContactSettingDword(hContact: THandle; - const szModule: PChar; const szSetting: PChar; errorValue: Integer): Integer; - {$ifdef FPC} - inline; - {$endif} - var - dbv: TDBVARIANT; - cgs: TDBCONTACTGETSETTING; - begin - cgs.szModule := szModule; - cgs.szSetting := szSetting; - cgs.pValue := @dbv; - If PluginLink^.CallService(MS_DB_CONTACT_GETSETTING, hContact, lParam(@cgs)) <> 0 then - Result := ErrorValue - else - Result := dbv.dVal; - end; - - function DBGetContactSetting(hContact: THandle; - const szModule: PChar; const szSetting: PChar; dbv: PDBVARIANT): Integer; - {$ifdef FPC} - inline; - {$endif} - var - cgs: TDBCONTACTGETSETTING; - begin - cgs.szModule := szModule; - cgs.szSetting := szSetting; - cgs.pValue := dbv; - Result := PluginLink^.CallService(MS_DB_CONTACT_GETSETTING, hContact, lParam(@cgs)); - end; - - function DBFreeVariant(dbv: PDBVARIANT): Integer; - {$ifdef FPC} - inline; - {$endif} - begin - Result := PluginLink^.CallService(MS_DB_CONTACT_FREEVARIANT, 0, lParam(dbv)); - end; - - function DBDeleteContactSetting(hContact: THandle; const szModule: PChar; const szSetting: PChar): Integer; - {$ifdef FPC} - inline; - {$endif} - var - cgs: TDBCONTACTGETSETTING; - begin - cgs.szModule := szModule; - cgs.szSetting := szSetting; - Result := PluginLink^.CallService(MS_DB_CONTACT_DELETESETTING, hContact, lParam(@cgs)); - end; - - function DBWriteContactSettingByte(hContact: THandle; const szModule: PChar; const szSetting: PChar; val: Byte): Integer; - {$ifdef FPC} - inline; - {$endif} - var - cws: TDBCONTACTWRITESETTING; - begin - cws.szModule := szModule; - cws.szSetting := szSetting; - cws.value.type_ := DBVT_BYTE; - cws.value.bVal := Val; - Result := PluginLink^.CallService(MS_DB_CONTACT_WRITESETTING, hContact, lParam(@cws)); - end; - - function DBWriteContactSettingWord(hContact: THandle; const szModule: PChar; const szSetting: PChar; val: Word): Integer; - {$ifdef FPC} - inline; - {$endif} - var - cws: TDBCONTACTWRITESETTING; - begin - cws.szModule := szModule; - cws.szSetting := szSetting; - cws.value.type_ := DBVT_WORD; - cws.value.wVal := Val; - Result := PluginLink^.CallService(MS_DB_CONTACT_WRITESETTING, hContact, lParam(@cws)); - end; - - function DBWriteContactSettingDWord(hContact: THandle; const szModule: PChar; const szSetting: PChar; val: LongInt): Integer; - {$ifdef FPC} - inline; - {$endif} - var - cws: TDBCONTACTWRITESETTING; - begin - cws.szModule := szModule; - cws.szSetting := szSetting; - cws.value.type_ := DBVT_DWORD; - cws.value.dVal := Val; - Result := PluginLink^.CallService(MS_DB_CONTACT_WRITESETTING, hContact, lParam(@cws)); - end; - - function DBWriteContactSettingString(hContact: THandle; const szModule: PChar; const szSetting: PChar; const val: PChar): Integer; - {$ifdef FPC} - inline; - {$endif} - var - cws: TDBCONTACTWRITESETTING; - begin - cws.szModule := szModule; - cws.szSetting := szSetting; - cws.value.type_ := DBVT_ASCIIZ; - cws.value.pszVal := Val; - Result := PluginLink^.CallService(MS_DB_CONTACT_WRITESETTING, hContact, lParam(@cws)); - end; - - {$endif} - -{$endif} - -{$ifdef M_NETLIB} - - {$ifdef M_API_UNIT} - - function Netlib_CloseHandle(Handle: THandle): int; - - function Netlib_GetBase64DecodedBufferSize(const cchEncoded: int): int; - - function Netlib_GetBase64EncodedBufferSize(const cbDecoded: int): int; - - function Netlib_Send(hConn: THandle; const buf: PChar; len: int; flags: int): int; - - function Netlib_Recv(hConn: THandle; const buf: PChar; len: int; flags: int): int; - - procedure Netlib_Log(hNetLib: THandle; const sz: PChar); - - {$else} - - function Netlib_CloseHandle(Handle: THandle): int; - {$ifdef FPC} - inline; - {$endif} - begin - Result := PluginLink^.CallService(MS_NETLIB_CLOSEHANDLE, Handle, 0); - end; - - function Netlib_GetBase64DecodedBufferSize(const cchEncoded: int): int; - {$ifdef FPC} - inline; - {$endif} - begin - Result := (cchEncoded shr 2) * 3; - end; - - function Netlib_GetBase64EncodedBufferSize(const cbDecoded: int): int; - {$ifdef FPC} - inline; - {$endif} - begin - Result := (cbDecoded * 4+11) div 12*4+1; - end; - - function Netlib_Send(hConn: THandle; const buf: PChar; len: int; flags: int): int; - {$ifdef FPC} - inline; - {$endif} - var - nlb: TNETLIBBUFFER; - begin - nlb.buf := buf; - nlb.len := len; - nlb.flags := flags; - Result := PluginLink^.CallService(MS_NETLIB_SEND, wParam(hConn), lParam(@nlb)); - end; - - function Netlib_Recv(hConn: THandle; const buf: PChar; len: int; flags: int): int; - {$ifdef FPC} - inline; - {$endif} - var - nlb: TNETLIBBUFFER; - begin - nlb.buf := buf; - nlb.len := len; - nlb.flags := flags; - Result := PluginLink^.CallService(MS_NETLIB_RECV, wParam(hConn), lParam(@nlb)); - end; - - procedure Netlib_Log(hNetLib: THandle; const sz: PChar); - {$ifdef FPC} - inline; - {$endif} - begin - PluginLink^.CallService(MS_NETLIB_LOG, hNetLib, lParam(sz)); - end; - - {$endif} - -{$endif} - -{$ifdef M_UTILS} - - {$ifdef M_API_UNIT} - - function WindowList_Add(hList: THandle; hWnd: HWND; hContact: THandle): int; - - function WindowList_Remove(hList: THandle; hWnd: THandle): int; - - function WindowList_Find(hList: THandle; hContact: THandle): int; - - function WindowList_Broadcast(hList: THandle; message: int; wParam: WPARAM; lParam: LPARAM): int; - - function Utils_SaveWindowPosition(hWnd: THandle; hContact: THandle; const szModule, szNamePrefix: PChar): int; - - function Utils_RestoreWindowPosition(hWnd: THandle; hContact: THandle; Flags: int; const szModule, szNamePrefix: PChar): int; - - {$else} - - function WindowList_Add(hList: THandle; hWnd: hWnd; hContact: THandle): int; - var - wle: TWINDOWLISTENTRY; - begin - wle.hList := hList; - wle.hWnd := hWnd; - wle.hContact := hContact; - Result := PluginLink^.CallService(MS_UTILS_ADDTOWINDOWLIST, 0, lParam(@wle)); - end; - - function WindowList_Remove(hList: THandle; hWnd: THandle): int; - begin - Result := PluginLink^.CallService(MS_UTILS_REMOVEFROMWINDOWLIST, hList, hWnd); - end; - - function WindowList_Find(hList: THandle; hContact: THandle): int; - begin - Result := PluginLink^.CallService(MS_UTILS_FINDWINDOWINLIST, hList, hContact); - end; - - function WindowList_Broadcast(hList: THandle; message: int; wParam: WPARAM; lParam: LPARAM): int; - var - msg: TMSG; - begin - msg.message := message; - msg.wParam := wParam; - msg.lParam := lParam; - Result := PluginLink^.CallService(MS_UTILS_BROADCASTTOWINDOWLIST, hList, Integer(@Msg)); - end; - - function Utils_SaveWindowPosition(hWnd: THandle; hContact: THandle; const szModule, szNamePrefix: PChar): int; - var - swp: TSAVEWINDOWPOS; - begin - swp.hWnd := hWnd; - swp.hContact := hContact; - swp.szModule := szModule; - swp.szNamePrefix := szNamePrefix; - Result := PluginLink^.CallService(MS_UTILS_SAVEWINDOWPOSITION, 0, lParam(@swp)); - end; - - function Utils_RestoreWindowPosition(hWnd: THandle; hContact: THandle; Flags: int; const szModule, szNamePrefix: PChar): int; - var - swp: TSAVEWINDOWPOS; - begin - swp.hWnd := hWnd; - swp.hContact := hContact; - swp.szModule := szModule; - swp.szNamePrefix := szNamePrefix; - Result := PluginLink^.CallService(MS_UTILS_RESTOREWINDOWPOSITION, Flags, lParam(@swp)); - end; - - {$endif} - -{$endif} - -{$ifdef M_LANGPACK} - - {$ifdef M_API_UNIT} - - function Translate(sz: PChar): PChar; - - function TranslateString(sz: string): string; - - function TranslateDialogDefault(hwndDlg: THandle): int; - - {$else} - - function Translate(sz: PChar): PChar; - {$ifdef FPC} - inline; - {$endif} - begin - { the return value maybe NULL(0) -- it's upto the caller to know if the allocated - string has to be removed from the DLL heap, this has little to do with Miranda, - but if a dynamic string is passed and a return string is used -- the dynamic - string is lost -- be careful, lazy? use TranslateString (note it's slower) } - Result := PChar(PluginLink^.CallService(MS_LANGPACK_TRANSLATESTRING, 0, lParam(sz))); - end; - - function TranslateString(sz: string): string; - {$ifdef FPC} - inline; - {$endif} - begin - Result := string(PChar( PluginLink^.CallService(MS_LANGPACK_TRANSLATESTRING, 0, lParam(sz)))); - end; - - function TranslateDialogDefault(hwndDlg: THandle): int; - {$ifdef FPC} - inline; - {$endif} - var - lptd: TLANGPACKTRANSLATEDIALOG; - begin - lptd.cbSize := sizeof(lptd); - lptd.flags := 0; - lptd.hwndDlg := hwndDlg; - lptd.ignoreControls := nil; - Result := PluginLink^.CallService(MS_LANGPACK_TRANSLATEDIALOG, 0, lParam(@lptd)); - end; - - {$endif} - -{$endif} - -{$ifdef M_PROTOCOLS} - {$ifdef M_API_UNIT} - - function CallContactService(hContact: THandle; const szProtoService: PChar; wParam: WPARAM; lParam: LPARAM): int; - - function CallProtoService(const szModule, szService: PChar; wParam: WPARAM; lParam: LPARAM): int; - - {$else} - - function CallContactService(hContact: THandle; const szProtoService: PChar; wParam: WPARAM; lParam: LPARAM): int; - {$ifdef FPC} - inline; - {$endif} - var - css: TCCSDATA; - begin - css.hContact := hContact; - css.szProtoService := szProtoService; - css.wParam := wParam; - css.lParam := lParam; - Result := PluginLink^.CallService(MS_PROTO_CALLCONTACTSERVICE, 0, Integer(@css)); - end; - - function CallProtoService(const szModule, szService: PChar; wParam: WPARAM; lParam: LPARAM): int; - {$ifdef FPC} - inline; - {$endif} - var - szStr: array[0..MAXMODULELABELLENGTH] of Char; - begin - strcpy(szStr, szModule); - strcat(szStr, szService); - Result := PluginLink^.CallService(szStr, wParam, lParam); - end; - - {$endif} -{$endif} - -{$ifdef M_PROTOMOD} - {$ifdef M_API_UNIT} - - function ProtoBroadcastAck(const szModule: PChar; hContact: THandle; type_: int; result_: int; hProcess: THandle; lParam: LPARAM): int; - - function CreateProtoServiceFunction(const szModule, szService: PChar; serviceProc: TMIRANDASERVICE): int; - - {$else} - - function ProtoBroadcastAck(const szModule: PChar; hContact: THandle; type_: int; result_: int; hProcess: THandle; lParam: LPARAM): int; - {$ifdef FPC} - inline; - {$endif} - var - ack: TACKDATA; - begin - ack.cbSize := sizeof(TACKDATA); - ack.szModule := szModule; - ack.hContact := hContact; - ack.type_ := type_; - ack.result_ := result_; - ack.hProcess := hProcess; - ack.lParam := lParam; - Result := PluginLink^.CallService(MS_PROTO_BROADCASTACK, 0, Integer(@ack)); - end; - - function CreateProtoServiceFunction(const szModule, szService: PChar; serviceProc: TMIRANDASERVICE): int; - {$ifdef FPC} - inline; - {$endif} - var - szStr: array[0..MAXMODULELABELLENGTH] of Char; - begin - strcpy(szStr, szModule); - strcat(szStr, szService); - Result := PluginLink^.CreateServiceFunction(szStr, @serviceProc); - end; - - {$endif} - -{$endif} - -{$ifdef M_SKIN} - - {$ifdef M_API_UNIT} - - function LoadSkinnedIcon(id: int): THandle; - - function LoadSkinnedProtoIcon(const szProto: PChar; status: int): THandle; - - function SkinAddNewSound(const name, description, defaultFile: PChar): int; - - function SkinPlaySound (const name: PChar): int; - - {$else} - - function LoadSkinnedIcon(id: int): THandle; - {$ifdef FPC} - inline; - {$endif} - begin - Result := PluginLink^.CallService(MS_SKIN_LOADICON, id, 0); - end; - - function LoadSkinnedProtoIcon(const szProto: PChar; status: int): THandle; - {$ifdef FPC} - inline; - {$endif} - begin - Result := PluginLink^.CallService(MS_SKIN_LOADPROTOICON, wParam(szProto), status); - end; - - function SkinAddNewSound(const name, description, defaultFile: PChar): int; - {$ifdef FPC} - inline; - {$endif} - var - ssd: TSKINSOUNDDESC; - begin - ssd.cbSize := sizeof(ssd); - ssd.pszName := name; - ssd.pszDescription := description; - ssd.pszDefaultFile := defaultFile; - Result := PluginLink^.CallService(MS_SKIN_ADDNEWSOUND, 0, lParam(@ssd)); - end; - - function SkinPlaySound (const name: PChar): int; - {$ifdef FPC} - inline; - {$endif} - begin - Result := PluginLink^.CallService(MS_SKIN_PLAYSOUND, 0, lParam(name)); - end; - - {$endif} - -{$endif} +{$IFDEF M_API_UNIT} + +function ProtoServiceExists(const proto,service: PAnsiChar): int; + +function CreateVersionString(version:dword;buf:PAnsiChar):PAnsiChar; +function CreateVersionStringPlugin(pluginInfo:PPluginInfoEx;buf:PAnsiChar):PAnsiChar; +function PLUGIN_MAKE_VERSION(a,b,c,d: Cardinal): int; +function PLUGIN_CMP_VERSION(verA: LongInt; verB: LongInt): int; + +function mir_forkthread(aFunc:pThreadFunc; arg:pointer):THANDLE; {inline} +function mir_forkthreadex(aFunc:pThreadFuncEx; arg:pointer; stackSize:int; pThreadID:puint_ptr):THANDLE; {inline} +function mir_forkthreadowner(aFunc:pThreadFuncOwner; owner:pointer; arg:pointer; pThreadID:puint_ptr):THANDLE; {inline} + +function Netlib_CloseHandle(Handle: THandle): int; +function Netlib_GetBase64DecodedBufferSize(const cchEncoded: int): int; +function Netlib_GetBase64EncodedBufferSize(const cbDecoded: int): int; +function Netlib_Send(hConn: THandle; const buf: PAnsiChar; len: int; flags: int): int_ptr; +function Netlib_Recv(hConn: THandle; const buf: PAnsiChar; len: int; flags: int): int_ptr; +procedure Netlib_Log(hNetLib: THandle; const sz: PAnsiChar); + +function WindowList_Add(hList: THandle; hWnd: HWND; hContact: THandle): int_ptr; +function WindowList_Remove(hList: THandle; hWnd: THandle): int_ptr; +function WindowList_Find(hList: THandle; hContact: THandle): int_ptr; +function WindowList_Broadcast(hList: THandle; message: int; wParam: WPARAM; lParam: LPARAM): int_ptr; +function Utils_SaveWindowPosition(hWnd: THandle; hContact: THandle; const szModule, szNamePrefix: PAnsiChar): int_ptr; +function Utils_RestoreWindowPosition(hWnd: THandle; hContact: THandle; Flags: int; const szModule, szNamePrefix: PAnsiChar): int_ptr; + +function mir_hashstr(const key:pAnsiChar):uint; {inline;} +function mir_hashstrW(const key:pWideChar):uint; {inline;} +function lrtrim(str:pAnsiChar):pAnsiChar; {inline} +function lrtrimp(str:pAnsiChar):pAnsiChar; {inline} +function mir_utf8decodeA(const src:pAnsiChar):pAnsiChar; {inline} + +function Translate(sz: PAnsiChar): PAnsiChar; +function Translatew(sz: PWideChar): PWideChar; +function TranslateString(const sz: AnsiString): AnsiString; +function TranslateWideString(const sz:WideString):WideString; +function TranslateUnicodeString(sz: String): String;{$ifdef FPC}inline;{$endif} +procedure TranslateDialogDefault(hwndDlg: THandle); +procedure TranslateMenu(hMenu: HMENU); +function Langpack_Register:int_ptr; + +function ProtoBroadcastAck(const szModule: PAnsiChar; hContact: THandle; type_: int; result_: int; hProcess: THandle; lParam: LPARAM): int_ptr; +function CreateProtoServiceFunction(const szModule, szService: PAnsiChar; serviceProc: TMIRANDASERVICE): int_ptr; + +function LoadSkinnedIcon(id: int): THandle; +function LoadSkinnedProtoIcon(const szProto: PAnsiChar; status: int): THandle; +function SkinAddNewSound(const name, description, defaultFile: PAnsiChar): int_ptr; +function SkinPlaySound (const name: PAnsiChar): int_ptr; + +function Menu_AddContextFrameMenuItem(mi:PCLISTMENUITEM):HGENMENU; +function Menu_AddMainMenuItem(mi:PCLISTMENUITEM):HGENMENU; +function Menu_AddContactMenuItem(mi:PCLISTMENUITEM):HGENMENU; +function Menu_AddStatusMenuItem(mi:PCLISTMENUITEM):HGENMENU; +function Menu_AddProtoMenuItem(mi:PCLISTMENUITEM):HGENMENU; +function Menu_AddSubGroupMenuItem(mi:PCLISTMENUITEM):HGENMENU; +function Menu_AddGroupMenuItem(mi:PCLISTMENUITEM):HGENMENU; +function Menu_AddTrayMenuItem(mi:PCLISTMENUITEM):HGENMENU; + +function UserInfo_AddPage(wParam:WPARAM; odp:POPTIONSDIALOGPAGE):int_ptr; +function Options_AddPage(wParam:WPARAM; odp:POPTIONSDIALOGPAGE):int_ptr; +function Hotkey_Register(hk:PHOTKEYDESC):int_ptr; +function Skin_AddIcon(si:PSKINICONDESC):THANDLE; + +procedure FontRegister(pFontID:pFontID); +procedure FontRegisterW(pFontID:pFontIDW); + +procedure ColourRegister(pColorID:pColourID); +procedure ColourRegisterW(pColorID:pColourIDW); + +procedure EffectRegister(pEffectID:pEffectID); +procedure EffectRegisterW(pEffectID:pEffectIDW); + +{$ELSE} + +function ProtoServiceExists(const proto,service: PAnsiChar): int; +var + buf:array [0..127] of AnsiChar; +begin + if (proto=nil) or (service=nil) then + begin + result:=0; + exit; + end; + lStrCpyA(@buf,proto); + lStrCatA(@buf,service); + result:=ServiceExists(@buf); +end; + + +function CreateVersionString(version:dword;buf:PAnsiChar):PAnsiChar; +var + vers:array [0..3] of integer; +begin + vers[0]:=(version shr 24) and $FF; + vers[1]:=(version shr 16) and $FF; + vers[2]:=(version shr 8) and $FF; + vers[3]:=version and $FF; + wvsprintfa(buf,'%d.%d.%d.%d',@vers); + result:=buf; +end; + +function CreateVersionStringPlugin(pluginInfo:PPluginInfoEx;buf:PAnsiChar):PAnsiChar; +begin + result:=CreateVersionString(pluginInfo^.version,buf); +end; + +function PLUGIN_MAKE_VERSION(a,b,c,d: Cardinal): int; +begin + Result := (a shl 24) or (b shl 16) or (c shl 8) or d; +end; + +function PLUGIN_CMP_VERSION(verA: LongInt; verB: LongInt): int; +begin + Result := 0; + { could be used to compare for severity of age for positive values, if a