Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1374)

Unified Diff: Source/platform/TracedValue.h

Issue 381653002: Non-template base classes for TracedArray and TracedDictionary. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Removed end methods on base classes Created 6 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/platform/TracedValue.h
diff --git a/Source/platform/TracedValue.h b/Source/platform/TracedValue.h
index 7f751054ea92aa7eb122d661a48432df1af53eb5..db7cb2062a70e46070612476b82ea9b56ff8d91a 100644
--- a/Source/platform/TracedValue.h
+++ b/Source/platform/TracedValue.h
@@ -14,7 +14,9 @@ namespace WebCore {
class JSONArray;
class JSONObject;
class JSONValue;
+class TracedArrayBase;
template<class T> class TracedArray;
+template<class T> class TracedDictionary;
class PLATFORM_EXPORT TracedValueBase {
WTF_MAKE_NONCOPYABLE(TracedValueBase);
@@ -44,98 +46,179 @@ protected:
Vector<RefPtr<JSONValue> > m_stack;
};
-template <class OwnerType>
-class TracedDictionary : public TracedValueBase {
- WTF_MAKE_NONCOPYABLE(TracedDictionary);
+class TracedDictionaryBase : public TracedValueBase {
+ WTF_MAKE_NONCOPYABLE(TracedDictionaryBase);
+private:
+ typedef TracedDictionaryBase SelfType;
public:
- OwnerType& endDictionary()
- {
- ASSERT(m_stack.size() == nestingLevel);
- endCurrentDictionary();
- return *reinterpret_cast<OwnerType*>(this);
- }
-
- TracedDictionary<TracedDictionary<OwnerType> >& beginDictionary(const char* name)
+ TracedDictionary<SelfType>& beginDictionary(const char* name)
{
beginDictionaryNamed(name);
- return *reinterpret_cast<TracedDictionary<TracedDictionary<OwnerType> >* >(this);
+ return *reinterpret_cast<TracedDictionary<SelfType>*>(this);
}
- TracedArray<TracedDictionary<OwnerType> >& beginArray(const char* name)
+ TracedArray<SelfType>& beginArray(const char* name)
{
beginArrayNamed(name);
- return *reinterpret_cast<TracedArray<TracedDictionary<OwnerType> >* >(this);
+ return *reinterpret_cast<TracedArray<SelfType>*>(this);
}
- TracedDictionary<OwnerType>& setInteger(const char* name, int value)
+ SelfType& setInteger(const char* name, int value)
{
TracedValueBase::setInteger(name, value);
return *this;
}
- TracedDictionary<OwnerType>& setDouble(const char* name, double value)
+ SelfType& setDouble(const char* name, double value)
{
TracedValueBase::setDouble(name, value);
return *this;
}
- TracedDictionary<OwnerType>& setBoolean(const char* name, bool value)
+ SelfType& setBoolean(const char* name, bool value)
{
TracedValueBase::setBoolean(name, value);
return *this;
}
- TracedDictionary<OwnerType>& setString(const char* name, const String& value)
+ SelfType& setString(const char* name, const String& value)
{
TracedValueBase::setString(name, value);
return *this;
}
+private:
+ TracedDictionaryBase();
+ ~TracedDictionaryBase();
+};
+
+template <class OwnerType>
+class TracedDictionary : public TracedDictionaryBase {
+ WTF_MAKE_NONCOPYABLE(TracedDictionary);
+private:
+ typedef TracedDictionary<OwnerType> SelfType;
+public:
+ OwnerType& endDictionary()
+ {
+ TracedValueBase::endCurrentDictionary();
+ return *reinterpret_cast<OwnerType*>(this);
+ }
- static const size_t nestingLevel = OwnerType::nestingLevel + 1;
+ TracedDictionary<SelfType>& beginDictionary(const char* name)
+ {
+ TracedDictionaryBase::beginDictionary(name);
+ return *reinterpret_cast<TracedDictionary<SelfType>*>(this);
+ }
+ TracedArray<SelfType>& beginArray(const char* name)
+ {
+ TracedDictionaryBase::beginArray(name);
+ return *reinterpret_cast<TracedArray<SelfType>*>(this);
+ }
+ SelfType& setInteger(const char* name, int value)
+ {
+ TracedDictionaryBase::setInteger(name, value);
+ return *this;
+ }
+ SelfType& setDouble(const char* name, double value)
+ {
+ TracedDictionaryBase::setDouble(name, value);
+ return *this;
+ }
+ SelfType& setBoolean(const char* name, bool value)
+ {
+ TracedDictionaryBase::setBoolean(name, value);
+ return *this;
+ }
+ SelfType& setString(const char* name, const String& value)
+ {
+ TracedDictionaryBase::setString(name, value);
+ return *this;
+ }
private:
TracedDictionary();
~TracedDictionary();
};
-template <class OwnerType>
-class TracedArray : public TracedValueBase {
- WTF_MAKE_NONCOPYABLE(TracedArray);
+class TracedArrayBase : public TracedValueBase {
+ WTF_MAKE_NONCOPYABLE(TracedArrayBase);
+private:
+ typedef TracedArrayBase SelfType;
public:
- TracedDictionary<TracedArray<OwnerType> >& beginDictionary()
+ TracedDictionary<SelfType>& beginDictionary()
{
pushDictionary();
- return *reinterpret_cast<TracedDictionary<TracedArray<OwnerType> >* >(this);
+ return *reinterpret_cast<TracedDictionary<SelfType>*>(this);
}
- TracedDictionary<TracedArray<OwnerType> >& beginArray()
+ TracedArray<SelfType>& beginArray()
{
pushArray();
- return *reinterpret_cast<TracedDictionary<TracedArray<OwnerType> >* >(this);
- }
- OwnerType& endArray()
- {
- ASSERT(m_stack.size() == nestingLevel);
- endCurrentArray();
- return *reinterpret_cast<OwnerType*>(this);
+ return *reinterpret_cast<TracedArray<SelfType>*>(this);
}
- TracedArray<OwnerType>& pushInteger(int value)
+ SelfType& pushInteger(int value)
{
TracedValueBase::pushInteger(value);
return *this;
}
- TracedArray<OwnerType>& pushDouble(double value)
+ SelfType& pushDouble(double value)
{
TracedValueBase::pushDouble(value);
return *this;
}
- TracedArray<OwnerType>& pushBoolean(bool value)
+ SelfType& pushBoolean(bool value)
{
TracedValueBase::pushBoolean(value);
return *this;
}
- TracedArray<OwnerType>& pushString(const String& value)
+ SelfType& pushString(const String& value)
{
TracedValueBase::pushString(value);
return *this;
}
- static const size_t nestingLevel = OwnerType::nestingLevel + 1;
+private:
+ TracedArrayBase();
+ ~TracedArrayBase();
+};
+
+template <class OwnerType>
+class TracedArray : public TracedArrayBase {
+ WTF_MAKE_NONCOPYABLE(TracedArray);
+private:
+ typedef TracedArray<OwnerType> SelfType;
+public:
+ OwnerType& endArray()
+ {
+ TracedValueBase::endCurrentArray();
+ return *reinterpret_cast<OwnerType*>(this);
+ }
+
+ TracedDictionary<SelfType >& beginDictionary()
+ {
+ TracedArrayBase::beginDictionary();
+ return *reinterpret_cast<TracedDictionary<SelfType>*>(this);
+ }
+ TracedArray<SelfType >& beginArray()
+ {
+ TracedArrayBase::beginArray();
+ return *reinterpret_cast<TracedArray<SelfType>*>(this);
+ }
+
+ SelfType& pushInteger(int value)
+ {
+ TracedArrayBase::pushInteger(value);
+ return *this;
+ }
+ SelfType& pushDouble(double value)
+ {
+ TracedArrayBase::pushDouble(value);
+ return *this;
+ }
+ SelfType& pushBoolean(bool value)
+ {
+ TracedArrayBase::pushBoolean(value);
+ return *this;
+ }
+ SelfType& pushString(const String& value)
+ {
+ TracedArrayBase::pushString(value);
+ return *this;
+ }
private:
TracedArray();
@@ -144,35 +227,37 @@ private:
class PLATFORM_EXPORT TracedValue : public TracedValueBase {
WTF_MAKE_NONCOPYABLE(TracedValue);
+private:
+ typedef TracedValue SelfType;
public:
TracedValue();
~TracedValue();
- TracedDictionary<TracedValue>& beginDictionary(const char* name);
- TracedArray<TracedValue>& beginArray(const char* name);
- TracedValue& setInteger(const char* name, int value)
+ TracedDictionary<SelfType>& beginDictionary(const char* name);
+ TracedArray<SelfType>& beginArray(const char* name);
+
+ SelfType& setInteger(const char* name, int value)
{
TracedValueBase::setInteger(name, value);
return *this;
}
- TracedValue& setDouble(const char* name, double value)
+ SelfType& setDouble(const char* name, double value)
{
TracedValueBase::setDouble(name, value);
return *this;
}
- TracedValue& setBoolean(const char* name, bool value)
+ SelfType& setBoolean(const char* name, bool value)
{
TracedValueBase::setBoolean(name, value);
return *this;
}
- TracedValue& setString(const char* name, const String& value)
+ SelfType& setString(const char* name, const String& value)
{
TracedValueBase::setString(name, value);
return *this;
}
- PassRefPtr<TraceEvent::ConvertableToTraceFormat> finish();
- static const size_t nestingLevel = 1;
+ PassRefPtr<TraceEvent::ConvertableToTraceFormat> finish();
};
} // namespace WebCore
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698