def _process_virtual_config(self, block_name, virtual, virtuals, realizations, biiout): '''Params: block_name : BlockName virtual: dictionary ''' for virtual_parse_result in virtual.itervalues(): for cell_name in virtual_parse_result.apply: block_cell_name = block_name + cell_name try: old_cell = self.block_holder[cell_name].cell except KeyError: old_cell = None #Build a new virtual cell with the new data, keeping old if existing new_cell = VirtualCell(block_cell_name, virtual_parse_result.code, virtual_parse_result.leaves) if old_cell is None: new_cell.type = BiiType.from_extension(block_cell_name.extension) else: new_cell.type = old_cell.type virtual_resource = Resource(new_cell, None) self.block_holder.add_resource(virtual_resource) self._process_leaves(new_cell, realizations, biiout) virtuals.add(block_cell_name)