This is a major upgrade to Structure Viewer. This module has almost been rewritten from scratch, taking advantage of new compiler, parallel processing (on multi-processor and multi-core computers), new features and a major performance boost.
Hex Editor Neo does not perform pre-compilation anymore. The speed of compilation is now 10-100 times faster and is performed by multiple cores. Structure Viewer initialization no longer slows down application start up.
New version improves the binding time and reduces memory consumption of bound structures.
New Language Features
- _SVC_VER compiler version macro
- Compiler version in 5.01 has a value of 0x300 (major version: 3, minor version: 0), which indicates major upgrade.
- Breaking change
break operator now always exits the current scope, even if not used inside a loop or switch statement.
- Breaking change
- When defining constants, the expression at the right side must evaluate to a constant value at compile time. Compare this to variables.
- Breaking change
- Alternative syntax for specifying enumeration's base type
New syntax (the one described in C++11) for specifying enumeration's base type may be used. The old one is still supported.
Update to #pragma byte_order behavior
This pragma may now be used at any scope. It changes the byte ordering immediately (effective for next fields if used inside a user-defined type, for example).
- Non-fatal $assert directive is supported
- This release finally makes use of non-fatal $assert directive possible (it was documented, but not supported in previous releases).
- Updating of array elements
- Previous versions allowed you to declare variable arrays. This version adds support for modifying individual array elements after they have been declared (and possibly initialized).
- New attributes
In addition to noindex attribute, the following attributes introduced:
noautohide attribute - allows you to turn off automatic hiding of empty fields.
read attribute - specify the expression to be evaluated each time the value is read.
format attribute - specify the format string to be used when displaying the field's value.
description - specify the user-friendly description of the field.
color_scheme - specify the color scheme for the field.
- New built-in functions
The following new built-in functions were introduced: bool, decimal, hex, octal, binary, integer_convert and format.
- Support for native functions
- Automatic optimization of sub-expressions
- Previous versions of Structure Viewer could automatically optimize constant expressions. New version adds automatic optimization to sub-expressions as well.
- New directive
- New $alert directive allows you to evaluate an expression at bind time and display the result in a message box.
New UI Features
- Support for color schemes
- Combined with new color_scheme attribute, allows the customer to apply different color schemes to individual fields in a bound structure.
- Structure Library dialog improvements.
- Various improvements of the Structure Library dialog.
- External structure editor support
- Added support for external structure editor.
- Improved error detection and reporting
This version dramatically improves syntax error detection and reporting. The editor is now capable of detecting more errors and provides more accurate position for an error. It is also now has so-called "expectation points" in its grammar. For example, in the following code fragment:
public struct A
A "syntax error" with message "] expected" is displayed. A cursor points to the ';' character.
- Change to bind error behavior
- Now, when bind error occurs, all items that have already been bound are left in the Structure Viewer. Exception item is added to the end of the list of bound items.
- Structure Errors tool window
- New tool window displays all compilation and binding errors. You can double-click any entry in a list to display the position of the error.