From f920ef497f3299ae24fe783ce03bdd93b419f764 Mon Sep 17 00:00:00 2001 From: Kirill Volinsky Date: Fri, 18 May 2012 22:02:50 +0000 Subject: plugins folders renaming git-svn-id: http://svn.miranda-ng.org/main/trunk@60 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- plugins/Variables/parse_variables.cpp | 173 ++++++++++++++++++++++++++++++++++ 1 file changed, 173 insertions(+) create mode 100644 plugins/Variables/parse_variables.cpp (limited to 'plugins/Variables/parse_variables.cpp') diff --git a/plugins/Variables/parse_variables.cpp b/plugins/Variables/parse_variables.cpp new file mode 100644 index 0000000000..19f5a39c20 --- /dev/null +++ b/plugins/Variables/parse_variables.cpp @@ -0,0 +1,173 @@ +/* + Variables Plugin for Miranda-IM (www.miranda-im.org) + Copyright 2003-2006 P. Boon + + 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 +*/ +#include "variables.h" +#include "parse_variables.h" + +// this is for get and put(s) +static CRITICAL_SECTION csVarRegister; +static VARIABLEREGISTER *vr = NULL; +static int vrCount = 0; + +static int addToVariablesRegister(TCHAR *szName, TCHAR *szText) { + + int i; + + if ( (szName == NULL) || (szText == NULL) || (_tcslen(szName) <= 0) ) { + return -1; + } + EnterCriticalSection(&csVarRegister); + for (i=0;i 1) { + memcpy(&vr[i], &vr[vrCount-1], sizeof(VARIABLEREGISTER)); + vr = ( VARIABLEREGISTER* )realloc(vr, (vrCount-1)*sizeof(VARIABLEREGISTER)); + if (vr == NULL) { + LeaveCriticalSection(&csVarRegister); + return -1; + } + vrCount -= 1; + } + else { + free(vr); + vr = NULL; + vrCount = 0; + } + count += 1; + } + } + LeaveCriticalSection(&csVarRegister); + + return count; +} + +static TCHAR *parsePut(ARGUMENTSINFO *ai) { + + FORMATINFO fi; + + if (ai->argc != 3) { + return NULL; + } +// ai->flags |= AIF_DONTPARSE; + if (addToVariablesRegister(ai->targv[1], ai->targv[2])) { + return NULL; + } + + memcpy(&fi, ai->fi, sizeof(fi)); + fi.tszFormat = ai->targv[2]; + fi.flags |= FIF_TCHAR; + + return formatString(&fi); +} + +static TCHAR *parsePuts(ARGUMENTSINFO *ai) { + + if (ai->argc != 3) { + return NULL; + } +// ai->flags |= AIF_DONTPARSE; + if (addToVariablesRegister(ai->targv[1], ai->targv[2])) { + return NULL; + } + + return _tcsdup(_T("")); +} + +static TCHAR *parseGet(ARGUMENTSINFO *ai) { + + TCHAR *szText; + + if (ai->argc != 2) { + return NULL; + } +// ai->flags |= AIF_DONTPARSE; + szText = searchVariableRegister(ai->targv[1]); + if (szText == NULL) { + return NULL; + } + + return szText; +} + +int registerVariablesTokens() +{ + registerIntToken(_T(GET), parseGet, TRF_FUNCTION, "Variables\t(x)\tvariable set by put(s) with name x"); + registerIntToken(_T(PUT), parsePut, TRF_FUNCTION, "Variables\t(x,y)\tx, and stores y as variable named x");//TRF_UNPARSEDARGS); + registerIntToken(_T(PUTS), parsePuts, TRF_FUNCTION, "Variables\t(x,y)\tonly stores y as variables x");//TRF_UNPARSEDARGS); + InitializeCriticalSection(&csVarRegister); + + return 0; +} + +void unregisterVariablesTokens() +{ + DeleteCriticalSection(&csVarRegister); +} -- cgit v1.2.3