This is a minor upgrade to Structure Viewer. In addition to several bug fixes
New Language Features
- _SVC_VER compiler version macro
- Compiler version in 5.12 has a value of 0x305 (major version: 3, minor version: 5), which indicates minor upgrade.
- New predefined macros
- This version adds the following predefined macros: _SVC_X86, _SVC_X64, _SVC_POINTER_SIZE, _SVC_POINTER_SIZE_REAL.
- Optimization of core algorithms
Optimization of core algorithms improved binding time by about 10%. This is more noticeable for complex structures, where a lot of computations and other expression evaluation occurs during binding.
- Integer type modifiers
It is now possible to use little_endian and big_endian to change integer's type default byte ordering. This functionality complements the #pragma byte_order directive and has priority over it.
New type [display] attribute
This release introduces the first type attribute: display. Previous versions automatically generated values for collapsed items. Values of first 5 type's fields in curly braces is displayed by default. Version 5.12 allows you to override this behavior for a specific type. You provide an expression, whose evaluated value is used. This expression is evaluated in current type's scope and has access to all its fields.
- New built-in functions
- New functions — is_valid() Function and evaluate_if() Function have been added to a list of supported built-in functions.
- Limited support for references
Version 5.12 adds support for taking references of fields. References may be used to pass fields (including arrays and complex type fields) as arguments to native functions or to compare two objects. A new built-in function ref is used to get a field's reference.
- New method in Parser object
- This release adds the IParser.add_coloring_scheme method to the IParser interface.
- Error removing non-existing files from the library
- It was impossible to remove a non-existing structure definition file from the library.
- Invalid operation
In some rare cases Structure Viewer could read garbage from the document instead of real data.
- Errors updating Output window
- Several inconsistences with Structure Errors tool window and present/absent definition files have been fixed.
- Errors in native functions implementation
Assignment statement did not work in native functions, which also resulted in inability to use for statement in them.
- Incorrect scope for array indexing operator
- Array indexing operator used incorrect scope while evaluating the index expression, which could led to bugs or "ID not found" exceptions.
- Crash after removing file from the library
- Application could crash after removing structure definition file from the library (after it stopped watching its directory for changes, that is, after the last file from that directory was removed).
- Crash when trying to remove used file from the library
- Application crashed when you tried to remove used structure definition file from the library.
- Very long string handling issue
- Structure Viewer could crash when it tried to display a very long string (longer than 65536 characters).