xref: /freebsd/contrib/llvm-project/lldb/bindings/interface/SBTypeEnumMemberExtensions.i (revision 5f757f3ff9144b609b3c433dfd370cc6bdc191ad)
1 STRING_EXTENSION_LEVEL_OUTSIDE(SBTypeEnumMember, lldb::eDescriptionLevelBrief)
2 %extend lldb::SBTypeEnumMember {
3 #ifdef SWIGPYTHON
4     %pythoncode %{
5         def __iter__(self):
6             '''Iterate over all members in a lldb.SBTypeEnumMemberList object.'''
7             return lldb_iter(self, 'GetSize', 'GetTypeEnumMemberAtIndex')
8 
9         def __len__(self):
10             '''Return the number of members in a lldb.SBTypeEnumMemberList object.'''
11             return self.GetSize()
12 
13         name = property(GetName, None, doc='''A read only property that returns the name for this enum member as a string.''')
14         type = property(GetType, None, doc='''A read only property that returns an lldb object that represents the type (lldb.SBType) for this enum member.''')
15         signed = property(GetValueAsSigned, None, doc='''A read only property that returns the value of this enum member as a signed integer.''')
16         unsigned = property(GetValueAsUnsigned, None, doc='''A read only property that returns the value of this enum member as a unsigned integer.''')
17     %}
18 #endif
19 }
20 
21 %extend lldb::SBTypeEnumMemberList {
22 #ifdef SWIGPYTHON
23     %pythoncode %{
24         def __iter__(self):
25             '''Iterate over all members in a lldb.SBTypeEnumMemberList object.'''
26             return lldb_iter(self, 'GetSize', 'GetTypeEnumMemberAtIndex')
27 
28         def __len__(self):
29             '''Return the number of members in a lldb.SBTypeEnumMemberList object.'''
30             return self.GetSize()
31 
32         def __getitem__(self, key):
33           num_elements = self.GetSize()
34           if type(key) is int:
35               if -num_elements <= key < num_elements:
36                   key %= num_elements
37                   return self.GetTypeEnumMemberAtIndex(key)
38           elif type(key) is str:
39               for idx in range(num_elements):
40                   item = self.GetTypeEnumMemberAtIndex(idx)
41                   if item.name == key:
42                       return item
43           return None
44     %}
45 #endif
46 }
47