#970 CIF execution scheme: defined it and ensured CIF code generator + PLCgen adhere to it
- 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 toMAX_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