(self)
| 999 | return child |
| 1000 | |
| 1001 | def get_field(self): |
| 1002 | |
| 1003 | list_names = ['lengths', 'values'] |
| 1004 | map_names = ['lengths', 'keys', 'values'] |
| 1005 | |
| 1006 | if len(self.children) == 0 or self.field is not None: |
| 1007 | if self.field is None: |
| 1008 | return Struct() |
| 1009 | else: |
| 1010 | return self.field |
| 1011 | |
| 1012 | child_names = [] |
| 1013 | for child in self.children: |
| 1014 | child_names.append(child.name) |
| 1015 | |
| 1016 | if (set(child_names) == set(list_names)): |
| 1017 | for child in self.children: |
| 1018 | if child.name == 'values': |
| 1019 | values_field = child.get_field() |
| 1020 | else: |
| 1021 | lengths_field = child.get_field() |
| 1022 | self.field = List( |
| 1023 | values_field, |
| 1024 | lengths_blob=lengths_field |
| 1025 | ) |
| 1026 | self.type_str = "List" |
| 1027 | return self.field |
| 1028 | elif (set(child_names) == set(map_names)): |
| 1029 | for child in self.children: |
| 1030 | if child.name == 'keys': |
| 1031 | key_field = child.get_field() |
| 1032 | elif child.name == 'values': |
| 1033 | values_field = child.get_field() |
| 1034 | else: |
| 1035 | lengths_field = child.get_field() |
| 1036 | self.field = Map( |
| 1037 | key_field, |
| 1038 | values_field, |
| 1039 | lengths_blob=lengths_field |
| 1040 | ) |
| 1041 | self.type_str = "Map" |
| 1042 | return self.field |
| 1043 | |
| 1044 | else: |
| 1045 | struct_fields = [] |
| 1046 | for child in self.children: |
| 1047 | struct_fields.append((child.name, child.get_field())) |
| 1048 | |
| 1049 | self.field = Struct(*struct_fields) |
| 1050 | self.type_str = "Struct" |
| 1051 | return self.field |
| 1052 | |
| 1053 | def print_recursively(self): |
| 1054 | for child in self.children: |
no test coverage detected