diff --git a/src/create_man.py b/src/create_man.py index 5479dc0..b6c7bc0 100644 --- a/src/create_man.py +++ b/src/create_man.py @@ -56,7 +56,7 @@ def process_deps(l): def process_types(entity_input, d_entity): assert type(entity_input) == Entity - l_name = [entity_input.name] + entity_input.others_entity_name + l_name = entity_input.l_name l_entity = [d_entity[name] for name in l_name] l = [ "{0}\t:: {1}\t{2}".format(entity.type, name, build_dim(entity.dim) ) diff --git a/src/entity.py b/src/entity.py index ba1bdf2..88afb7c 100644 --- a/src/entity.py +++ b/src/entity.py @@ -130,13 +130,17 @@ class Entity(object): d = self.d_type_lines return next(line for _,line in d[Begin_provider]+d[Cont_provider] if line.filename[1] == self.name) + @irpy.lazy_property + def l_name(self): + # () -> List[str] + d = self.d_type_lines + return [line.filename[1] for _,line in d[Begin_provider]+d[Cont_provider] ] @irpy.lazy_property - def others_entity_name(self): + def l_others_name(self): # () -> List[str] '''Extract the other entity-name defined''' - d = self.d_type_lines - return [line.filename[1] for _,line in d[Begin_provider]+d[Cont_provider] if not line.filename[1] == self.name] + return [name for name in self.l_name if not name == self.name] @irpy.lazy_property @@ -193,7 +197,7 @@ class Entity(object): " irp_iunit = irp_iunit+1", " inquire(unit=irp_iunit,opened=irp_is_open)", " enddo" ] - for n in [name] + self.others_entity_name: + for n in self.l_name: result += [\ " open(unit=irp_iunit,file='irpf90_%s_'//trim(irp_num),form='FORMATTED',status='UNKNOWN',action='WRITE')"%(n), " write(irp_iunit,*) %s%s"%(n,build_dim(self.d_entity[n].dim,colons=True)), @@ -224,7 +228,7 @@ class Entity(object): " logical :: irp_is_open", " integer :: irp_iunit" ] if command_line.do_debug: - length = len("reader_%s" % (self.name)) + length = len("reader_%s" % (name)) result += [\ " character*(%d) :: irp_here = 'reader_%s'"%(length,name), " call irp_enter(irp_here)" ] @@ -235,7 +239,7 @@ class Entity(object): " do while (irp_is_open)", " inquire(unit=irp_iunit,opened=irp_is_open)", " enddo"] - for n in [name] + self.others: + for n in self.l_name: result += [\ " open(unit=irp_iunit,file='irpf90_%s_'//trim(irp_num),form='FORMATTED',status='OLD',action='READ')"%(n), " read(irp_iunit,*) %s%s"%(n,build_dim(self.cm_d_variable[n].dim,colons=True)), @@ -325,7 +329,7 @@ class Entity(object): return [] else: # We never go here - return [var for var in self.others_entity_name + [self.name] if self.d_entity[var].dim] + return [var for var in l_name if self.d_entity[var].dim] # ~ # ~ # ~ # D e c l a r a t i o n @@ -606,7 +610,7 @@ class Entity(object): if command_line.do_assert or command_line.do_debug: result.append(" call irp_enter(irp_here)") result += build_call_provide(self.to_provide, self.d_entity) - result += flatten(map(build_alloc, [self.same_as] + self.others_entity_name)) + result += flatten(map(build_alloc, self.l_name)) result += [ " if (.not.%s_is_built) then" % (same_as), " call bld_%s" % (same_as), " %s_is_built = .True." % (same_as), "" diff --git a/src/irpf90.py b/src/irpf90.py index 12b654d..a9c8d3c 100644 --- a/src/irpf90.py +++ b/src/irpf90.py @@ -83,8 +83,8 @@ def main(): print ' graph [ordering="out" splines=true overlap=false];' l_main_usr = set([entity for entity in comm_world.d_entity.values() if entity.is_main]) - l_main_head_usr = set([entity for entity in l_main_usr if entity.others_entity_name]) - l_set_main_head_name = [ set([e.name]+e.others_entity_name) for e in l_main_head_usr] + l_main_head_usr = set([entity for entity in l_main_usr if entity.l_others_name]) + l_set_main_head_name = [ set(e.l_name) for e in l_main_head_usr] print_subgraph(l_set_main_head_name,'usr',color='blue') diff --git a/src/irpy_files.py b/src/irpy_files.py index 69d7725..90518a9 100644 --- a/src/irpy_files.py +++ b/src/irpy_files.py @@ -113,7 +113,7 @@ class Irpy_comm_world(object): Ent_part = partial(Entity, buf, icount, comm_world=self) ent = Ent_part() - l_ent += [ent] + [Ent_part(name) for name in ent.others_entity_name] + l_ent += [ent] + [Ent_part(name) for name in ent.l_others_name] # O(2) but who care l_duplicate = [x for x in l_ent if l_ent.count(x) > 1] diff --git a/src/parsed_text.py b/src/parsed_text.py index a5a3d3a..cf57c92 100644 --- a/src/parsed_text.py +++ b/src/parsed_text.py @@ -57,7 +57,7 @@ def check_touch(variables, line, vars, main_vars): if main_var not in variables: error.fail(line, "Variable %s unknown" % (main_var, )) x = variables[main_var] - return [main_var] + x.others_entity_name + return [main_var] + x.l_others_name all_others = uniquify(flatten(map(fun, main_vars))) all_others.sort()