Skip to content

#970 CIF execution scheme: defined it and ensured CIF code generator + PLCgen adhere to it

Dennis Hendriks requested to merge 970-cif-execution-order-part1 into develop
  • Best to review per commit.
  • End-user visible changes:
    • Controller properties checker documentation: document the execution scheme.
    • Controller properties checker documentation: 'controller properties checker' naming consistency and some other small documentation improvements/fixes.
    • PLCgen now adheres to the execution scheme. As a result of this, some parts of the generated code may be in a different order, as the automata and events are sorted.
    • CIF code generator now adheres to the execution scheme. As a result of this:
      • Some parts of the generated code may be in a different order, as events are sorted.
      • If in an event loop a transition for an event is executed, the iteration now continues with the next event, rather than starting at the first event in a next iteration.
      • In generated C code, the configurable value MAX_NUM_EVENTS has been renamed to MAX_NUM_ITERS.
    • CIF code generator documentation: small documentation improvements/fixes.
  • Other changes:
    • CifCollectUtils: various more collect methods.
    • Strings.SORTER: document and test its behavior in more detail.
      • Ensure sure primary case-insensitive and secondary case-sensitive.
      • Ensure prefix is sorted before longer text.
      • Document this behavior in the JavaDocs.
      • Test this behavior in unit test to ensure it is and remains correct.
    • CifEventUtils.getAlphabet documents the order of the returned events.
    • CIF simulator: adopt CifCollectUtils/CifSortUtils more.
    • CIF simulator: constants and derivatives are now sorted as well.
    • Controller properties checker implementation: 'controller properties checker' naming consistency.
    • PLCgen: Documented in JavaDoc/comments in various places why certain things are generated/considered in a certain order, to ensure we keep it like this.
    • I added a test for the CIF code generator. I tested it for Java and HTML, and it works. For PLCgen, I'll add it to the certification test set of #798 (closed).
    • CIF to CIF linearization (merge) adheres to the execution scheme, and this is documented in JavaDocs/comments in the transformation in various places. Linearize (product) can't be fully compliant, but adheres to it as best it can.

Addresses #970

Merge request reports