The latest HCL RTist 11 release, version 2020.39, is now available. And there are several improvements and new features in this release:
New commands in the “Add UML” context menu make it very easy to create “special operations” for classes. The commands are placed in a new “Special Operations” sub menu and create different kinds of constructors (default, copy, move) and destructors with a single click. There is also a command for creating getter/setter operations for selected class or capsule attributes. You can use this when you want to have the getter/setter operations present in the model, rather than only in the generated C++ code.
Incremental Compilation for Models with External Code Dependencies
GCC compilers can generate dependency files when compiling a C++ file, listing all external files (typically header files) which the C++ file depends on. It’s now possible to let the model compiler utilize this feature when it generates a recursive make file, so that the make file will include the dependency file that is generated by the compiler. Thereby make will be able to accurately determine what parts of the generated code that need to be recompiled when something changes in these external files. Enabling this feature just requires adding a couple of lines in the default.mk and libset.mk files in your TargetRTS. Refer to slide 24 in the What’s New presentation for more details.
C++ 11 Improvements
In this release a few more steps have been taken on the journey to fully support C++ 11.
- New properties are available to declare a generated operation as deleted, and a destructor as either defaulted or deleted.
- Type aliases are now supported both in the user interface and in the model compiler. A type alias can be described as a modern form of typedef which allows you to give a simpler alias name for a complex type. Contrary to traditional typedefs a type alias can have template parameters.
- The TargetRTS now uses the nullptr constant to represent null pointers. It was also modernized to use the override keyword on redefined functions, and several C-style casts were removed.
Property Set Default Values
Thanks to a new global preference (Modeling – Profiles – Property Sets – Defaults) you can now change default values for “Property Set” properties without having to modify all models that need to use the new default values. This can be a significant time saver if you have lots of models that need to use a certain custom default value consistently. An example of such a default value is the name of getter/setter operations which the model compiler can generate automatically for attributes.