1// Copyright 2014 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef WeakNodeMap_h
6#define WeakNodeMap_h
7
8#include "wtf/HashMap.h"
9
10namespace blink {
11
12// Oilpan supports weak maps, so we no longer need WeakNodeMap.
13#if !ENABLE(OILPAN)
14class Node;
15class NodeToWeakNodeMaps;
16
17class WeakNodeMap {
18public:
19    ~WeakNodeMap();
20
21    void put(Node*, int value);
22    int value(Node*);
23    Node* node(int value);
24
25private:
26    // FIXME: This should not be friends with Node, we should expose a proper API and not
27    // let the map directly set flags.
28    friend class Node;
29    static void notifyNodeDestroyed(Node*);
30
31    friend class NodeToWeakNodeMaps;
32    void nodeDestroyed(Node*);
33
34    typedef HashMap<Node*, int> NodeToValue;
35    NodeToValue m_nodeToValue;
36    typedef HashMap<int, Node*> ValueToNode;
37    ValueToNode m_valueToNode;
38};
39#endif
40
41}
42
43#endif
44