Loading tools/net/ynl/ynl-gen-c.py +29 −12 Original line number Diff line number Diff line Loading @@ -854,18 +854,26 @@ class Family(SpecFamily): self.root_sets[op['attribute-set']]['reply'].update(rsp_attrs) def _load_nested_sets(self): for root_set, rs_members in self.root_sets.items(): for attr, spec in self.attr_sets[root_set].items(): if 'nested-attributes' in spec: inherit = set() attr_set_queue = list(self.root_sets.keys()) attr_set_seen = set(self.root_sets.keys()) while len(attr_set_queue): a_set = attr_set_queue.pop(0) for attr, spec in self.attr_sets[a_set].items(): if 'nested-attributes' not in spec: continue nested = spec['nested-attributes'] if nested not in attr_set_seen: attr_set_queue.append(nested) attr_set_seen.add(nested) inherit = set() if nested not in self.root_sets: if nested not in self.pure_nested_structs: self.pure_nested_structs[nested] = Struct(self, nested, inherited=inherit) if attr in rs_members['request']: self.pure_nested_structs[nested].request = True if attr in rs_members['reply']: self.pure_nested_structs[nested].reply = True else: raise Exception(f'Using attr set as root and nested not supported - {nested}') if 'type-value' in spec: if nested in self.root_sets: Loading @@ -875,6 +883,15 @@ class Family(SpecFamily): inherit.add('idx') self.pure_nested_structs[nested].set_inherited(inherit) for root_set, rs_members in self.root_sets.items(): for attr, spec in self.attr_sets[root_set].items(): if 'nested-attributes' in spec: nested = spec['nested-attributes'] if attr in rs_members['request']: self.pure_nested_structs[nested].request = True if attr in rs_members['reply']: self.pure_nested_structs[nested].reply = True # Try to reorder according to dependencies pns_key_list = list(self.pure_nested_structs.keys()) pns_key_seen = set() Loading Loading
tools/net/ynl/ynl-gen-c.py +29 −12 Original line number Diff line number Diff line Loading @@ -854,18 +854,26 @@ class Family(SpecFamily): self.root_sets[op['attribute-set']]['reply'].update(rsp_attrs) def _load_nested_sets(self): for root_set, rs_members in self.root_sets.items(): for attr, spec in self.attr_sets[root_set].items(): if 'nested-attributes' in spec: inherit = set() attr_set_queue = list(self.root_sets.keys()) attr_set_seen = set(self.root_sets.keys()) while len(attr_set_queue): a_set = attr_set_queue.pop(0) for attr, spec in self.attr_sets[a_set].items(): if 'nested-attributes' not in spec: continue nested = spec['nested-attributes'] if nested not in attr_set_seen: attr_set_queue.append(nested) attr_set_seen.add(nested) inherit = set() if nested not in self.root_sets: if nested not in self.pure_nested_structs: self.pure_nested_structs[nested] = Struct(self, nested, inherited=inherit) if attr in rs_members['request']: self.pure_nested_structs[nested].request = True if attr in rs_members['reply']: self.pure_nested_structs[nested].reply = True else: raise Exception(f'Using attr set as root and nested not supported - {nested}') if 'type-value' in spec: if nested in self.root_sets: Loading @@ -875,6 +883,15 @@ class Family(SpecFamily): inherit.add('idx') self.pure_nested_structs[nested].set_inherited(inherit) for root_set, rs_members in self.root_sets.items(): for attr, spec in self.attr_sets[root_set].items(): if 'nested-attributes' in spec: nested = spec['nested-attributes'] if attr in rs_members['request']: self.pure_nested_structs[nested].request = True if attr in rs_members['reply']: self.pure_nested_structs[nested].reply = True # Try to reorder according to dependencies pns_key_list = list(self.pure_nested_structs.keys()) pns_key_seen = set() Loading