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 5class RetainingEdge(object): 6 """Data structure for representing a retainer relationship between objects. 7 8 Attributes: 9 from_object_id: int, id of the object which is the start point of this 10 RetainingEdge. Used when the corresponding LiveHeapObject object is not 11 yet contstructed. 12 to_object_id: int, id of the object which is the end point of this 13 RetainingEdge. Used when the corresponding LiveHeapObject object is not 14 yet contstructed. 15 from_object: LiveHeapObject, the start point of this RetainingEdge. 16 to_object: LiveHeapObject, the end point of this RetainingEdge. 17 type_string: str, the type of the RetainingEdge. 18 name_string: str, the JavaScript attribute name this RetainingEdge 19 represents. 20 """ 21 22 def __init__(self, from_object_id, to_object_id, type_string, name_string): 23 """Initializes the RetainingEdge object. 24 25 Args: 26 from_object_id: int, id of the object which is the start point of this 27 RetainingEdge. Used when the corresponding LiveHeapObject object is 28 not yet contstructed. 29 to_object_id: int, id of the object which is the end point of this 30 RetainingEdge. Used when the corresponding LiveHeapObject object is 31 not yet contstructed. 32 type_string: str, the type of the RetainingEdge. 33 name_string: str, the JavaScript attribute name this RetainingEdge 34 represents. 35 """ 36 self.from_object_id = from_object_id 37 self.to_object_id = to_object_id 38 self.from_object = {} 39 self.to_object = {} 40 self.type_string = type_string 41 self.name_string = name_string 42 43 def SetFromObject(self, obj): 44 self.from_object = obj 45 return self 46 47 def SetToObject(self, obj): 48 self.to_object = obj 49 return self 50 51 def __str__(self): 52 return 'RetainingEdge(' + self.type_string + ' ' + self.name_string + ')' 53