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