def create_region(self, name, select, kind='cell', parent=None, check_parents=True, functions=None, add_to_regions=True): """ Region factory constructor. Append the new region to self.regions list. """ if check_parents: parents = get_parents(select) for p in parents: if p not in [region.name for region in self.regions]: msg = 'parent region %s of %s not found!' % (p, name) raise ValueError(msg) stack = self._region_stack try: self._bnf.parseString(select) except ParseException: print 'parsing failed:', select raise region = visit_stack(stack, region_op, region_leaf(self, self.regions, select, functions)) region.name = name region.definition = select region.set_kind(kind) region.parent = parent region.update_shape() if add_to_regions: self.regions.append(region) return region
def create_region(self, name, select, flags=None, check_parents=True, functions=None, add_to_regions=True): """Region factory constructor. Append the new region to self.regions list.""" if flags is None: flags = {} if check_parents: parents = get_parents(select) for p in parents: if p not in [region.name for region in self.regions]: msg = 'parent region %s of %s not found!' % (p, name) raise ValueError(msg) stack = self._region_stack try: self._bnf.parseString(select) except ParseException: print 'parsing failed:', select raise region = visit_stack( stack, region_op, region_leaf(self, self.regions, select, functions)) region.name = name forbid = flags.get('forbid', None) if forbid: fb = re.compile('^group +\d+(\s+\d+)*$').match(forbid) if fb: groups = forbid[5:].strip().split() forbid = [int(ii) for ii in groups] else: raise ValueError('bad forbid! (%s)' % forbid) forbidden_igs = [self.mat_ids_to_i_gs[mat_id] for mat_id in forbid] region.delete_groups(forbidden_igs) region.switch_cells(flags.get('can_cells', True)) region.complete_description(self.ed, self.fa) if add_to_regions: self.regions.append(region) return region
def create_region(self, name, select, flags=None, check_parents=True, functions=None, add_to_regions=True): """ Region factory constructor. Append the new region to self.regions list. """ if flags is None: flags = {} if check_parents: parents = get_parents(select) for p in parents: if p not in [region.name for region in self.regions]: msg = 'parent region %s of %s not found!' % (p, name) raise ValueError(msg) stack = self._region_stack try: self._bnf.parseString(select) except ParseException: print 'parsing failed:', select raise region = visit_stack(stack, region_op, region_leaf(self, self.regions, select, functions)) region.name = name forbid = flags.get('forbid', None) if forbid: fb = re.compile('^group +\d+(\s+\d+)*$').match(forbid) if fb: groups = forbid[5:].strip().split() forbid = [int(ii) for ii in groups] else: raise ValueError('bad forbid! (%s)' % forbid) forbidden_igs = [self.mat_ids_to_i_gs[mat_id] for mat_id in forbid] region.delete_groups(forbidden_igs) region.switch_cells(flags.get('can_cells', True)) region.complete_description(self.ed, self.fa) if add_to_regions: self.regions.append(region) return region
def create_region(self, name, select, kind='cell', parent=None, check_parents=True, functions=None, add_to_regions=True): """ Region factory constructor. Append the new region to self.regions list. """ if check_parents: parents = get_parents(select) for p in parents: if p not in [region.name for region in self.regions]: msg = 'parent region %s of %s not found!' % (p, name) raise ValueError(msg) stack = self._region_stack try: self._bnf.parseString(select) except ParseException: print 'parsing failed:', select raise region = visit_stack( stack, region_op, region_leaf(self, self.regions, select, functions)) region.name = name region.definition = select region.set_kind(kind) region.parent = parent region.update_shape() if add_to_regions: self.regions.append(region) return region