456 instance_number += 1 |
456 instance_number += 1 |
457 resrce += [(" END_RESOURCE\n", ())] |
457 resrce += [(" END_RESOURCE\n", ())] |
458 return resrce |
458 return resrce |
459 |
459 |
460 # Generate the entire program for current project |
460 # Generate the entire program for current project |
461 def GenerateProgram(self): |
461 def GenerateProgram(self, log): |
|
462 log("Collecting data types") |
462 # Find all data types defined |
463 # Find all data types defined |
463 for datatype in self.Project.getdataTypes(): |
464 for datatype in self.Project.getdataTypes(): |
464 self.DatatypeComputed[datatype.getname()] = False |
465 self.DatatypeComputed[datatype.getname()] = False |
|
466 log("Collecting POUs") |
465 # Find all data types defined |
467 # Find all data types defined |
466 for pou in self.Project.getpous(): |
468 for pou in self.Project.getpous(): |
467 self.PouComputed[pou.getname()] = False |
469 self.PouComputed[pou.getname()] = False |
468 # Generate data type declaration structure if there is at least one data |
470 # Generate data type declaration structure if there is at least one data |
469 # type defined |
471 # type defined |
470 if len(self.DatatypeComputed) > 0: |
472 if len(self.DatatypeComputed) > 0: |
471 self.Program += [("TYPE\n", ())] |
473 self.Program += [("TYPE\n", ())] |
472 # Generate every data types defined |
474 # Generate every data types defined |
473 for datatype_name in self.DatatypeComputed.keys(): |
475 for datatype_name in self.DatatypeComputed.keys(): |
|
476 log("Generate Data Type %s"%datatype_name) |
474 self.GenerateDataType(datatype_name) |
477 self.GenerateDataType(datatype_name) |
475 self.Program += [("END_TYPE\n\n", ())] |
478 self.Program += [("END_TYPE\n\n", ())] |
476 # Generate every POUs defined |
479 # Generate every POUs defined |
477 for pou_name in self.PouComputed.keys(): |
480 for pou_name in self.PouComputed.keys(): |
|
481 log("Generate POU %s"%pou_name) |
478 self.GeneratePouProgram(pou_name) |
482 self.GeneratePouProgram(pou_name) |
479 # Generate every configurations defined |
483 # Generate every configurations defined |
|
484 log("Generate Config(s)") |
480 for config in self.Project.getconfigurations(): |
485 for config in self.Project.getconfigurations(): |
481 self.Program += self.GenerateConfiguration(config) |
486 self.Program += self.GenerateConfiguration(config) |
482 |
487 |
483 # Return generated program |
488 # Return generated program |
484 def GetGeneratedProgram(self): |
489 def GetGeneratedProgram(self): |
1760 return program |
1765 return program |
1761 |
1766 |
1762 |
1767 |
1763 def GenerateCurrentProgram(controler, project, errors, warnings): |
1768 def GenerateCurrentProgram(controler, project, errors, warnings): |
1764 generator = ProgramGenerator(controler, project, errors, warnings) |
1769 generator = ProgramGenerator(controler, project, errors, warnings) |
1765 generator.GenerateProgram() |
1770 if hasattr(controler, "logger"): |
|
1771 def log(txt): |
|
1772 controler.logger.write(" "+txt+"\n") |
|
1773 else: |
|
1774 def log(txt): |
|
1775 pass |
|
1776 |
|
1777 generator.GenerateProgram(log) |
1766 return generator.GetGeneratedProgram() |
1778 return generator.GetGeneratedProgram() |