Exemple #1
0
    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)