Diff
Modified: trunk/Source/_javascript_Core/ChangeLog (199241 => 199242)
--- trunk/Source/_javascript_Core/ChangeLog 2016-04-08 19:40:48 UTC (rev 199241)
+++ trunk/Source/_javascript_Core/ChangeLog 2016-04-08 19:59:25 UTC (rev 199242)
@@ -1,3 +1,67 @@
+2016-04-08 Brian Burg <[email protected]>
+
+ Web Inspector: get rid of InspectorBasicValue and InspectorString subclasses
+ https://bugs.webkit.org/show_bug.cgi?id=156407
+ <rdar://problem/25627659>
+
+ Reviewed by Timothy Hatcher.
+
+ There's no point having these subclasses as they don't save any space.
+ Add m_stringValue to the union and merge some implementations of writeJSON.
+ Move uses of the subclass to InspectorValue and delete redundant methods.
+ Now, most InspectorValue methods are non-virtual so they can be templated.
+
+ * bindings/ScriptValue.cpp:
+ (Deprecated::jsToInspectorValue):
+ * inspector/InjectedScriptBase.cpp:
+ (Inspector::InjectedScriptBase::makeCall):
+ Don't used deleted subclasses.
+
+ * inspector/InspectorValues.cpp:
+ (Inspector::InspectorValue::null):
+ (Inspector::InspectorValue::create):
+ (Inspector::InspectorValue::asValue):
+ (Inspector::InspectorValue::asBoolean):
+ (Inspector::InspectorValue::asDouble):
+ (Inspector::InspectorValue::asInteger):
+ (Inspector::InspectorValue::asString):
+ These only need one implementation now.
+
+ (Inspector::InspectorValue::writeJSON):
+ Still a virtual method since Object and Array need their members.
+
+ (Inspector::InspectorObjectBase::InspectorObjectBase):
+ (Inspector::InspectorBasicValue::asBoolean): Deleted.
+ (Inspector::InspectorBasicValue::asDouble): Deleted.
+ (Inspector::InspectorBasicValue::asInteger): Deleted.
+ (Inspector::InspectorBasicValue::writeJSON): Deleted.
+ (Inspector::InspectorString::asString): Deleted.
+ (Inspector::InspectorString::writeJSON): Deleted.
+ (Inspector::InspectorString::create): Deleted.
+ (Inspector::InspectorBasicValue::create): Deleted.
+
+ * inspector/InspectorValues.h:
+ (Inspector::InspectorObjectBase::setBoolean):
+ (Inspector::InspectorObjectBase::setInteger):
+ (Inspector::InspectorObjectBase::setDouble):
+ (Inspector::InspectorObjectBase::setString):
+ (Inspector::InspectorArrayBase::pushBoolean):
+ (Inspector::InspectorArrayBase::pushInteger):
+ (Inspector::InspectorArrayBase::pushDouble):
+ (Inspector::InspectorArrayBase::pushString):
+ Use new factory methods.
+
+ * replay/EncodedValue.cpp:
+ (JSC::ScalarEncodingTraits<bool>::encodeValue):
+ (JSC::ScalarEncodingTraits<double>::encodeValue):
+ (JSC::ScalarEncodingTraits<float>::encodeValue):
+ (JSC::ScalarEncodingTraits<int32_t>::encodeValue):
+ (JSC::ScalarEncodingTraits<int64_t>::encodeValue):
+ (JSC::ScalarEncodingTraits<uint32_t>::encodeValue):
+ (JSC::ScalarEncodingTraits<uint64_t>::encodeValue):
+ * replay/EncodedValue.h:
+ Use new factory methods.
+
2016-04-08 Filip Pizlo <[email protected]>
Add IC support for arguments.length
Modified: trunk/Source/_javascript_Core/bindings/ScriptValue.cpp (199241 => 199242)
--- trunk/Source/_javascript_Core/bindings/ScriptValue.cpp 2016-04-08 19:40:48 UTC (rev 199241)
+++ trunk/Source/_javascript_Core/bindings/ScriptValue.cpp 2016-04-08 19:59:25 UTC (rev 199242)
@@ -112,13 +112,13 @@
if (value.isNull() || value.isUndefined())
return InspectorValue::null();
if (value.isBoolean())
- return InspectorBasicValue::create(value.asBoolean());
+ return InspectorValue::create(value.asBoolean());
if (value.isNumber() && value.isDouble())
- return InspectorBasicValue::create(value.asNumber());
+ return InspectorValue::create(value.asNumber());
if (value.isNumber() && value.isMachineInt())
- return InspectorBasicValue::create(static_cast<int>(value.asMachineInt()));
+ return InspectorValue::create(static_cast<int>(value.asMachineInt()));
if (value.isString())
- return InspectorString::create(value.getString(scriptState));
+ return InspectorValue::create(value.getString(scriptState));
if (value.isObject()) {
if (isJSArray(value)) {
Modified: trunk/Source/_javascript_Core/inspector/InjectedScriptBase.cpp (199241 => 199242)
--- trunk/Source/_javascript_Core/inspector/InjectedScriptBase.cpp 2016-04-08 19:40:48 UTC (rev 199241)
+++ trunk/Source/_javascript_Core/inspector/InjectedScriptBase.cpp 2016-04-08 19:59:25 UTC (rev 199242)
@@ -99,9 +99,9 @@
if (!hadException) {
*result = resultValue.toInspectorValue(m_injectedScriptObject.scriptState());
if (!*result)
- *result = InspectorString::create(String::format("Object has too long reference chain (must not be longer than %d)", InspectorValue::maxDepth));
+ *result = InspectorValue::create(String::format("Object has too long reference chain (must not be longer than %d)", InspectorValue::maxDepth));
} else
- *result = InspectorString::create("Exception while making a call.");
+ *result = InspectorValue::create("Exception while making a call.");
}
void InjectedScriptBase::makeEvalCall(ErrorString& errorString, Deprecated::ScriptFunctionCall& function, RefPtr<Protocol::Runtime::RemoteObject>* objectResult, Protocol::OptOutput<bool>* wasThrown, Protocol::OptOutput<int>* savedResultIndex)
Modified: trunk/Source/_javascript_Core/inspector/InspectorValues.cpp (199241 => 199242)
--- trunk/Source/_javascript_Core/inspector/InspectorValues.cpp 2016-04-08 19:40:48 UTC (rev 199241)
+++ trunk/Source/_javascript_Core/inspector/InspectorValues.cpp 2016-04-08 19:59:25 UTC (rev 199242)
@@ -363,17 +363,17 @@
result = InspectorValue::null();
break;
case BOOL_TRUE:
- result = InspectorBasicValue::create(true);
+ result = InspectorValue::create(true);
break;
case BOOL_FALSE:
- result = InspectorBasicValue::create(false);
+ result = InspectorValue::create(false);
break;
case NUMBER: {
bool ok;
double value = charactersToDouble(tokenStart, tokenEnd - tokenStart, &ok);
if (!ok)
return nullptr;
- result = InspectorBasicValue::create(value);
+ result = InspectorValue::create(value);
break;
}
case STRING: {
@@ -381,7 +381,7 @@
bool ok = decodeString(tokenStart + 1, tokenEnd - 1, value);
if (!ok)
return nullptr;
- result = InspectorString::create(value);
+ result = InspectorValue::create(value);
break;
}
case ARRAY_BEGIN: {
@@ -498,59 +498,39 @@
} // anonymous namespace
-bool InspectorValue::asBoolean(bool&) const
+Ref<InspectorValue> InspectorValue::null()
{
- return false;
+ return adoptRef(*new InspectorValue);
}
-bool InspectorValue::asDouble(double&) const
+Ref<InspectorValue> InspectorValue::create(bool value)
{
- return false;
+ return adoptRef(*new InspectorValue(value));
}
-bool InspectorValue::asDouble(float&) const
+Ref<InspectorValue> InspectorValue::create(int value)
{
- return false;
+ return adoptRef(*new InspectorValue(value));
}
-bool InspectorValue::asInteger(int&) const
+Ref<InspectorValue> InspectorValue::create(double value)
{
- return false;
+ return adoptRef(*new InspectorValue(value));
}
-bool InspectorValue::asInteger(unsigned&) const
+Ref<InspectorValue> InspectorValue::create(const String& value)
{
- return false;
+ return adoptRef(*new InspectorValue(value));
}
-bool InspectorValue::asInteger(long&) const
+Ref<InspectorValue> InspectorValue::create(const char* value)
{
- return false;
+ return adoptRef(*new InspectorValue(value));
}
-bool InspectorValue::asInteger(long long&) const
+bool InspectorValue::asValue(RefPtr<Inspector::InspectorValue> & value)
{
- return false;
-}
-
-bool InspectorValue::asInteger(unsigned long&) const
-{
- return false;
-}
-
-bool InspectorValue::asInteger(unsigned long long&) const
-{
- return false;
-}
-
-bool InspectorValue::asString(String&) const
-{
- return false;
-}
-
-bool InspectorValue::asValue(RefPtr<InspectorValue>& output)
-{
- output = this;
+ value = this;
return true;
}
@@ -587,15 +567,8 @@
return result.toString();
}
-void InspectorValue::writeJSON(StringBuilder& output) const
+bool InspectorValue::asBoolean(bool& output) const
{
- ASSERT(m_type == Type::Null);
-
- output.appendLiteral("null");
-}
-
-bool InspectorBasicValue::asBoolean(bool& output) const
-{
if (type() != Type::Boolean)
return false;
@@ -603,7 +576,7 @@
return true;
}
-bool InspectorBasicValue::asDouble(double& output) const
+bool InspectorValue::asDouble(double& output) const
{
if (type() != Type::Double)
return false;
@@ -612,7 +585,7 @@
return true;
}
-bool InspectorBasicValue::asDouble(float& output) const
+bool InspectorValue::asDouble(float& output) const
{
if (type() != Type::Double)
return false;
@@ -621,7 +594,7 @@
return true;
}
-bool InspectorBasicValue::asInteger(int& output) const
+bool InspectorValue::asInteger(int& output) const
{
if (type() != Type::Integer && type() != Type::Double)
return false;
@@ -630,7 +603,7 @@
return true;
}
-bool InspectorBasicValue::asInteger(unsigned& output) const
+bool InspectorValue::asInteger(unsigned& output) const
{
if (type() != Type::Integer && type() != Type::Double)
return false;
@@ -639,7 +612,7 @@
return true;
}
-bool InspectorBasicValue::asInteger(long& output) const
+bool InspectorValue::asInteger(long& output) const
{
if (type() != Type::Integer && type() != Type::Double)
return false;
@@ -648,7 +621,7 @@
return true;
}
-bool InspectorBasicValue::asInteger(long long& output) const
+bool InspectorValue::asInteger(long long& output) const
{
if (type() != Type::Integer && type() != Type::Double)
return false;
@@ -657,7 +630,7 @@
return true;
}
-bool InspectorBasicValue::asInteger(unsigned long& output) const
+bool InspectorValue::asInteger(unsigned long& output) const
{
if (type() != Type::Integer && type() != Type::Double)
return false;
@@ -666,7 +639,7 @@
return true;
}
-bool InspectorBasicValue::asInteger(unsigned long long& output) const
+bool InspectorValue::asInteger(unsigned long long& output) const
{
if (type() != Type::Integer && type() != Type::Double)
return false;
@@ -675,16 +648,32 @@
return true;
}
-void InspectorBasicValue::writeJSON(StringBuilder& output) const
+bool InspectorValue::asString(String& output) const
{
- ASSERT(type() == Type::Boolean || type() == Type::Double || type() == Type::Integer);
+ if (type() != Type::String)
+ return false;
- if (type() == Type::Boolean) {
+ output = m_stringValue;
+ return true;
+}
+
+void InspectorValue::writeJSON(StringBuilder& output) const
+{
+ switch (m_type) {
+ case Type::Null:
+ output.appendLiteral("null");
+ break;
+ case Type::Boolean:
if (m_booleanValue)
output.appendLiteral("true");
else
output.appendLiteral("false");
- } else if (type() == Type::Double || type() == Type::Integer) {
+ break;
+ case Type::String:
+ doubleQuoteString(m_stringValue, output);
+ break;
+ case Type::Double:
+ case Type::Integer: {
NumberToLStringBuffer buffer;
if (!std::isfinite(m_doubleValue)) {
output.appendLiteral("null");
@@ -703,21 +692,13 @@
} else
length = decimal.toStringDecimal(buffer, WTF::NumberToStringBufferLength);
output.append(buffer, length);
+ break;
}
+ default:
+ ASSERT_NOT_REACHED();
+ }
}
-bool InspectorString::asString(String& output) const
-{
- output = m_stringValue;
- return true;
-}
-
-void InspectorString::writeJSON(StringBuilder& output) const
-{
- ASSERT(type() == Type::String);
- doubleQuoteString(m_stringValue, output);
-}
-
InspectorObjectBase::~InspectorObjectBase()
{
}
@@ -805,7 +786,7 @@
}
InspectorObjectBase::InspectorObjectBase()
- : InspectorValue(Type::Object)
+ : Inspector::InspectorValue(Type::Object)
, m_data()
, m_order()
{
@@ -855,34 +836,4 @@
return adoptRef(*new InspectorArray);
}
-Ref<InspectorValue> InspectorValue::null()
-{
- return adoptRef(*new InspectorValue);
-}
-
-Ref<InspectorString> InspectorString::create(const String& value)
-{
- return adoptRef(*new InspectorString(value));
-}
-
-Ref<InspectorString> InspectorString::create(const char* value)
-{
- return adoptRef(*new InspectorString(value));
-}
-
-Ref<InspectorBasicValue> InspectorBasicValue::create(bool value)
-{
- return adoptRef(*new InspectorBasicValue(value));
-}
-
-Ref<InspectorBasicValue> InspectorBasicValue::create(int value)
-{
- return adoptRef(*new InspectorBasicValue(value));
-}
-
-Ref<InspectorBasicValue> InspectorBasicValue::create(double value)
-{
- return adoptRef(*new InspectorBasicValue(value));
-}
-
} // namespace Inspector
Modified: trunk/Source/_javascript_Core/inspector/InspectorValues.h (199241 => 199242)
--- trunk/Source/_javascript_Core/inspector/InspectorValues.h 2016-04-08 19:40:48 UTC (rev 199241)
+++ trunk/Source/_javascript_Core/inspector/InspectorValues.h 2016-04-08 19:59:25 UTC (rev 199242)
@@ -51,11 +51,14 @@
public:
static const int maxDepth = 1000;
- InspectorValue()
- : m_type(Type::Null) { }
virtual ~InspectorValue() { }
static Ref<InspectorValue> null();
+ static Ref<InspectorValue> create(bool);
+ static Ref<InspectorValue> create(int);
+ static Ref<InspectorValue> create(double);
+ static Ref<InspectorValue> create(const String&);
+ static Ref<InspectorValue> create(const char*);
enum class Type {
Null = 0,
@@ -64,24 +67,24 @@
Integer,
String,
Object,
- Array
+ Array,
};
Type type() const { return m_type; }
-
bool isNull() const { return m_type == Type::Null; }
- virtual bool asBoolean(bool&) const;
- virtual bool asInteger(int&) const;
- virtual bool asInteger(unsigned&) const;
- virtual bool asInteger(long&) const;
- virtual bool asInteger(long long&) const;
- virtual bool asInteger(unsigned long&) const;
- virtual bool asInteger(unsigned long long&) const;
- virtual bool asDouble(double&) const;
- virtual bool asDouble(float&) const;
- virtual bool asString(String&) const;
- virtual bool asValue(RefPtr<InspectorValue>&);
+ bool asBoolean(bool&) const;
+ bool asInteger(int&) const;
+ bool asInteger(unsigned&) const;
+ bool asInteger(long&) const;
+ bool asInteger(long long&) const;
+ bool asInteger(unsigned long&) const;
+ bool asInteger(unsigned long long&) const;
+ bool asDouble(double&) const;
+ bool asDouble(float&) const;
+ bool asString(String&) const;
+ bool asValue(RefPtr<InspectorValue>&);
+
virtual bool asObject(RefPtr<InspectorObject>&);
virtual bool asArray(RefPtr<InspectorArray>&);
@@ -91,73 +94,41 @@
virtual void writeJSON(StringBuilder& output) const;
protected:
- explicit InspectorValue(Type type) : m_type(type) { }
+ InspectorValue()
+ : m_type(Type::Null) { }
-private:
- Type m_type;
-};
+ explicit InspectorValue(Type type)
+ : m_type(type) { }
-class JS_EXPORT_PRIVATE InspectorBasicValue : public InspectorValue {
-public:
-
- static Ref<InspectorBasicValue> create(bool);
- static Ref<InspectorBasicValue> create(int);
- static Ref<InspectorBasicValue> create(double);
-
- bool asBoolean(bool&) const override;
- // Numbers from the frontend are always parsed as doubles, so we allow
- // clients to convert to integral values with this function.
- bool asInteger(int&) const override;
- bool asInteger(unsigned&) const override;
- bool asInteger(long&) const override;
- bool asInteger(long long&) const override;
- bool asInteger(unsigned long&) const override;
- bool asInteger(unsigned long long&) const override;
- bool asDouble(double&) const override;
- bool asDouble(float&) const override;
-
- void writeJSON(StringBuilder& output) const override;
-
-private:
- explicit InspectorBasicValue(bool value)
- : InspectorValue(Type::Boolean)
+ explicit InspectorValue(bool value)
+ : m_type(Type::Boolean)
, m_booleanValue(value) { }
- explicit InspectorBasicValue(int value)
- : InspectorValue(Type::Integer)
+ explicit InspectorValue(int value)
+ : m_type(Type::Integer)
, m_doubleValue(static_cast<double>(value)) { }
- explicit InspectorBasicValue(double value)
- : InspectorValue(Type::Double)
+ explicit InspectorValue(double value)
+ : m_type(Type::Double)
, m_doubleValue(value) { }
+ explicit InspectorValue(const String& value)
+ : m_type(Type::String)
+ , m_stringValue(value) { }
+
+ explicit InspectorValue(const char* value)
+ : m_type(Type::String)
+ , m_stringValue(value) { }
+
+private:
+ Type m_type { Type::Null };
union {
bool m_booleanValue;
double m_doubleValue;
+ String m_stringValue;
};
};
-class JS_EXPORT_PRIVATE InspectorString : public InspectorValue {
-public:
- static Ref<InspectorString> create(const String&);
- static Ref<InspectorString> create(const char*);
-
- bool asString(String& output) const override;
-
- void writeJSON(StringBuilder& output) const override;
-
-private:
- explicit InspectorString(const String& value)
- : InspectorValue(Type::String)
- , m_stringValue(value) { }
-
- explicit InspectorString(const char* value)
- : InspectorValue(Type::String)
- , m_stringValue(value) { }
-
- String m_stringValue;
-};
-
class JS_EXPORT_PRIVATE InspectorObjectBase : public InspectorValue {
private:
typedef HashMap<String, RefPtr<InspectorValue>> Dictionary;
@@ -329,22 +300,22 @@
inline void InspectorObjectBase::setBoolean(const String& name, bool value)
{
- setValue(name, InspectorBasicValue::create(value));
+ setValue(name, InspectorValue::create(value));
}
inline void InspectorObjectBase::setInteger(const String& name, int value)
{
- setValue(name, InspectorBasicValue::create(value));
+ setValue(name, InspectorValue::create(value));
}
inline void InspectorObjectBase::setDouble(const String& name, double value)
{
- setValue(name, InspectorBasicValue::create(value));
+ setValue(name, InspectorValue::create(value));
}
inline void InspectorObjectBase::setString(const String& name, const String& value)
{
- setValue(name, InspectorString::create(value));
+ setValue(name, InspectorValue::create(value));
}
inline void InspectorObjectBase::setValue(const String& name, RefPtr<InspectorValue>&& value)
@@ -370,22 +341,22 @@
inline void InspectorArrayBase::pushBoolean(bool value)
{
- m_data.append(InspectorBasicValue::create(value));
+ m_data.append(InspectorValue::create(value));
}
inline void InspectorArrayBase::pushInteger(int value)
{
- m_data.append(InspectorBasicValue::create(value));
+ m_data.append(InspectorValue::create(value));
}
inline void InspectorArrayBase::pushDouble(double value)
{
- m_data.append(InspectorBasicValue::create(value));
+ m_data.append(InspectorValue::create(value));
}
inline void InspectorArrayBase::pushString(const String& value)
{
- m_data.append(InspectorString::create(value));
+ m_data.append(InspectorValue::create(value));
}
inline void InspectorArrayBase::pushValue(RefPtr<InspectorValue>&& value)
Modified: trunk/Source/_javascript_Core/replay/EncodedValue.cpp (199241 => 199242)
--- trunk/Source/_javascript_Core/replay/EncodedValue.cpp 2016-04-08 19:40:48 UTC (rev 199241)
+++ trunk/Source/_javascript_Core/replay/EncodedValue.cpp 2016-04-08 19:59:25 UTC (rev 199242)
@@ -67,37 +67,37 @@
template<> EncodedValue ScalarEncodingTraits<bool>::encodeValue(const bool& value)
{
- return EncodedValue(InspectorBasicValue::create(value));
+ return EncodedValue(InspectorValue::create(value));
}
template<> EncodedValue ScalarEncodingTraits<double>::encodeValue(const double& value)
{
- return EncodedValue(InspectorBasicValue::create(value));
+ return EncodedValue(InspectorValue::create(value));
}
template<> EncodedValue ScalarEncodingTraits<float>::encodeValue(const float& value)
{
- return EncodedValue(InspectorBasicValue::create((double)value));
+ return EncodedValue(InspectorValue::create((double)value));
}
template<> EncodedValue ScalarEncodingTraits<int32_t>::encodeValue(const int32_t& value)
{
- return EncodedValue(InspectorBasicValue::create((double)value));
+ return EncodedValue(InspectorValue::create((double)value));
}
template<> EncodedValue ScalarEncodingTraits<int64_t>::encodeValue(const int64_t& value)
{
- return EncodedValue(InspectorBasicValue::create((double)value));
+ return EncodedValue(InspectorValue::create((double)value));
}
template<> EncodedValue ScalarEncodingTraits<uint32_t>::encodeValue(const uint32_t& value)
{
- return EncodedValue(InspectorBasicValue::create((double)value));
+ return EncodedValue(InspectorValue::create((double)value));
}
template<> EncodedValue ScalarEncodingTraits<uint64_t>::encodeValue(const uint64_t& value)
{
- return EncodedValue(InspectorBasicValue::create((double)value));
+ return EncodedValue(InspectorValue::create((double)value));
}
template<> bool EncodedValue::convertTo<bool>()
Modified: trunk/Source/_javascript_Core/replay/EncodedValue.h (199241 => 199242)
--- trunk/Source/_javascript_Core/replay/EncodedValue.h 2016-04-08 19:40:48 UTC (rev 199241)
+++ trunk/Source/_javascript_Core/replay/EncodedValue.h 2016-04-08 19:59:25 UTC (rev 199242)
@@ -59,12 +59,12 @@
static EncodedValue createString(const String& value)
{
- return EncodedValue(Inspector::InspectorString::create(value));
+ return EncodedValue(Inspector::InspectorValue::create(value));
}
static EncodedValue createString(const char* value)
{
- return EncodedValue(Inspector::InspectorString::create(value));
+ return EncodedValue(Inspector::InspectorValue::create(value));
}
template<typename T>
Modified: trunk/Source/WebCore/ChangeLog (199241 => 199242)
--- trunk/Source/WebCore/ChangeLog 2016-04-08 19:40:48 UTC (rev 199241)
+++ trunk/Source/WebCore/ChangeLog 2016-04-08 19:59:25 UTC (rev 199242)
@@ -1,3 +1,13 @@
+2016-04-08 Brian Burg <[email protected]>
+
+ Web Inspector: get rid of InspectorBasicValue and InspectorString subclasses
+ https://bugs.webkit.org/show_bug.cgi?id=156407
+ <rdar://problem/25627659>
+
+ Reviewed by Timothy Hatcher.
+
+ * inspector/InspectorDatabaseAgent.cpp: Don't use deleted subclasses.
+
2016-04-08 Beth Dakin <[email protected]>
Fix leaks in WebAVMediaSelectionOptionMac and WebPlaybackControlsManager
Modified: trunk/Source/WebCore/inspector/InspectorDatabaseAgent.cpp (199241 => 199242)
--- trunk/Source/WebCore/inspector/InspectorDatabaseAgent.cpp 2016-04-08 19:40:48 UTC (rev 199241)
+++ trunk/Source/WebCore/inspector/InspectorDatabaseAgent.cpp 2016-04-08 19:59:25 UTC (rev 199242)
@@ -87,8 +87,8 @@
for (auto& value : rowList->values()) {
RefPtr<InspectorValue> inspectorValue;
switch (value.type()) {
- case SQLValue::StringValue: inspectorValue = InspectorString::create(value.string()); break;
- case SQLValue::NumberValue: inspectorValue = InspectorBasicValue::create(value.number()); break;
+ case SQLValue::StringValue: inspectorValue = InspectorValue::create(value.string()); break;
+ case SQLValue::NumberValue: inspectorValue = InspectorValue::create(value.number()); break;
case SQLValue::NullValue: inspectorValue = InspectorValue::null(); break;
}