16d91e0a095183e02a84b2833c5cbe46e7963e8baJohnny Chen//===-- SWIG Interface for SBSymbolContextList ------------------*- C++ -*-===// 26d91e0a095183e02a84b2833c5cbe46e7963e8baJohnny Chen// 36d91e0a095183e02a84b2833c5cbe46e7963e8baJohnny Chen// The LLVM Compiler Infrastructure 46d91e0a095183e02a84b2833c5cbe46e7963e8baJohnny Chen// 56d91e0a095183e02a84b2833c5cbe46e7963e8baJohnny Chen// This file is distributed under the University of Illinois Open Source 66d91e0a095183e02a84b2833c5cbe46e7963e8baJohnny Chen// License. See LICENSE.TXT for details. 76d91e0a095183e02a84b2833c5cbe46e7963e8baJohnny Chen// 86d91e0a095183e02a84b2833c5cbe46e7963e8baJohnny Chen//===----------------------------------------------------------------------===// 96d91e0a095183e02a84b2833c5cbe46e7963e8baJohnny Chen 106d91e0a095183e02a84b2833c5cbe46e7963e8baJohnny Chennamespace lldb { 116d91e0a095183e02a84b2833c5cbe46e7963e8baJohnny Chen 126d91e0a095183e02a84b2833c5cbe46e7963e8baJohnny Chen%feature("docstring", 136d91e0a095183e02a84b2833c5cbe46e7963e8baJohnny Chen"Represents a list of symbol context object. See also SBSymbolContext. 146d91e0a095183e02a84b2833c5cbe46e7963e8baJohnny Chen 156d91e0a095183e02a84b2833c5cbe46e7963e8baJohnny ChenFor example (from test/python_api/target/TestTargetAPI.py), 166d91e0a095183e02a84b2833c5cbe46e7963e8baJohnny Chen 176d91e0a095183e02a84b2833c5cbe46e7963e8baJohnny Chen def find_functions(self, exe_name): 186d91e0a095183e02a84b2833c5cbe46e7963e8baJohnny Chen '''Exercise SBTaget.FindFunctions() API.''' 196d91e0a095183e02a84b2833c5cbe46e7963e8baJohnny Chen exe = os.path.join(os.getcwd(), exe_name) 206d91e0a095183e02a84b2833c5cbe46e7963e8baJohnny Chen 216d91e0a095183e02a84b2833c5cbe46e7963e8baJohnny Chen # Create a target by the debugger. 226d91e0a095183e02a84b2833c5cbe46e7963e8baJohnny Chen target = self.dbg.CreateTarget(exe) 236d91e0a095183e02a84b2833c5cbe46e7963e8baJohnny Chen self.assertTrue(target, VALID_TARGET) 246d91e0a095183e02a84b2833c5cbe46e7963e8baJohnny Chen 256d91e0a095183e02a84b2833c5cbe46e7963e8baJohnny Chen list = lldb.SBSymbolContextList() 266d91e0a095183e02a84b2833c5cbe46e7963e8baJohnny Chen num = target.FindFunctions('c', lldb.eFunctionNameTypeAuto, False, list) 276d91e0a095183e02a84b2833c5cbe46e7963e8baJohnny Chen self.assertTrue(num == 1 and list.GetSize() == 1) 286d91e0a095183e02a84b2833c5cbe46e7963e8baJohnny Chen 296d91e0a095183e02a84b2833c5cbe46e7963e8baJohnny Chen for sc in list: 306d91e0a095183e02a84b2833c5cbe46e7963e8baJohnny Chen self.assertTrue(sc.GetModule().GetFileSpec().GetFilename() == exe_name) 316d91e0a095183e02a84b2833c5cbe46e7963e8baJohnny Chen self.assertTrue(sc.GetSymbol().GetName() == 'c') 326d91e0a095183e02a84b2833c5cbe46e7963e8baJohnny Chen") SBSymbolContextList; 336d91e0a095183e02a84b2833c5cbe46e7963e8baJohnny Chenclass SBSymbolContextList 346d91e0a095183e02a84b2833c5cbe46e7963e8baJohnny Chen{ 356d91e0a095183e02a84b2833c5cbe46e7963e8baJohnny Chenpublic: 366d91e0a095183e02a84b2833c5cbe46e7963e8baJohnny Chen SBSymbolContextList (); 376d91e0a095183e02a84b2833c5cbe46e7963e8baJohnny Chen 386d91e0a095183e02a84b2833c5cbe46e7963e8baJohnny Chen SBSymbolContextList (const lldb::SBSymbolContextList& rhs); 396d91e0a095183e02a84b2833c5cbe46e7963e8baJohnny Chen 406d91e0a095183e02a84b2833c5cbe46e7963e8baJohnny Chen ~SBSymbolContextList (); 416d91e0a095183e02a84b2833c5cbe46e7963e8baJohnny Chen 426d91e0a095183e02a84b2833c5cbe46e7963e8baJohnny Chen bool 436d91e0a095183e02a84b2833c5cbe46e7963e8baJohnny Chen IsValid () const; 446d91e0a095183e02a84b2833c5cbe46e7963e8baJohnny Chen 456d91e0a095183e02a84b2833c5cbe46e7963e8baJohnny Chen uint32_t 466d91e0a095183e02a84b2833c5cbe46e7963e8baJohnny Chen GetSize() const; 476d91e0a095183e02a84b2833c5cbe46e7963e8baJohnny Chen 486d91e0a095183e02a84b2833c5cbe46e7963e8baJohnny Chen SBSymbolContext 496d91e0a095183e02a84b2833c5cbe46e7963e8baJohnny Chen GetContextAtIndex (uint32_t idx); 506d91e0a095183e02a84b2833c5cbe46e7963e8baJohnny Chen 516d91e0a095183e02a84b2833c5cbe46e7963e8baJohnny Chen void 527dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Clayton Append (lldb::SBSymbolContext &sc); 537dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Clayton 547dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Clayton void 557dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Clayton Append (lldb::SBSymbolContextList &sc_list); 567dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Clayton 577dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Clayton bool 587dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Clayton GetDescription (lldb::SBStream &description); 597dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Clayton 607dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Clayton void 616d91e0a095183e02a84b2833c5cbe46e7963e8baJohnny Chen Clear(); 627dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Clayton 637dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Clayton %pythoncode %{ 647dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Clayton def __len__(self): 653cae38bc36877dbe1504c6fa2dedbcab71fe5780Filipe Cabecinhas return int(self.GetSize()) 667dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Clayton 677dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Clayton def __getitem__(self, key): 687dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Clayton count = len(self) 697dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Clayton if type(key) is int: 707dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Clayton if key < count: 717dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Clayton return self.GetContextAtIndex(key) 727dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Clayton else: 737dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Clayton raise IndexError 747dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Clayton raise TypeError 757dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Clayton 767dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Clayton def get_module_array(self): 777dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Clayton a = [] 787dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Clayton for i in range(len(self)): 797dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Clayton obj = self.GetContextAtIndex(i).module 807dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Clayton if obj: 817dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Clayton a.append(obj) 827dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Clayton return a 837dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Clayton 847dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Clayton def get_compile_unit_array(self): 857dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Clayton a = [] 867dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Clayton for i in range(len(self)): 877dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Clayton obj = self.GetContextAtIndex(i).compile_unit 887dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Clayton if obj: 897dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Clayton a.append(obj) 907dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Clayton return a 917dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Clayton def get_function_array(self): 927dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Clayton a = [] 937dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Clayton for i in range(len(self)): 947dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Clayton obj = self.GetContextAtIndex(i).function 957dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Clayton if obj: 967dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Clayton a.append(obj) 977dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Clayton return a 987dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Clayton def get_block_array(self): 997dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Clayton a = [] 1007dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Clayton for i in range(len(self)): 1017dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Clayton obj = self.GetContextAtIndex(i).block 1027dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Clayton if obj: 1037dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Clayton a.append(obj) 1047dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Clayton return a 1057dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Clayton def get_symbol_array(self): 1067dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Clayton a = [] 1077dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Clayton for i in range(len(self)): 1087dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Clayton obj = self.GetContextAtIndex(i).symbol 1097dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Clayton if obj: 1107dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Clayton a.append(obj) 1117dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Clayton return a 1127dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Clayton def get_line_entry_array(self): 1137dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Clayton a = [] 1147dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Clayton for i in range(len(self)): 1157dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Clayton obj = self.GetContextAtIndex(i).line_entry 1167dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Clayton if obj: 1177dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Clayton a.append(obj) 1187dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Clayton return a 1197dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Clayton __swig_getmethods__["modules"] = get_module_array 1202a94be1aa46c90d6749d8c96ed396d5ebde452cdGreg Clayton if _newclass: modules = property(get_module_array, None, doc='''Returns a list() of lldb.SBModule objects, one for each module in each SBSymbolContext object in this list.''') 1217dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Clayton 1227dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Clayton __swig_getmethods__["compile_units"] = get_compile_unit_array 1232a94be1aa46c90d6749d8c96ed396d5ebde452cdGreg Clayton if _newclass: compile_units = property(get_compile_unit_array, None, doc='''Returns a list() of lldb.SBCompileUnit objects, one for each compile unit in each SBSymbolContext object in this list.''') 1247dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Clayton 1257dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Clayton __swig_getmethods__["functions"] = get_function_array 1262a94be1aa46c90d6749d8c96ed396d5ebde452cdGreg Clayton if _newclass: functions = property(get_function_array, None, doc='''Returns a list() of lldb.SBFunction objects, one for each function in each SBSymbolContext object in this list.''') 1277dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Clayton 1287dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Clayton __swig_getmethods__["blocks"] = get_block_array 1292a94be1aa46c90d6749d8c96ed396d5ebde452cdGreg Clayton if _newclass: blocks = property(get_block_array, None, doc='''Returns a list() of lldb.SBBlock objects, one for each block in each SBSymbolContext object in this list.''') 1307dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Clayton 1317dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Clayton __swig_getmethods__["line_entries"] = get_line_entry_array 1322a94be1aa46c90d6749d8c96ed396d5ebde452cdGreg Clayton if _newclass: line_entries = property(get_line_entry_array, None, doc='''Returns a list() of lldb.SBLineEntry objects, one for each line entry in each SBSymbolContext object in this list.''') 1337dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Clayton 1347dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Clayton __swig_getmethods__["symbols"] = get_symbol_array 1352a94be1aa46c90d6749d8c96ed396d5ebde452cdGreg Clayton if _newclass: symbols = property(get_symbol_array, None, doc='''Returns a list() of lldb.SBSymbol objects, one for each symbol in each SBSymbolContext object in this list.''') 1367dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Clayton %} 1377dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Clayton 1386d91e0a095183e02a84b2833c5cbe46e7963e8baJohnny Chen}; 1396d91e0a095183e02a84b2833c5cbe46e7963e8baJohnny Chen 1406d91e0a095183e02a84b2833c5cbe46e7963e8baJohnny Chen} // namespace lldb 141