Completely new strategy for Singleton's PRIVATE data.
Fixed issue: Preprocessing of user C code + membrane pre-processing
resulted in duplicate PRIVATE struct for the definition: GCC understood
the elements were the same but IAR was strict about duplicate structs
errors.
Solution/Strategy: New behavior was inspired by the non-Singleton code
generation, using typedefs instead of direct struct use, guards, and
component private data initialization through a dedicated macro. Tests
were fixed accordingly.
Double semicolon fix: ";;" becomes ";" for _DECLARE_PRIVATEDATA:
This allows removing warnings with the CCS compiler.
Fix: Add missing 'c' structure field.
Improved comments/descriptions, now explaining each specific part role.
Fix comment format error in StringTemplate.
Avoid .macro comment serialization
Bindings using type-hierarchy-related interfaces now have C cast.
Issue: used to be that C compilers would raise a warning on pointer
casts when trying to initialize a binding from an I1 interface type
struct with an I2 destination interface, where I2 extends I1.
Solution: Detection on binding check and tag the according AST
interface/binding nodes to add the necessary cast with StringTemplates.