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

Unified Diff: Source/core/dom/StaticNodeList.h

Issue 465483002: Merge NamedNodesCollection and StaticNodeList classes (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Rebase Created 6 years, 4 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 | « Source/core/dom/SelectorQuery.cpp ('k') | Source/core/dom/StaticNodeList.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/core/dom/StaticNodeList.h
diff --git a/Source/core/dom/StaticNodeList.h b/Source/core/dom/StaticNodeList.h
index 081ad4431be5bc2a97e868f4e21a0316a7534324..6f9f46dbb5fbe748d3bf64ff2cef7fa8296aa1f6 100644
--- a/Source/core/dom/StaticNodeList.h
+++ b/Source/core/dom/StaticNodeList.h
@@ -29,41 +29,82 @@
#ifndef StaticNodeList_h
#define StaticNodeList_h
-#include "core/dom/Node.h"
#include "core/dom/NodeList.h"
#include "wtf/PassRefPtr.h"
#include "wtf/RefPtr.h"
#include "wtf/Vector.h"
+#include <v8.h>
namespace blink {
+class Element;
class Node;
-class StaticNodeList FINAL : public NodeList {
+template <typename NodeType>
+class StaticNodeTypeList FINAL : public NodeList {
public:
- static PassRefPtrWillBeRawPtr<StaticNodeList> adopt(WillBeHeapVector<RefPtrWillBeMember<Node> >& nodes);
+ static PassRefPtrWillBeRawPtr<StaticNodeTypeList> adopt(WillBeHeapVector<RefPtrWillBeMember<NodeType> >& nodes);
- static PassRefPtrWillBeRawPtr<StaticNodeList> createEmpty()
+ static PassRefPtrWillBeRawPtr<StaticNodeTypeList> createEmpty()
{
- return adoptRefWillBeNoop(new StaticNodeList);
+ return adoptRefWillBeNoop(new StaticNodeTypeList);
}
- virtual ~StaticNodeList();
+ virtual ~StaticNodeTypeList();
virtual unsigned length() const OVERRIDE;
- virtual Node* item(unsigned index) const OVERRIDE;
+ virtual NodeType* item(unsigned index) const OVERRIDE;
virtual void trace(Visitor*) OVERRIDE;
private:
ptrdiff_t AllocationSize()
{
- return m_nodes.capacity() * sizeof(RefPtrWillBeMember<Node>);
+ return m_nodes.capacity() * sizeof(RefPtrWillBeMember<NodeType>);
}
- WillBeHeapVector<RefPtrWillBeMember<Node> > m_nodes;
+ WillBeHeapVector<RefPtrWillBeMember<NodeType> > m_nodes;
};
+typedef StaticNodeTypeList<Node> StaticNodeList;
+typedef StaticNodeTypeList<Element> StaticElementList;
+
+template <typename NodeType>
+PassRefPtrWillBeRawPtr<StaticNodeTypeList<NodeType> > StaticNodeTypeList<NodeType>::adopt(WillBeHeapVector<RefPtrWillBeMember<NodeType> >& nodes)
+{
+ RefPtrWillBeRawPtr<StaticNodeTypeList<NodeType> > nodeList = adoptRefWillBeNoop(new StaticNodeTypeList<NodeType>);
+ nodeList->m_nodes.swap(nodes);
+ v8::Isolate::GetCurrent()->AdjustAmountOfExternalAllocatedMemory(nodeList->AllocationSize());
+ return nodeList.release();
+}
+
+template <typename NodeType>
+StaticNodeTypeList<NodeType>::~StaticNodeTypeList()
+{
+ v8::Isolate::GetCurrent()->AdjustAmountOfExternalAllocatedMemory(-AllocationSize());
+}
+
+template <typename NodeType>
+unsigned StaticNodeTypeList<NodeType>::length() const
+{
+ return m_nodes.size();
+}
+
+template <typename NodeType>
+NodeType* StaticNodeTypeList<NodeType>::item(unsigned index) const
+{
+ if (index < m_nodes.size())
+ return m_nodes[index].get();
+ return 0;
+}
+
+template <typename NodeType>
+void StaticNodeTypeList<NodeType>::trace(Visitor* visitor)
+{
+ visitor->trace(m_nodes);
+ NodeList::trace(visitor);
+}
+
} // namespace blink
#endif // StaticNodeList_h
« no previous file with comments | « Source/core/dom/SelectorQuery.cpp ('k') | Source/core/dom/StaticNodeList.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698