- add sources.
[platform/framework/web/crosswalk.git] / src / tools / telemetry / telemetry / core / heap / live_heap_object.py
1 # Copyright 2013 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 class LiveHeapObject(object):
6   """Data structure for representing an object in the heap snapshot.
7
8   Attributes:
9     object_id: int, identifier for the object.
10     type_string: str, describes the type of the node.
11     class_name: str, describes the class of the JavaScript object
12         represented by this LiveHeapObject.
13     edges_to: [RetainingEdge], edges whose end point this LiveHeapObject is.
14     edges_from: [RetainingEdge], edges whose start point this LiveHeapObject is.
15     string: str, for string LiveHeapObjects, contains the string the
16         LiveHeapObject represents. Empty string for LiveHeapObjects which are
17         not strings.
18     name: str, how to refer to this LiveHeapObject.
19   """
20
21   def __init__(self, object_id, type_string, class_name):
22     """Initializes the LiveHeapObject object.
23
24     Args:
25       object_id: int, identifier for the LiveHeapObject.
26       type_string: str, the type of the node.
27       class_name: str, the class of the object this LiveHeapObject represents.
28     """
29     self.object_id = object_id
30     self.type_string = type_string
31     self.class_name = class_name
32     self.edges_to = []
33     self.edges_from = []
34     self.string = ''
35     self.name = ''
36
37   def AddEdgeTo(self, edge):
38     """Associates an Edge with the LiveHeapObject (the end point).
39
40     Args:
41       edge: Edge, an edge whose end point this LiveHeapObject is.
42     """
43     self.edges_to.append(edge)
44
45   def AddEdgeFrom(self, edge):
46     """Associates an Edge with the LiveHeapObject (the start point).
47
48     Args:
49       edge: Edge, an edge whose start point this LiveHeapObject is.
50     """
51     self.edges_from.append(edge)
52
53   def __str__(self):
54     prefix = 'LiveHeapObject(' + str(self.object_id) + ' '
55     if self.type_string == 'object':
56       return prefix + self.class_name + ')'
57     return prefix + self.type_string + ')'