From dcbc03ee4471a6f1548315ba5ad0986c6e3c06ca Mon Sep 17 00:00:00 2001 From: twanvl Date: Mon, 29 Dec 2008 18:50:08 +0000 Subject: [PATCH] toCode should now never give an error, instead returning things like "" git-svn-id: svn://svn.code.sf.net/p/magicseteditor/code/trunk@1265 0fc631ac-6414-0410-93d0-97cfa31319b6 --- src/script/to_value.hpp | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/script/to_value.hpp b/src/script/to_value.hpp index b0d64181..ad5d2d07 100644 --- a/src/script/to_value.hpp +++ b/src/script/to_value.hpp @@ -52,6 +52,14 @@ template inline String type_name(const pair& p) { return type_name(p.second); // for maps } +/// Script code for an object, or anything else we can show +template inline String to_code(const T& v) { + return format_string(_("<%s>"),type_name(v)); +} +template inline String to_code(const intrusive_ptr& p) { + return type_name(*p.get()); +} + // ----------------------------------------------------------------------------- : Errors /// A delayed error message. @@ -113,6 +121,7 @@ ScriptValueP to_script(int); class ScriptCollectionBase : public ScriptValue { public: virtual ScriptType type() const { return SCRIPT_COLLECTION; } + virtual String typeName() const { return _TYPE_("collection"); } virtual String toCode() const; }; @@ -213,7 +222,6 @@ class ScriptMap : public ScriptValue { /// Script value containing a custom collection, returned from script functions class ScriptCustomCollection : public ScriptCollectionBase { public: - virtual String typeName() const { return _TYPE_("collection"); } virtual ScriptValueP getMember(const String& name) const; virtual ScriptValueP getIndex(int index) const; virtual ScriptValueP makeIterator(const ScriptValueP& thisP) const; @@ -235,11 +243,9 @@ DECLARE_POINTER_TYPE(ScriptCustomCollection); // ----------------------------------------------------------------------------- : Collections : concatenation /// Script value containing the concatenation of two collections -class ScriptConcatCollection : public ScriptValue { +class ScriptConcatCollection : public ScriptCollectionBase { public: inline ScriptConcatCollection(ScriptValueP a, ScriptValueP b) : a(a), b(b) {} - virtual ScriptType type() const { return SCRIPT_COLLECTION; } - virtual String typeName() const { return _TYPE_("collection"); } virtual ScriptValueP getMember(const String& name) const; virtual ScriptValueP getIndex(int index) const; virtual ScriptValueP makeIterator(const ScriptValueP& thisP) const; @@ -269,6 +275,7 @@ class ScriptObject : public ScriptValue { virtual operator int() const { ScriptValueP d = getDefault(); return d ? *d : ScriptValue::operator int(); } virtual operator bool() const { ScriptValueP d = getDefault(); return d ? *d : ScriptValue::operator bool(); } virtual operator AColor() const { ScriptValueP d = getDefault(); return d ? *d : ScriptValue::operator AColor(); } + virtual String toCode() const { ScriptValueP d = getDefault(); return d ? d->toCode() : to_code(*value); } virtual GeneratedImageP toImage(const ScriptValueP& thisP) const { ScriptValueP d = getDefault(); return d ? d->toImage(d) : ScriptValue::toImage(thisP); }