New features in ModelMaker 8.15
Delphi 2006 support (Pascal Edition)
- Delphi 2006 IDE integration, ModelMaker menu in D2006.
- Delphi 2006 available on Environment options | IDE Integration tab.
- Editor Syntax highlighting: Set to Delphi 2006.
- Win32: Static class fields supported
- Win32: Methods in records supported
- Win32: Operator overloading for records
C# v2 support (C# Edition)
- New C# v2 language mode enables new C# 2 syntax features in editor and parser. Language mode C# v1 and C# v2 can be selected on Project Options | General tab.
- Partial class, record and interface support.
- Anonymous method support (parser)
- Extern alias support, including :: to reference extern alias members.
- Static classes support.
- Generic types support. Parser supports full syntax. Generic class names are defined like Sample<T,K> and IComparable<T>. New Type Constraints tabs on class, delegate and method dialogs.
- Property accessor visibility partly supported: Parser recognizes and skips accessor visibility in imported source and emits a warning. Accessor visibility cannot be modified in model (yet) and is "undefined". Code generation omits accessor visibility - as in C# 1.1.
- Updated Visual Studio IDE Integration pack v1.10 with C#2 syntax support. Check download page.
General Changes
- Open Model as invoked from the IDE Integration menu, also looks for a model with the same name as the active IDE project (except the extension).
Refactoring
- The Pascal Try..finally wizard code snippets are customizable. Check Environment Options | Code Snippets.
New Creational Wizard
The existing (pascal edition) Creational Wizard has been replaced with a more flexible one and is now also available in C# Edition.
The Creational Wizard is used to insert field and property initialization code snippets in a constructor. Optionally a parameter is added to the constructor parameter list to initialize a field or property. You may select an existing constructor or create a new one. Similar finalization snippets can be inserted in a destructor.
- The Field and Property dialogs have a Creational Wizard Tab that is used to initialize the field or property.
- A separate Creational Wizard dialog allows selecting multiple fields or properties at once. This wizard is available from the Members view Wizards pop up menu and toolbar.
- Presets are available to help fill in initialization / finalization code snippets
- Composite inserts code to instantiate and finalize a member. For example List := TList.Create; or list = New List(); For Pascal also destructor code is inserted like FreeAndNil(List);
- Aggregate adds a parameter to the constructor parameter list and assigns the parameter value to the member. No destructor code is inserted.
- Assign Default Value inserts an assignment. For pascal properties with a RTTI default value, the default value is assigned.
- Owned adds finalization code to a destructor, like FreeAndNil(List);
- All code is fully editable and the suggested snippets are customizable.
- Read more on this feature in this article.
Diagrams
- A UML 2.0 Frame symbol is available from the toolbar. Available for all diagram types. Frames are used to logically group related symbols. Used in sequence diagrams for loops, alternatives etc. Read article on frames.
- GIF image type supported: diagrams may be exported as gif and gif's may be displayed in diagrams.
- When selecting an image file the file selection filter is preset to supported image types.
- The documentation view displays the documentation for members selected in a class or package symbol.
- A new auto annotation link style is available: Auto link OneLiner and Documentation. This display the concatenated one liner and documentation in the annotation. The link is read-only.
- A class can be linked to it's state diagram. Classes view popup menu has a State diagram sub menu that allows creating and editing a state diagram. Similar commands in the Diagram editor popup menu when clicking on a class. When a class is linked to a state diagram, a navigation shortcut automatically appears in class symbols.
Implementation / Module Code View
- Reverse assignment: reverses left and right expressions in an assignment statement. Keyboard shortcut Shift+Alt+R
Import
- When the Importer detects classes with the same name in a different unit, you now have the option of auto-qualifying the imported class name, thus making it unique in the model. Previously you could only update the exsiting classes or cancel import. The code generator automatically strips qualifiers.
- Pascal to C# Converter extended, now converts (most) method implementation code into C# syntax.
Documentation
- The documentation window can be locked at the current entity. Locking makes the documentation pane read-only and changes changes are no longer reflected until the documentation window is unlocked again.
- C# Edition allows module documentation to be generated into source code. Check Project Options | Documentation Generation tab. When enabled this expands macro ModuleHeader before the actual module code. This macro is internally defined as #MM:>>STARTREMOVEAs Module documentation cannot be importer, the START/ENDREMOVE tags assure that the importer removes the module documentation from the imported module code. To override this default behavior, define a macro named ModuleHeader in Macros view.
<!ModuleDoc!>
#MM:>>ENDREMOVE
- Macro <!ModelDoc!> is now available during code generation. It contains the model / project documentation as entered on the Project Options | General tab
MM ToolsAPI
- New interface IMMV10DiagramExplorerViews that extends IMMDiagramExplorerViews allows setting the diagram folder structure. The IMMV10ToolServices.DiagramExplorerViews can be casted as IMMV10DiagramExplorerViews.
- IMMV10ModelPart supports read/write access to (Generic) TypeConstraints.
Solved problems
- Using the import removal signature could cause next comments to be party truncated. Solved.
- The difference view would show ÿÿÿ for entities without documentation. Solved.
- C# Edition: The syntax highlighting scheme would not apply fonts settings for tokens like [ ] ; etc. Solved.
- C# Edition: Class symbols would loose private and protected visibilities from a custom filter. Solved
- Pascal Edition: Method Resolution clauses could not be renamed once created. Solved.
- Robustness controller symbol icons would not scale correct to diagram grid. Solved.
- Printing dashed and dotted lines in diagrams would sometimes result in hardly visible lines. Solved
- Generating //-style one liners in source would emit an additional space at the end of the line. Solved
- Using the diagram editor Style selection combo to change the visual style did not work (since MM8.10). Solved


Code generation basics