/* Miranda Scripting Plugin for Miranda-IM Copyright 2004-2006 Piotr Pawluczuk (www.pawluczuk.info) 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. */ /* 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. */ #ifndef M_SCRIPT_H__ #define M_SCRIPT_H__ 1 #define MBOT_GETCPARAM(cp) ((void*)((unsigned char*)cp + 24)) typedef enum {MBOT_NUMBER=0,MBOT_STRING=1,MBOT_VOID=2}MBOT_TYPE; #ifndef _LIBPHP_H__ enum SVAR_TYPE{SV_NULL,SV_LONG=1,SV_WORD=2,SV_DOUBLE=3, SV_STRING=4,SV_LPOINTER=5,SV_ARRAY=11}; #endif typedef struct{ int cbSize; //Set to sizeof(); char* pszOutput; char* pszResult; }MBOT_RESULT; struct MBOT_VPARAM{ void* data; long length; /*length of data, used for strings, and binary strings*/ long type; }; /* MBOT function prototypes; */ typedef int (*MBOT_RegisterFunction)(const char* name,void* fptr,long lp, MBOT_TYPE rval,MBOT_TYPE p1,MBOT_TYPE p2,MBOT_TYPE p3,MBOT_TYPE p4); typedef int (*MBOT_UnregisterFunction)(const char* name); typedef void* (*MBOT_Malloc)(long amount); typedef char* (*MBOT_Strdup)(const char* str); typedef void (*MBOT_Free)(void* ptr); typedef void (*MBOT_FreeResult)(MBOT_RESULT* ptr); typedef int (*MBOT_GetVar)(const char* name,void** value,SVAR_TYPE* cType);//returns TRUE if var exists; typedef int (*MBOT_DelVar)(const char* name); typedef int (*MBOT_SetVar)(const char* name,void* value,SVAR_TYPE cType); typedef int (*MBOT_NewVar)(const char* name,void* value,SVAR_TYPE cType,char locked); /******************************************************************* * PARAMETERS: pszScript - source code of the script; ***DO NOT USE PHP TAGS*** pResult - if set, you'll get the struct filled with the result; NOTE! Remember to release the struct with "fp_freeresult"!; pCParam - custom parameter, for your own use; use MBOT_GETCPARAM(cparam) to get the pointer; nCPType - its type {MBOT_NUMBER,MBOT_STRING,MBOT_VOID} if str or num, php will be able to get it too *EXAMPLE: fpExecuteFile("mbot/scripts/my.php","fct1",&mbr,"parameter", MBOT_STRING,"suf","hello",100,25.6); *******************************************************************/ typedef int (*MBOT_ExecuteScript)(const char* pszScript,MBOT_RESULT* pResult, void* pCParam,MBOT_TYPE nCPType); /******************************************************************* * PARAMETERS: pszPathname - relative or absolute path of the php file; pszFcnName - function name can be NULL (whole file will be executed then); pResult - if set, you'll get the struct filled with the result; NOTE! Remember to release the struct with "fp_freeresult"!; pCParam - custom parameter, for your own use; use MBOT_GETCPARAM(cparam) to get the pointer; nCPType - its type {MBOT_NUMBER,MBOT_STRING,MBOT_VOID} if str or num, php will be able to get it too pszPTypes - a string containing pformats s-string,u-long,l-long,d-long,q-double,f-float,x-hex long, v - MBOT_VPARAM* ... - values; *EXAMPLE: fpExecuteScript("mbot/scripts/my.php","fct1",&mbr,"parameter", MBOT_STRING,"suf","hello",100,25.6); *******************************************************************/ typedef int (*MBOT_ExecuteFile)(const char* pszPathname,const char* pszFcnName,MBOT_RESULT* pResult, void* pCParam,MBOT_TYPE nCPType,const char* pszPTypes,...); typedef struct{ int cbSize; //sizeof(MBOT_LPHP); const char* pszMBotVersion; //execution MBOT_ExecuteScript fpExecuteScript; MBOT_ExecuteFile fpExecuteFile; //functions MBOT_RegisterFunction fpRegister; MBOT_UnregisterFunction fpUnregister; //variables MBOT_NewVar fpNewVar; MBOT_SetVar fpSetVar; MBOT_GetVar fpGetVar; MBOT_DelVar fpDelVar; //memory MBOT_Strdup fp_strdup; MBOT_Malloc fp_malloc; MBOT_Free fp_free; MBOT_FreeResult fp_freeresult; }MBOT_FUNCTIONS; /*MS_MBOT_GET_FUNCTIONS lParam = wParam = 0; returns a pointer to const MBOT_FUNCTIONS structure; */ #define MS_MBOT_GET_FCN_TABLE "MBot/GetFcnTable" #endif //M_SCRIPT_H__