Releases: Synergex/CodeGen
CodeGen 5.7.5
CodeGen Release Notes
- We added two new field loop expansion tokens, <FIELD_DESC_DOUBLE> and <FIELD_DESC_SINGLE> that can be used to resolve issues when double quote characters are present in a double-quoted string, or single quote characters are present in a single-quoted string.
- We altered the behavior of the <ALTERNATE_KEY_LOOP_UNIQUE> such that any key segments that are also used as tag fields within the structure are excluded for the purposes of the comparison of segments between keys.
- We added a new key segment loop expansion token named <SEGMENT_COMMA_NOT_LAST_NORMAL_FIELD>.
- We altered the way that group field prefixes are appended to group fields. Previously, if a group field prefix existed for a group, the prefix would be automatically applied to the fields within the group. Now, the prefix is only applied if the "Use by compiler" option is also specified. This is consistent with the way that the Synergy compiler works.
- In the unlikely event that the previous change affects your code, you can restore the previous behavior by using the new GROUP_PREFIX_ALWAYS tweak.
- We fixed an internal issue in the RepositoryAPI library that was causing the Field.OriginalNameModified property to be unset when cloning one Repository field into another.
- We fixed an issue that was previously causing the <FIELD_ORIGINAL_NAME_MODIFIED> token to return incorrect values for array fields within groups.
- We altered the format of the output generated by the -version command line option to include the Synergy build number once it becomes available at compile time.
- This version of CodeGen was built with Synergy/DE 12.0.1.3272 and requires a minimum of version 10.1.1 to operate.
CodeGen 5.7.4
CodeGen Release Notes
- We extended the use of the -mexclude and -minclude options so that in addition to being supported with the -smc and -interface options, they can also be used with the -smcstrs and -interface options. This makes it possible to exclude from processing any structures that are only referenced by methods that are being excluded, or to select for processing only structures that are referenced by specific methods in a method catalog interface. Previously it was only possible to constrain the list of structures to be processed to structures referenced by all methods in an interface.
- We added a new tweak named SQLNAMEN$$ID.
- We improved error reporting if a repository field exceeds D28 which can happen if a GROUP field is typed as decimal.
- We improved error reporting when attempting to use method catalog tokens without method catalog meta-data.
- We improved the processing of the <FIELD_TYPE> token to ensure that is produces appropriate values when BINARY, ENUM and STRUCT fields are processed. Until recently the presence of these fields in a structure would prevent code generation for the structure.
- This version of CodeGen was built with Synergy/DE 11.1.1h and requires a minimum of version 10.1.1 to operate.
CodeGen 5.7.3
CodeGen Release Notes
- We made a slight change to the way that the <ALTERNATE_KEY_LOOP_UNIQUE> operates. Previously the loop would not compare alternate key segments with the primary key, but now it does. So the loop now processes any alternate keys that do not have identical key segments to the primary key or any previous alternate keys.
- We added a new special structure expression token <STRUCTURE_HAS_FIELD_name> that allows you to detect the presence or absence of a named field within the structure.
- We improved the logic used when processing unique key loops and unique alternate key loops.
- We fixed a problem with the implementation of the -pa command line option that would cause CodeGen to fail when used with an input file containing multiple structures.
- We fixed a problem with the implementation of the -tweaks option which could result in a null reference exception in some rare circumstances.
- We reviewed and updated all sample templates that ship with CodeGen to ensure they use the latest capabilities such as taking advantage of complex expressions to simplify template complexity resulting from nested expressions.
- This version of CodeGen was built with Synergy/DE 11.1.1g and requires a minimum of version 10.1.1 to operate.
CodeGen 5.7.2
CodeGen Release Notes
- We improved the processing of several field loop expressions related to date and time fields, which were in some cases producing inaccurate results for nullable time fields.
- We completely re-worked the implementation of code generation based on an xfServerPlus Synergy Method Catalog, bringing the implementation in line with the way that repository-based code generation works. Method catalog based code generation can now also be completely driven via the CodeGen API.
- We added validation to ensure that method and parameter loop tokens can't be used when processing in -smcstrs mode, which is a repository-centric processing mode.
- We completed the project of simplifying the structure of the documentation, making it easier to read, and easier to maintain.
- This version of CodeGen was built with Synergy/DE 11.1.1g and requires a minimum of version 10.1.1 to operate.
CodeGen 5.7.1
CodeGen Release Notes
-
We extended the experimental support for TypeScript generation by adding a new method loop expansion token <METHOD_RETURN_TSTYPE> and a new parameter loop expansion token <PARAMETER_TSTYPE>.
-
We added a new parameter loop expression <IF FIRST_INSTANCE_OF_STRUCTURE2> that allows you to detect the first time a structure is referenced by any parameter in the current interface.
-
We added two new command line options -mexclude and -minclude that can be used in conjunction with the -smc and -interface options to either exclude or include methods from an interface that are to be processed by interface loops.
-
We modified the <INTERFACE_METHODS> and <INTERFACE_NAME> tokens so that they may also be used in parameter loops.
-
This version of CodeGen was built with Synergy/DE 11.1.1g and requires a minimum of version 10.1.1 to operate.
CodeGen 5.6.9
CodeGen Release Notes
-
We added a new custom token <HARMONYCORE_PARAMETER_SAMPLE_DATA> to the Harmony Core extensions assembly.
-
We added a new custom token <HARMONYCORE_BRIDGE_PARAMETER_DATAOBJECT> to the Harmony Core extensions assembly.
-
We altered the implementation of <HARMONYCORE_BRIDGE_PARAMETER_DEFINITION> which was preciously not dealing correctly with array and collection parameters.
-
We removed the lower-case option from the <PARAMETER_DEFINITION> token.
-
We added a new token <PARAMETER_DEFINITION_NOARRAY>.
-
We added a new tweak named PARAMDEFSTR which causes the <PARAMETER_ATTRIBUTE>, <PARAMETER_DEFINITION>, <PARAMETER_DEFINITION_NOARRAY>, <PARAMETER_STRUCTURE>, <PARAMETER_STRUCTURE_NOPLURAL> and <PARAMETER_STRUCTURE_PLURAL> tokens to prefix structure names with "STR_".
-
We corrected an issue in the recently introduced <PARAMETER_ATTRIBUTE> token which was generating incorrect output for some types of fields.
-
We corrected an issue in the <PARAMETER_DEFINITION> token which was generating incorrect output for some types of fields.
-
We corrected an issue with the <SEGMENT_SPEC> token that was previously producing incorrect results for boolean fields.
-
We added experimental support for generating TypeScript code by adding the field loop tokens <FIELD_TSDEFAULT> and <FIELD_TSTYPE>. More work is required before these new capabilities will be fully effective.
-
We undertook some performance analysis work in the area of code generation from Synergy Method Catalogs, and as a result reworked some code to improve performance in this area. There is still more to be done, but generating code from method catalogs is now noticeably faster in most cases.
-
This version of CodeGen was built with Synergy/DE 11.1.1g and requires a minimum of version 10.1.1 to operate.
CodeGen 5.6.8
CodeGen Release Notes
- We added a new experimental feature which allows iterative processing of group fields within field loops, via the special field loop token <GROUP_EXPAND>.
- We added support for the YYYMMDDHHMISSUUUUUU date format for the <METHOD_RETURN_DATE_FORMAT> and <PARAMETER_DATE_FORMAT> tokens.
- We added a new method loop token <METHOD_ATTRIBUTE> and a new parameter loop token <PARAMETER_ATTRIBUTE>.
- We added several new output case variants of the <METHOD_NAME> and <PARAMETER_NAME> tokens.
- We addressed an issue where when using the -smcstrs option in conjunction with the -interface option, all structures defined in the method catalog would be processed. Now only structures referenced my methods in the specified interface are processed. If no structures are referenced by the interface a warning is issued.
- We corrected several issues with the output from the <PARAMETER_DEFINITION> token.
- We added a new command-line option -tweaks which allows us to easily add support for things that allow you to make small customizations, or tweaks, to the way that CodeGen operates. The first tweak is called SQLNAMENO$ and allows tiy to customize the output of the <FIELD_SQLNAME> token by suppressing any $ characters that may be present in the name of a field.
- We added a new custom structure expression <IF GLOBAL_ENTITY> to the Harmony Core extensions assembly.
- This version of CodeGen was built with Synergy/DE 11.1.1g and requires a minimum of version 10.1.1 to operate.
CodeGen 5.6.7
CodeGen Release Notes
- We added a new command-line option -iloop that can be used in conjunction with the -smc option to constrain the interfaces that are processed by interface loops to only those specified after the new -iloop option.
- This version of CodeGen was built with Synergy/DE 11.1.1g and requires a minimum of version 10.1.1 to operate.
CideGen 5.6.6
CodeGen Release Notes
- We fixed an issue with the field loop expressions <IF EXPLICIT_GROUP>, <IF GROUP> and <IF_IMPLICIT_GROUP> which would previously evaluate to true for explicit group fields, but not explicit group overlay fields. Now it evaluates to true for both.
- We fixed an issue that could cause the parsing of some complex expressions to incorrectly report a problem parsing <IF IF>.
- This version of CodeGen was built with Synergy/DE 11.1.1f and requires a minimum of version 10.1.1 to operate.
CodeGen 5.6.5
CodeGen Release Notes
- We added a new command-line option -ncp that suppresses the features of the <STRUCTURE_PLURAL> and <STRUCTURE_NOPLURAL> tokens, making them behave the same as <STRUCTURE_NAME>.
- We modified the non-Synergy data types returned by field loop expansion tokens such as <FIELD_CSTYTPE>, <FIELD_OCTYPE>, <FIELD_SNTYPE>, <FIELD_SQLTYPE> and <FIELD_VBTYPE>for decimal fields with an overall size of over 18 characters. For example, previously <FIELD_CSTYPE> would return long and now returns decimal. And because any field larger than a D28 will overflow even decimal fields in .NET, we now throw an error if any such field is encountered in a structure.
- We added a new type of key loop called a <PARTIAL_KEY_LOOP> that can be used to process subsets of the segments of multi-segment keys.
- We added a new generic expansion token <DAYNAME>.
- We added new field loop expansion tokens <FIELD_CLASS>, <FIELD_DISPLAY_LENGTH>, <FIELD_GROUP_MEMBER_PREFIX>, <FIELD_GROUP_STRUCTURE>, <FIELD_INPUT_JUSTIFICATION>, <FIELD_OVERLAY_FIELD>, <FIELD_OVERLAY_OFFSET>, <FIELD_OVERLAY_SPEC>, <FIELD_PAINTCHAR>, <FIELD_PAINTFIELD>, <FIELD_POSITION_COL>, <FIELD_POSITION_MODE>, <FIELD_POSITION_ROW>, <FIELD_REPORT_JUSTIFICATION>, <FIELD_SELECTIONS_COL>, <FIELD_SELECTIONS_HEIGHT>, <FIELD_SELECTIONS_ROW>, <FIELD_USER_TYPE>, <FIELD_VIEW_LENGTH>, <PROMPT_POSITION_COL>, <PROMPT_POSITION_MODE> and <PROMPT_POSITION_ROW>.
- We renamed some field loop expression tokens that were introduced in the previous release, changing <IF UNFLATTENED_GROUP> to <IF GROUP>, <IF UNFLATTENED_EXPLICIT_GROUP> to <IF EXPLICIT_GROUP> and <IF UNFLATTENED_IMPLICIT_GROUP> to <IF IMPLICIT_GROUP>. We apologize if this breaks existing code, but if so that code was written in the last few days and we figured it would not be a big deal!
- We added new field loop expression tokens <IF GROUP_MEMBER_PREFIX>, <IF GROUP_MEMBER_PREFIX_COMPILER>, <IF GROUP_OVERLAY>, <IF NAME_LINK>, <IF OVERLAY_OFFSET>, <IF PAINTFIELD> and <IF USER_TYPE>.
- We changed the behavior of the field loop expansion tokens <FIELD_ENUMBASEVAL>, <FIELD_ENUMLENGTH> and <FIELD_ENUMSTEPVAL>. Previously these tokens would insert 0 for unenumerated fields. Now nothing is inserted for unenumerated fields.
- We changed the behavior of the field loop expansion tokens <FIELD_SELECTIONS> and <FIELD_SELECTIONS1>. Previously these tokens would insert "" for fields with no selection list values. Now nothing is inserted for fields with no selection list values.
- We added a new structure expansion token <STRUCTURE_TYPE>.
- We added a new key loop expression <IF PRIMARY_KEY>.
- We added a new command line option -pa which causes array fields not to be expanded into individual fields.
WARNING: This is an experimental feature and may currently cause unexpected side effects with some expression tokens. Please let us know if you encounter anomalies. - We enabled code generation for structure fields, enum fields and binary fields. Code generation for these types of fields was previously artificially blocked.
WARNING: This is an experimental feature. While the <FIELD_SPEC>and other basic field loop tokens will behave as intended, some tokens may not behave as expected with these types of fields. Please let us know if you encounter anomalies. - We removed the field loop expression tokens <IF COERCEBOOLEAN> and <IF NOCOERCEBOOLEAN>. There is a slight chance that this could break existing templates, in which case you can use <IF COERCE_BOOLEAN> and <IF NOT COERCE_BOOLEAN> as direct replacements.
- We fixed an issue that was causing a failure during the processing of very complex expressions.
- We fixed an issue that could cause counter tokens to be incorrectly processed as expressions.
- We addressed a bug that was present in all versions of the RepositoryAPI whereby the RpsField.PaintCharacterSpecified property actually indicated whether the field was a paint field, not that a custom paint character was specified. This has now been corrected, and we have added a new property RpsField.PaintField (boolean).
- We moved the implementation of several early Harmony Core specific expansion and expression tokens into the Harmony Core Extensions library.
- We started what will be an ongoing process to reformat and improve this documentation, hopefully making it easier to use, and also easier to maintain. The most significant change is that expansion tokens were previously documented on individual pages within an overall category, but in the future will be documented on a single page for each category (for example all field loop expansion tokens). We also started to use manually entered and meaningful topic IDs, which will be a positive change when using the on-line documentation at https://codegen.synergex.com because URL's will now be based on meaningful names rather than generic topic numbers.
- This version of CodeGen was built with Synergy/DE 11.1.1f and requires a minimum of version 10.1.1 to operate.