Make == script operator to work correctly on collections (lists)

git-svn-id: svn://svn.code.sf.net/p/magicseteditor/code/trunk@992 0fc631ac-6414-0410-93d0-97cfa31319b6
This commit is contained in:
twanvl
2008-06-18 23:11:26 +00:00
parent b7ffca6cfc
commit a9c5f72fdc
5 changed files with 46 additions and 30 deletions
+5 -12
View File
@@ -215,7 +215,7 @@ int position_in_vector(const ScriptValueP& of, const ScriptValueP& in, const Scr
ScriptValueP it = in->makeIterator(in);
int i = 0;
while (ScriptValueP v = it->next()) {
if (equal(*of, *v)) return i;
if (equal(of, v)) return i;
i++;
}
}
@@ -384,17 +384,10 @@ SCRIPT_FUNCTION(keyword_usage) {
// ----------------------------------------------------------------------------- : Rule form
/// Turn a script function into a rule, a.k.a. a delayed closure
class ScriptRule : public ScriptValue {
public:
inline ScriptRule(const ScriptValueP& fun) : fun(fun) {}
virtual ScriptType type() const { return SCRIPT_FUNCTION; }
virtual String typeName() const { return fun->typeName() + _(" rule"); }
virtual ScriptValueP eval(Context& ctx) const {
return ctx.makeClosure(fun);
}
private:
ScriptValueP fun;
};
SCRIPT_FUNCTION(rule) {
SCRIPT_PARAM(ScriptValueP, input);
return new_intrusive1<ScriptRule>(input);
}
// ----------------------------------------------------------------------------- : Init