CodeQL / Analyze (actions) (push) Canceled after 0s
CodeQL / Analyze (python) (push) Canceled after 0s
pre-commit / pre-commit (push) Canceled after 0s
Multi-Arch CI / setup (push) Canceled after 0s
Publish build_manylinux_x86_64 images / publish_build_manylinux_x86_64 (push) Canceled after 0s
Setup (Multi-Arch) / setup (push) Canceled after 0s
Multi-Arch CI / Linux::${{ fromJSON(needs.setup.outputs.linux_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubi10 image / publish_no_rocm_image_ubi10 (push) Canceled after 0s
Multi-Arch CI / Windows::${{ fromJSON(needs.setup.outputs.windows_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Multi-Arch CI / Manifest Diff (push) Canceled after 0s
TheRock Manifest Diff Report / Generate Manifest Diff Report (push) Canceled after 0s
Multi-Arch CI / CI Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_ocl_rt images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_rocgdb images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Unit Tests / Unit Tests :: ubuntu-24.04 (push) Canceled after 0s
Unit Tests / Unit Tests :: windows-2022 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_media (push) Canceled after 0s
Unit Tests / Unit Tests Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_openmpi (push) Canceled after 0s
122 lines
4.1 KiB
OpenEdge ABL
122 lines
4.1 KiB
OpenEdge ABL
STRING_EXTENSION_OUTSIDE(SBStructuredData)
|
|
|
|
%extend lldb::SBStructuredData {
|
|
#ifdef SWIGPYTHON
|
|
%pythoncode%{
|
|
def __len__(self):
|
|
'''Return the number of element in a lldb.SBStructuredData object.'''
|
|
return self.GetSize()
|
|
|
|
def __iter__(self):
|
|
'''Iterate over all the elements in a lldb.SBStructuredData object.'''
|
|
data_type = self.GetType()
|
|
if data_type == eStructuredDataTypeArray:
|
|
for i in range(self.GetSize()):
|
|
yield self.GetItemAtIndex(i).dynamic
|
|
return
|
|
elif data_type == eStructuredDataTypeDictionary:
|
|
keys = SBStringList()
|
|
self.GetKeys(keys)
|
|
return iter(keys)
|
|
else:
|
|
raise TypeError(f"cannot iterate {self.type_name(data_type)} type")
|
|
|
|
def __getitem__(self, key):
|
|
data_type = self.GetType()
|
|
if data_type == eStructuredDataTypeArray:
|
|
if not isinstance(key, int):
|
|
raise TypeError("subscript index must be an integer")
|
|
count = len(self)
|
|
if -count <= key < count:
|
|
key %= count
|
|
return self.GetItemAtIndex(key).dynamic
|
|
raise IndexError("index out of range")
|
|
elif data_type == eStructuredDataTypeDictionary:
|
|
if not isinstance(key, str):
|
|
raise TypeError("subscript key must be a string")
|
|
return self.GetValueForKey(key).dynamic
|
|
else:
|
|
raise TypeError(f"cannot subscript {self.type_name(data_type)} type")
|
|
|
|
def __str__(self):
|
|
data_type = self.GetType()
|
|
if data_type in (
|
|
eStructuredDataTypeString,
|
|
eStructuredDataTypeInteger,
|
|
eStructuredDataTypeSignedInteger,
|
|
eStructuredDataTypeFloat,
|
|
):
|
|
return str(self.dynamic)
|
|
else:
|
|
return repr(self)
|
|
|
|
def __int__(self):
|
|
data_type = self.GetType()
|
|
if data_type in (
|
|
eStructuredDataTypeInteger,
|
|
eStructuredDataTypeSignedInteger,
|
|
):
|
|
return self.dynamic
|
|
else:
|
|
raise TypeError(f"cannot convert {self.type_name(data_type)} to int")
|
|
|
|
def __float__(self):
|
|
data_type = self.GetType()
|
|
if data_type in (
|
|
eStructuredDataTypeFloat,
|
|
eStructuredDataTypeInteger,
|
|
eStructuredDataTypeSignedInteger,
|
|
):
|
|
return float(self.dynamic)
|
|
else:
|
|
raise TypeError(f"cannot convert {self.type_name(data_type)} to float")
|
|
|
|
@property
|
|
def dynamic(self):
|
|
data_type = self.GetType()
|
|
if data_type == eStructuredDataTypeNull:
|
|
return None
|
|
elif data_type == eStructuredDataTypeBoolean:
|
|
return self.GetBooleanValue()
|
|
elif data_type == eStructuredDataTypeInteger:
|
|
return self.GetUnsignedIntegerValue()
|
|
elif data_type == eStructuredDataTypeSignedInteger:
|
|
return self.GetSignedIntegerValue()
|
|
elif data_type == eStructuredDataTypeFloat:
|
|
return self.GetFloatValue()
|
|
elif data_type == eStructuredDataTypeString:
|
|
size = len(self) or 1023
|
|
return self.GetStringValue(size + 1)
|
|
elif data_type == eStructuredDataTypeGeneric:
|
|
return self.GetGenericValue()
|
|
else:
|
|
return self
|
|
|
|
@staticmethod
|
|
def type_name(t):
|
|
if t == eStructuredDataTypeNull:
|
|
return "null"
|
|
elif t == eStructuredDataTypeBoolean:
|
|
return "boolean"
|
|
elif t == eStructuredDataTypeInteger:
|
|
return "integer"
|
|
elif t == eStructuredDataTypeSignedInteger:
|
|
return "integer"
|
|
elif t == eStructuredDataTypeFloat:
|
|
return "float"
|
|
elif t == eStructuredDataTypeString:
|
|
return "string"
|
|
elif t == eStructuredDataTypeArray:
|
|
return "array"
|
|
elif t == eStructuredDataTypeDictionary:
|
|
return "dictionary"
|
|
elif t == eStructuredDataTypeGeneric:
|
|
return "generic"
|
|
elif t == eStructuredDataTypeInvalid:
|
|
return "invalid"
|
|
else:
|
|
raise TypeError(f"unknown structured data type: {t}")
|
|
%}
|
|
#endif
|
|
}
|