From: <mg...@us...> - 2009-03-26 18:25:04
|
Revision: 3323 http://planeshift.svn.sourceforge.net/planeshift/?rev=3323&view=rev Author: mgist Date: 2009-03-26 18:24:58 +0000 (Thu, 26 Mar 2009) Log Message: ----------- - Better warning fix. Modified Paths: -------------- trunk/src/common/util/mathscript.cpp Modified: trunk/src/common/util/mathscript.cpp =================================================================== --- trunk/src/common/util/mathscript.cpp 2009-03-26 15:16:13 UTC (rev 3322) +++ trunk/src/common/util/mathscript.cpp 2009-03-26 18:24:58 UTC (rev 3323) @@ -133,7 +133,7 @@ line.SubString(assignee, 0, assignAt); assignee.Trim(); - bool validAssignee = isupper(assignee.GetAt(0)) != NULL; + bool validAssignee = isupper(assignee.GetAt(0)) != 0; for (size_t i = 1; validAssignee && i < assignee.Length(); i++) { if (!isalnum(assignee[i]) && assignee[i] != '_') This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wel...@us...> - 2009-05-01 15:33:34
|
Revision: 3598 http://planeshift.svn.sourceforge.net/planeshift/?rev=3598&view=rev Author: weltall2 Date: 2009-05-01 15:33:27 +0000 (Fri, 01 May 2009) Log Message: ----------- added comment support. It starts with // and goes till end of line Modified Paths: -------------- trunk/src/common/util/mathscript.cpp Modified: trunk/src/common/util/mathscript.cpp =================================================================== --- trunk/src/common/util/mathscript.cpp 2009-05-01 09:23:10 UTC (rev 3597) +++ trunk/src/common/util/mathscript.cpp 2009-05-01 15:33:27 UTC (rev 3598) @@ -224,6 +224,30 @@ while (start < script.Length()) { + if(script.Slice(start).RTrim().GetAt(0) == '\r') //skips new lines + { + semicolonAt = script.FindFirst('\r', start); + start = semicolonAt+1; + continue; + } + + if(script.Slice(start).RTrim().GetAt(0) == '\n') + { + semicolonAt = script.FindFirst('\n', start); + start = semicolonAt+1; + continue; + } + + if(script.Slice(start).RTrim().StartsWith("//")) //manages full line comments like this + { + semicolonAt = script.FindFirst('\n', start); + if(semicolonAt == SIZET_NOT_FOUND) + semicolonAt = script.Length(); + + start = semicolonAt+1; + continue; + } + semicolonAt = script.FindFirst(';', start); if (semicolonAt == SIZET_NOT_FOUND) semicolonAt = script.Length(); @@ -442,8 +466,8 @@ if (start != SIZET_NOT_FOUND) tokens.Push(exp+start); - //for (size_t i = 0; i < tokens.GetSize(); i++) - //printf("Token[%d] = %s\n", int(i), tokens[i].GetDataSafe()); + for (size_t i = 0; i < tokens.GetSize(); i++) + printf("Token[%d] = %s\n", int(i), tokens[i].GetDataSafe()); // PARSER: (kind of) for (size_t i = 0; i < tokens.GetSize(); i++) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wel...@us...> - 2009-05-01 19:23:54
|
Revision: 3602 http://planeshift.svn.sourceforge.net/planeshift/?rev=3602&view=rev Author: weltall2 Date: 2009-05-01 19:23:53 +0000 (Fri, 01 May 2009) Log Message: ----------- removed debug output Modified Paths: -------------- trunk/src/common/util/mathscript.cpp Modified: trunk/src/common/util/mathscript.cpp =================================================================== --- trunk/src/common/util/mathscript.cpp 2009-05-01 18:54:09 UTC (rev 3601) +++ trunk/src/common/util/mathscript.cpp 2009-05-01 19:23:53 UTC (rev 3602) @@ -466,8 +466,8 @@ if (start != SIZET_NOT_FOUND) tokens.Push(exp+start); - for (size_t i = 0; i < tokens.GetSize(); i++) - printf("Token[%d] = %s\n", int(i), tokens[i].GetDataSafe()); + //for (size_t i = 0; i < tokens.GetSize(); i++) + // printf("Token[%d] = %s\n", int(i), tokens[i].GetDataSafe()); // PARSER: (kind of) for (size_t i = 0; i < tokens.GetSize(); i++) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wel...@us...> - 2009-05-29 17:57:05
|
Revision: 3796 http://planeshift.svn.sourceforge.net/planeshift/?rev=3796&view=rev Author: weltall2 Date: 2009-05-29 17:56:48 +0000 (Fri, 29 May 2009) Log Message: ----------- optimizations and fixed a little issue Modified Paths: -------------- trunk/src/common/util/mathscript.cpp Modified: trunk/src/common/util/mathscript.cpp =================================================================== --- trunk/src/common/util/mathscript.cpp 2009-05-28 07:59:25 UTC (rev 3795) +++ trunk/src/common/util/mathscript.cpp 2009-05-29 17:56:48 UTC (rev 3796) @@ -224,23 +224,16 @@ while (start < script.Length()) { - if(script.Slice(start).RTrim().GetAt(0) == '\r') //skips new lines + if(script.Slice(start).Trim().GetAt(0) == '\r' || script.Slice(start).RTrim().GetAt(0) == '\n') //skips new lines { - semicolonAt = script.FindFirst('\r', start); + semicolonAt = script.FindFirst("\r\n", start); start = semicolonAt+1; continue; } - if(script.Slice(start).RTrim().GetAt(0) == '\n') + if(script.Slice(start).Trim().StartsWith("//")) //manages full line comments like this { - semicolonAt = script.FindFirst('\n', start); - start = semicolonAt+1; - continue; - } - - if(script.Slice(start).RTrim().StartsWith("//")) //manages full line comments like this - { - semicolonAt = script.FindFirst('\n', start); + semicolonAt = script.FindFirst("\r\n", start); if(semicolonAt == SIZET_NOT_FOUND) semicolonAt = script.Length(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wel...@us...> - 2009-06-03 05:02:14
|
Revision: 3803 http://planeshift.svn.sourceforge.net/planeshift/?rev=3803&view=rev Author: weltall2 Date: 2009-06-03 05:02:11 +0000 (Wed, 03 Jun 2009) Log Message: ----------- try to fix a possible assert in math scripts Modified Paths: -------------- trunk/src/common/util/mathscript.cpp Modified: trunk/src/common/util/mathscript.cpp =================================================================== --- trunk/src/common/util/mathscript.cpp 2009-06-02 18:18:45 UTC (rev 3802) +++ trunk/src/common/util/mathscript.cpp 2009-06-03 05:02:11 UTC (rev 3803) @@ -224,7 +224,7 @@ while (start < script.Length()) { - if(script.Slice(start).Trim().GetAt(0) == '\r' || script.Slice(start).RTrim().GetAt(0) == '\n') //skips new lines + if(script.Slice(start).Trim().StartsWith("\r") || script.Slice(start).Trim().StartsWith("\n")) //skips new lines { semicolonAt = script.FindFirst("\r\n", start); start = semicolonAt+1; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wel...@us...> - 2009-11-30 07:52:38
|
Revision: 4842 http://planeshift.svn.sourceforge.net/planeshift/?rev=4842&view=rev Author: weltall2 Date: 2009-11-30 07:52:27 +0000 (Mon, 30 Nov 2009) Log Message: ----------- warning: format not a string literal and no format arguments Modified Paths: -------------- trunk/src/common/util/mathscript.cpp Modified: trunk/src/common/util/mathscript.cpp =================================================================== --- trunk/src/common/util/mathscript.cpp 2009-11-30 07:46:34 UTC (rev 4841) +++ trunk/src/common/util/mathscript.cpp 2009-11-30 07:52:27 UTC (rev 4842) @@ -343,7 +343,7 @@ double MathScriptEngine::Warn(const double *args) { - Warning1(LOG_SCRIPT, GetString(args[0])); + Warning2(LOG_SCRIPT, "%s", GetString(args[0]).GetData()); return args[1]; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ken...@us...> - 2009-12-27 03:51:11
|
Revision: 5056 http://planeshift.svn.sourceforge.net/planeshift/?rev=5056&view=rev Author: kennygraunke Date: 2009-12-27 03:51:05 +0000 (Sun, 27 Dec 2009) Log Message: ----------- MathVar::ToString now doesn't show .00 for whole numbers. Modified Paths: -------------- trunk/src/common/util/mathscript.cpp Modified: trunk/src/common/util/mathscript.cpp =================================================================== --- trunk/src/common/util/mathscript.cpp 2009-12-27 03:50:54 UTC (rev 5055) +++ trunk/src/common/util/mathscript.cpp 2009-12-27 03:51:05 UTC (rev 5056) @@ -48,6 +48,9 @@ return obj->ToString(); if (type == VARTYPE_STR) return MathScriptEngine::GetString(value); + + if (trunc(value) == value) // avoid .00 for whole numbers + return csString().Format("%.0f", value); return csString().Format("%.2f", value); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wel...@us...> - 2009-12-28 21:11:42
|
Revision: 5085 http://planeshift.svn.sourceforge.net/planeshift/?rev=5085&view=rev Author: weltall2 Date: 2009-12-28 21:11:34 +0000 (Mon, 28 Dec 2009) Log Message: ----------- added code for laughable and limited compilers out there (MSVC++) Modified Paths: -------------- trunk/src/common/util/mathscript.cpp Modified: trunk/src/common/util/mathscript.cpp =================================================================== --- trunk/src/common/util/mathscript.cpp 2009-12-28 17:34:17 UTC (rev 5084) +++ trunk/src/common/util/mathscript.cpp 2009-12-28 21:11:34 UTC (rev 5085) @@ -42,6 +42,14 @@ #include "util/mathscript.h" #include "util/consoleout.h" +//support for limited compilers +#ifdef _MSC_VER +double round(double value) +{ + return floor(value + 0.5); +} +#endif + csString MathVar::ToString() const { if (type == VARTYPE_OBJ) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ken...@us...> - 2009-12-28 23:37:57
|
Revision: 5088 http://planeshift.svn.sourceforge.net/planeshift/?rev=5088&view=rev Author: kennygraunke Date: 2009-12-28 23:37:50 +0000 (Mon, 28 Dec 2009) Log Message: ----------- Fix reimplementation of round() to be correct for negative values. Although we'd all like to point and laugh at Microsoft for not supporting cutting edge functionality like the ability to round numbers - a feature added to the C language a mere 10 years ago - they may not deserve it. It turns out that round() isn't part of the official C++ standard. Instead, be disgusted at the fact that you have to pay $30 for a downloadable copy of the C++ language specification. Poppycock. Modified Paths: -------------- trunk/src/common/util/mathscript.cpp Modified: trunk/src/common/util/mathscript.cpp =================================================================== --- trunk/src/common/util/mathscript.cpp 2009-12-28 21:47:50 UTC (rev 5087) +++ trunk/src/common/util/mathscript.cpp 2009-12-28 23:37:50 UTC (rev 5088) @@ -46,7 +46,7 @@ #ifdef _MSC_VER double round(double value) { - return floor(value + 0.5); + return (value >= 0) ? floor(value + 0.5) : ceil(value - 0.5); } double trunc(double value) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ken...@us...> - 2009-12-28 23:38:23
|
Revision: 5090 http://planeshift.svn.sourceforge.net/planeshift/?rev=5090&view=rev Author: kennygraunke Date: 2009-12-28 23:38:16 +0000 (Mon, 28 Dec 2009) Log Message: ----------- Remove use of trunc() in favor of casts. While weltall's reimplementation for MSVC was fine, apparently the C++ standard says that casting a floating point value to an integral value performs truncation. So double(int(x)) should be the same as trunc(), without the need for the non-standard function. Modified Paths: -------------- trunk/src/common/util/mathscript.cpp Modified: trunk/src/common/util/mathscript.cpp =================================================================== --- trunk/src/common/util/mathscript.cpp 2009-12-28 23:38:05 UTC (rev 5089) +++ trunk/src/common/util/mathscript.cpp 2009-12-28 23:38:16 UTC (rev 5090) @@ -48,14 +48,6 @@ { return (value >= 0) ? floor(value + 0.5) : ceil(value - 0.5); } - -double trunc(double value) -{ - if(value < 0) - return ceil(value); - else - return floor(value); -} #endif csString MathVar::ToString() const @@ -65,7 +57,7 @@ if (type == VARTYPE_STR) return MathScriptEngine::GetString(value); - if (trunc(value) == value) // avoid .00 for whole numbers + if (double(int(value)) == value) // avoid .00 for whole numbers return csString().Format("%.0f", value); return csString().Format("%.2f", value); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ken...@us...> - 2009-12-28 23:55:17
|
Revision: 5091 http://planeshift.svn.sourceforge.net/planeshift/?rev=5091&view=rev Author: kennygraunke Date: 2009-12-28 23:55:11 +0000 (Mon, 28 Dec 2009) Log Message: ----------- Apparently this is better. Modified Paths: -------------- trunk/src/common/util/mathscript.cpp Modified: trunk/src/common/util/mathscript.cpp =================================================================== --- trunk/src/common/util/mathscript.cpp 2009-12-28 23:38:16 UTC (rev 5090) +++ trunk/src/common/util/mathscript.cpp 2009-12-28 23:55:11 UTC (rev 5091) @@ -57,7 +57,7 @@ if (type == VARTYPE_STR) return MathScriptEngine::GetString(value); - if (double(int(value)) == value) // avoid .00 for whole numbers + if (fabs(int(value) - value) < EPSILON) // avoid .00 for whole numbers return csString().Format("%.0f", value); return csString().Format("%.2f", value); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rly...@us...> - 2010-07-07 17:04:49
|
Revision: 6012 http://planeshift.svn.sourceforge.net/planeshift/?rev=6012&view=rev Author: rlydontknow Date: 2010-07-07 17:04:42 +0000 (Wed, 07 Jul 2010) Log Message: ----------- added 2 standard functions for scriptable variables: - GetProperty(string): same as var:property, but works on dynamic variables, too - IsValid(): checks whether the var is NULL always perform a NULL check perfore calling a function on a scriptable var if it failed, the functions returns 0 instead Modified Paths: -------------- trunk/src/common/util/mathscript.cpp Modified: trunk/src/common/util/mathscript.cpp =================================================================== --- trunk/src/common/util/mathscript.cpp 2010-07-06 22:04:02 UTC (rev 6011) +++ trunk/src/common/util/mathscript.cpp 2010-07-07 17:04:42 UTC (rev 6012) @@ -362,7 +362,20 @@ { size_t funcIndex = (size_t)parms[0]; iScriptableVar * v = (iScriptableVar *)(intptr_t)parms[1]; - return v->CalcFunction(customCompoundFunctions.Request(funcIndex), &parms[2]); + csString funcName(customCompoundFunctions.Request(funcIndex)); + + if (funcName == "IsValid") + { + return (v != NULL); + } + else if (funcName == "GetProperty") + { + return (v ? v->GetProperty(GetString(parms[2])) : 0); + } + else + { + return (v ? v->CalcFunction(funcName.GetData(), &parms[2]) : 0); + } } csString MathScriptEngine::GetString(double id) @@ -578,7 +591,7 @@ for (size_t i = 0; i < tokens.GetSize(); i++) expression.Append(tokens[i]); - //printf("Final expression: %s\n", expression.GetData()); + //printf("Final expression: %s %s\n", expression.GetData(), fpVars.GetDataSafe()); size_t ret = fp.Parse(expression.GetData(), fpVars.GetDataSafe()); if (ret != (size_t) -1) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rly...@us...> - 2010-07-26 15:25:47
|
Revision: 6065 http://planeshift.svn.sourceforge.net/planeshift/?rev=6065&view=rev Author: rlydontknow Date: 2010-07-26 15:25:41 +0000 (Mon, 26 Jul 2010) Log Message: ----------- skip evaluation time check whether a variable has to be an object for function calls the user shall ensure a variable he calls a function on is an object this is required for dynamic objects (e.g. as returned by item:owner) the check remains intact for properties, if you need a property of a dynamic object, use object:GetProperty('propertyname') Modified Paths: -------------- trunk/src/common/util/mathscript.cpp Modified: trunk/src/common/util/mathscript.cpp =================================================================== --- trunk/src/common/util/mathscript.cpp 2010-07-24 18:27:40 UTC (rev 6064) +++ trunk/src/common/util/mathscript.cpp 2010-07-26 15:25:41 UTC (rev 6065) @@ -509,12 +509,13 @@ return false; } - // The previous variable must be an object. - requiredObjs.Add(tokens[i-1]); - // Is it a method call? if (i+2 < tokens.GetSize() && tokens[i+2] == "(") { + // method calls don't require the variable to be an object at the beginning, they may become one + // runtime via properties/other function calls, therefore this check is skipped + // the user shall ensure that a variable he calls a function on is an object + // Methods start as Target:WeaponAt(Slot) and turn into customCompoundFuncN(X,Target,Slot) // where N-2 is the number of parameters and X is the index in a global lookup table. int paramCount = 2; // customCompoundFunc takes two args as boilerplate. @@ -544,6 +545,9 @@ } else { + // The previous variable must be an object. + requiredObjs.Add(tokens[i-1]); + // Found a property reference, i.e. Actor:HP tokens[i] = "_"; // fparser can't deal with ':', so change it to '_'. propertyRefs.Add(csString().Format("%s:%s", tokens[i-1].GetData(), tokens[i+1].GetData())); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rly...@us...> - 2010-07-26 15:40:52
|
Revision: 6066 http://planeshift.svn.sourceforge.net/planeshift/?rev=6066&view=rev Author: rlydontknow Date: 2010-07-26 15:40:46 +0000 (Mon, 26 Jul 2010) Log Message: ----------- at least check whether it *could* be an object (right now very naive - only checks whether the variable exists at all, if not it *has* to be known evaluation time) Modified Paths: -------------- trunk/src/common/util/mathscript.cpp Modified: trunk/src/common/util/mathscript.cpp =================================================================== --- trunk/src/common/util/mathscript.cpp 2010-07-26 15:25:41 UTC (rev 6065) +++ trunk/src/common/util/mathscript.cpp 2010-07-26 15:40:46 UTC (rev 6066) @@ -514,7 +514,14 @@ { // method calls don't require the variable to be an object at the beginning, they may become one // runtime via properties/other function calls, therefore this check is skipped - // the user shall ensure that a variable he calls a function on is an object + // the user shall ensure that a variable he calls a function on is an object at the point + // of calling the function + if(!requiredVars.Contains(tokens[i-1])) + { + // as the variable didn't occur prior to calling a function on it, it has + // to be an object at the beginning + requiredObjs.Add(tokens[i-1]); + } // Methods start as Target:WeaponAt(Slot) and turn into customCompoundFuncN(X,Target,Slot) // where N-2 is the number of parameters and X is the index in a global lookup table. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rly...@us...> - 2010-09-27 14:55:05
|
Revision: 6225 http://planeshift.svn.sourceforge.net/planeshift/?rev=6225&view=rev Author: rlydontknow Date: 2010-09-27 14:54:55 +0000 (Mon, 27 Sep 2010) Log Message: ----------- fixed a bug that prevented nested blocks from parsing properly added more verbosity on errors Modified Paths: -------------- trunk/src/common/util/mathscript.cpp Modified: trunk/src/common/util/mathscript.cpp =================================================================== --- trunk/src/common/util/mathscript.cpp 2010-09-26 17:37:08 UTC (rev 6224) +++ trunk/src/common/util/mathscript.cpp 2010-09-27 14:54:55 UTC (rev 6225) @@ -266,8 +266,6 @@ blockStart = script.FindFirst('{', start); if (blockStart != SIZET_NOT_FOUND && blockStart < semicolonAt) { - blockStart++; // skip { from now on - // check whether it's a conditional one csString line = script.Slice(start, blockStart - start); line.Trim(); @@ -341,8 +339,16 @@ s->scriptLines.Push(st); } + blockStart++; // skip opening { from now on + size_t nextBlockStart = script.FindFirst('{', blockStart); blockEnd = script.FindFirst('}', blockStart); + if (blockEnd == SIZET_NOT_FOUND) + { + Error2("Failed to create MathScript >%s<. Could not find matching close tag for code block", name); + delete s; + return NULL; + } // find the real end of the block (take care of nested blocks) while (nextBlockStart != SIZET_NOT_FOUND && nextBlockStart < blockEnd) @@ -351,7 +357,7 @@ nextBlockStart++; // find the next block end - blockEnd = script.FindFirst('}', nextBlockStart); + blockEnd = script.FindFirst('}', blockEnd+1); // no matching end found if (blockEnd == SIZET_NOT_FOUND) @@ -367,6 +373,8 @@ st = MathScript::Create(name, script.Slice(blockStart, blockEnd - blockStart)); if (!st) { + Error3("Failed to create MathScript >%s<. " + "Failed to create sub-script for code block at %d",name,blockStart); delete s; return NULL; } @@ -381,9 +389,19 @@ line.Collapse(); if (!line.IsEmpty()) { - MathExpression *st = MathStatement::Create(line, s->name); + MathExpression *st = NULL; + if(line.FindFirst("=") != SIZET_NOT_FOUND) + { + st = MathStatement::Create(line, s->name); + } + else + { + st = MathExpression::Create(line, s->name); + } + if (!st) { + Error3("Failed to create MathScript >%s<. Failed to parse Statement: >%s<", name, line.GetData()); delete s; return NULL; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wel...@us...> - 2010-09-27 15:54:51
|
Revision: 6229 http://planeshift.svn.sourceforge.net/planeshift/?rev=6229&view=rev Author: weltall2 Date: 2010-09-27 15:54:45 +0000 (Mon, 27 Sep 2010) Log Message: ----------- fixed warning Modified Paths: -------------- trunk/src/common/util/mathscript.cpp Modified: trunk/src/common/util/mathscript.cpp =================================================================== --- trunk/src/common/util/mathscript.cpp 2010-09-27 15:43:48 UTC (rev 6228) +++ trunk/src/common/util/mathscript.cpp 2010-09-27 15:54:45 UTC (rev 6229) @@ -374,7 +374,7 @@ if (!st) { Error3("Failed to create MathScript >%s<. " - "Failed to create sub-script for code block at %d",name,blockStart); + "Failed to create sub-script for code block at %zu",name,blockStart); delete s; return NULL; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rly...@us...> - 2010-09-29 23:10:25
|
Revision: 6238 http://planeshift.svn.sourceforge.net/planeshift/?rev=6238&view=rev Author: rlydontknow Date: 2010-09-29 23:10:19 +0000 (Wed, 29 Sep 2010) Log Message: ----------- create exit signal if it doesn't exist Modified Paths: -------------- trunk/src/common/util/mathscript.cpp Modified: trunk/src/common/util/mathscript.cpp =================================================================== --- trunk/src/common/util/mathscript.cpp 2010-09-29 16:18:22 UTC (rev 6237) +++ trunk/src/common/util/mathscript.cpp 2010-09-29 23:10:19 UTC (rev 6238) @@ -423,7 +423,15 @@ { MathVar *exitsignal = env->Lookup("exit"); if (exitsignal) + { exitsignal->SetValue(0); // clear exit condition before running + } + else + { + // create exit signal if it doesn't exist + env->Define("exit",0.f); + exitsignal = env->Lookup("exit"); + } for (size_t i = 0; i < scriptLines.GetSize(); i++) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rly...@us...> - 2010-11-20 19:58:57
|
Revision: 6418 http://planeshift.svn.sourceforge.net/planeshift/?rev=6418&view=rev Author: rlydontknow Date: 2010-11-20 19:58:51 +0000 (Sat, 20 Nov 2010) Log Message: ----------- fixed MathScriptEngine::FormatMessage so it won't return an empty string Modified Paths: -------------- trunk/src/common/util/mathscript.cpp Modified: trunk/src/common/util/mathscript.cpp =================================================================== --- trunk/src/common/util/mathscript.cpp 2010-11-19 23:05:05 UTC (rev 6417) +++ trunk/src/common/util/mathscript.cpp 2010-11-20 19:58:51 UTC (rev 6418) @@ -626,10 +626,11 @@ double args[10]; memcpy(args,parms,sizeof(double)*arg_count); - format.Format(format.GetData(),args[0],args[1],args[2],args[3],args[4], + csString result; + result.Format(format.GetData(),args[0],args[1],args[2],args[3],args[4], args[5],args[6],args[7],args[8],args[9]); - return format; + return result; } //---------------------------------------------------------------------------- This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rly...@us...> - 2010-11-24 18:09:53
|
Revision: 6436 http://planeshift.svn.sourceforge.net/planeshift/?rev=6436&view=rev Author: rlydontknow Date: 2010-11-24 18:09:47 +0000 (Wed, 24 Nov 2010) Log Message: ----------- fixed paranoia warning Modified Paths: -------------- trunk/src/common/util/mathscript.cpp Modified: trunk/src/common/util/mathscript.cpp =================================================================== --- trunk/src/common/util/mathscript.cpp 2010-11-24 17:40:41 UTC (rev 6435) +++ trunk/src/common/util/mathscript.cpp 2010-11-24 18:09:47 UTC (rev 6436) @@ -1025,7 +1025,7 @@ csString msg; msg.Format("Error in >%s<: Required variable >%s< not supplied in environment.", name, varName.GetData()); CS_ASSERT_MSG(msg.GetData(),false); - Error1(msg.GetData()); + Error2("%s",msg.GetData()); return 0.0; } values[i++] = var->GetValue(); @@ -1046,7 +1046,7 @@ csString msg; msg.Format("Error in >%s<: Type inference requires >%s< to be an iScriptableVar, but it isn't.", name, objName.GetData()); CS_ASSERT_MSG(msg.GetData(),false); - Error1(msg.GetData()); + Error2("%s",msg.GetData()); return 0.0; } else if (!var->GetObject()) // invalid object @@ -1054,7 +1054,7 @@ csString msg; msg.Format("Error in >%s<: Given a NULL iScriptableVar* for >%s<.", name, objName.GetData()); CS_ASSERT_MSG(msg.GetData(),false); - Error1(msg.GetData()); + Error2("%s",msg.GetData()); return 0.0; } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rly...@us...> - 2010-11-27 22:02:44
|
Revision: 6455 http://planeshift.svn.sourceforge.net/planeshift/?rev=6455&view=rev Author: rlydontknow Date: 2010-11-27 22:02:38 +0000 (Sat, 27 Nov 2010) Log Message: ----------- remove reinterpret_cast from CustomCompoundFunction as well as it seems to cause issues with old gcc versions Modified Paths: -------------- trunk/src/common/util/mathscript.cpp Modified: trunk/src/common/util/mathscript.cpp =================================================================== --- trunk/src/common/util/mathscript.cpp 2010-11-27 18:28:10 UTC (rev 6454) +++ trunk/src/common/util/mathscript.cpp 2010-11-27 22:02:38 UTC (rev 6455) @@ -696,9 +696,11 @@ size_t funcIndex = (size_t)parms[0]; csString funcName(customCompoundFunctions.Request(funcIndex)); - MathEnvironment* env = *reinterpret_cast<MathEnvironment**>( - const_cast<double*>(&parms[1])); + MathScriptEngine::IDConverter converter; + converter.value = parms[1]; + MathEnvironment* env = (MathEnvironment*)converter.p; + iScriptableVar* v = env->GetPointer(parms[2]); if(!v || !env) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rly...@us...> - 2010-11-27 22:27:35
|
Revision: 6456 http://planeshift.svn.sourceforge.net/planeshift/?rev=6456&view=rev Author: rlydontknow Date: 2010-11-27 22:27:29 +0000 (Sat, 27 Nov 2010) Log Message: ----------- check parent in MatheEnvironment::GetString/GetPointer Modified Paths: -------------- trunk/src/common/util/mathscript.cpp Modified: trunk/src/common/util/mathscript.cpp =================================================================== --- trunk/src/common/util/mathscript.cpp 2010-11-27 22:02:38 UTC (rev 6455) +++ trunk/src/common/util/mathscript.cpp 2010-11-27 22:27:29 UTC (rev 6456) @@ -228,6 +228,10 @@ // obtain the string associated witht he ID and // return it - first checking in global lookup table const char* str = MathScriptEngine::Request(ID.ID.value); + if(parent && !str) + { + str = parent->GetString(value); + } if(!str) { str = stringLiterals.Request(ID.ID.value); @@ -284,7 +288,12 @@ { // obtain the object associated witht he ID and // return it - return scriptableVariables.Get(ID.ID.value,NULL); + iScriptableVar* object = scriptableVariables.Get(ID.ID.value,NULL); + if(!object) + { + object = parent->GetPointer(value); + } + return object; } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rly...@us...> - 2010-11-27 22:35:01
|
Revision: 6457 http://planeshift.svn.sourceforge.net/planeshift/?rev=6457&view=rev Author: rlydontknow Date: 2010-11-27 22:34:55 +0000 (Sat, 27 Nov 2010) Log Message: ----------- forgot a check Modified Paths: -------------- trunk/src/common/util/mathscript.cpp Modified: trunk/src/common/util/mathscript.cpp =================================================================== --- trunk/src/common/util/mathscript.cpp 2010-11-27 22:27:29 UTC (rev 6456) +++ trunk/src/common/util/mathscript.cpp 2010-11-27 22:34:55 UTC (rev 6457) @@ -289,7 +289,7 @@ // obtain the object associated witht he ID and // return it iScriptableVar* object = scriptableVariables.Get(ID.ID.value,NULL); - if(!object) + if(parent && !object) { object = parent->GetPointer(value); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rly...@us...> - 2010-11-27 22:50:47
|
Revision: 6458 http://planeshift.svn.sourceforge.net/planeshift/?rev=6458&view=rev Author: rlydontknow Date: 2010-11-27 22:50:41 +0000 (Sat, 27 Nov 2010) Log Message: ----------- string lookup order fix by weltall Modified Paths: -------------- trunk/src/common/util/mathscript.cpp Modified: trunk/src/common/util/mathscript.cpp =================================================================== --- trunk/src/common/util/mathscript.cpp 2010-11-27 22:34:55 UTC (rev 6457) +++ trunk/src/common/util/mathscript.cpp 2010-11-27 22:50:41 UTC (rev 6458) @@ -227,14 +227,14 @@ { // obtain the string associated witht he ID and // return it - first checking in global lookup table - const char* str = MathScriptEngine::Request(ID.ID.value); + const char* str = stringLiterals.Request(ID.ID.value); if(parent && !str) { str = parent->GetString(value); } if(!str) { - str = stringLiterals.Request(ID.ID.value); + str = MathScriptEngine::Request(ID.ID.value); } return str ? str : ""; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wel...@us...> - 2010-11-28 09:05:49
|
Revision: 6461 http://planeshift.svn.sourceforge.net/planeshift/?rev=6461&view=rev Author: weltall2 Date: 2010-11-28 09:05:43 +0000 (Sun, 28 Nov 2010) Log Message: ----------- inverted code in the if as it was wrongly placed. note the parent uid won't get to the first level this way. so either the uid has to be put locally during init or you should make a method to reach the top parent Modified Paths: -------------- trunk/src/common/util/mathscript.cpp Modified: trunk/src/common/util/mathscript.cpp =================================================================== --- trunk/src/common/util/mathscript.cpp 2010-11-27 23:20:59 UTC (rev 6460) +++ trunk/src/common/util/mathscript.cpp 2010-11-28 09:05:43 UTC (rev 6461) @@ -354,17 +354,18 @@ // assign a new ID if(parent) { - ID.ID.value = ++UID; + // this const_cast is bad and should be removed + ID.ID.value = ++(const_cast<MathEnvironment*>(parent)->UID); } else { - // this const_cast is bad and should be removed - ID.ID.value = ++(const_cast<MathEnvironment*>(parent)->UID); + ID.ID.value = ++UID; + } - // add to the lookup table - scriptableVariables.Put(ID.ID.value,p); - scriptableRegistry.Put(p,ID.ID.value); - } + // add to the lookup table + scriptableVariables.Put(ID.ID.value,p); + scriptableRegistry.Put(p,ID.ID.value); + } // return masked value This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rly...@us...> - 2010-12-31 22:51:00
|
Revision: 6677 http://planeshift.svn.sourceforge.net/planeshift/?rev=6677&view=rev Author: rlydontknow Date: 2010-12-31 22:50:54 +0000 (Fri, 31 Dec 2010) Log Message: ----------- propagate execution failure/break through code blocks until catched (note that only loops catch those - see examples below) - while(condition) { if(bad) { return; } } will terminate the while - if(condition1) { if(condition2) { return; } } will terminate the script Modified Paths: -------------- trunk/src/common/util/mathscript.cpp Modified: trunk/src/common/util/mathscript.cpp =================================================================== --- trunk/src/common/util/mathscript.cpp 2010-12-31 22:47:11 UTC (rev 6676) +++ trunk/src/common/util/mathscript.cpp 2010-12-31 22:50:54 UTC (rev 6677) @@ -638,10 +638,10 @@ size_t op = s->GetOpcode(); // handle "do { }" and "while { }" - if (op & MATH_LOOP) + if(op & MATH_LOOP) { MathExpression* l = scriptLines[i+1]; - while (!(op & MATH_EXP) || s->Evaluate(env)) + while(!(op & MATH_EXP) || s->Evaluate(env)) { // code blocks(MathScript) shall return a value < 0 to // signal an error/break @@ -659,27 +659,35 @@ i++; // skip next statement as it's already handled } // handle "return x;" - else if (op & MATH_BREAK) + else if(op & MATH_BREAK) { return s->Evaluate(env); } // handle "if { } [ else { } ]" - else if (op == MATH_IF) + else if(op == MATH_IF) { size_t nextOp = MATH_NONE; + if (i + 3 < scriptLines.GetSize()) { nextOp = scriptLines[i+2]->GetOpcode(); } + double result = 0; if (s->Evaluate(env)) { - scriptLines[i+1]->Evaluate(env); + result = scriptLines[i+1]->Evaluate(env); } else if (nextOp == MATH_ELSE) { - scriptLines[i+3]->Evaluate(env); + result = scriptLines[i+3]->Evaluate(env); } + if(result < 0) + { + // code blocks(MathScript) shall return a value < 0 to + // signal an error/break + return result; + } if (nextOp == MATH_ELSE) { @@ -691,12 +699,12 @@ } } // handle regular expressions, e.g. assignments - else if (op & MATH_EXP) + else if(op & MATH_EXP) { s->Evaluate(env); } - if (exitsignal && exitsignal->GetValue() != 0.0) + if(exitsignal && exitsignal->GetValue() != 0.0) { // printf("Terminating mathscript at line %d of %d.\n",i, scriptLines.GetSize()); break; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |