Here is a summary of changes from V7.0 to V7.1 with links to the relevant reference documentation, where new functionality is marked with , and enhanced functionality is marked with
Fire may now be directed to start in an initial directory/folder via a command-line -cd program switch.
In line with other languages, language comments may now be prefaced with // as an alternative to #.
Identifier types may now be defined with inheritance characteristics, in similar fashion to other high-level languages. The command class is now used to create a structure type, thereby replacing the commands structure, gstructure, compound, treenode_define and object.customize. The old commands will of course continue to work as before.
The generic element .class, available on all identifiers, now returns multiple values if an object's class is derived from base classes.
A new generic function element .is_class may be used to test whether an object is an instance of a particular class, or one derived from a class.
A signal identifier has been added as a new data type to facilitate the raising and catching of events attached to objects. An object can raise a signal, which can be caught by any number of other objects and a callback executed.
A new signal command has been added to declare a signal identifier.
Previous versions of Fire have had facilities to read xml files. In this version these facilities have been extended considerably. The existing command xmlread which reads an xml file into a Fire object has been extended since V7.
New commands are as follows:
xmlwrite writes an xml file from a Fire object to an output channel.
xsdread reads an xsd file and converts into one or more Fire classes reflecting the XML schema.
xsdwrite writes an xsd file from a Fire class. Note: this is not the reverse of xsdread.
The xmltest function may now be used to test the validity of an xml file. Other new functions are as follows:
xmlclass returns the name of a Fire class given an xml schema file (.xsd) and a root tag name. When an xml schema is converted to Fire classes (via the xsdread command), the url of the schema and all xml tags permitted as root elements are remembered. A list of these is available for debugging purposes via the sysdump -xsd command.
xmlobj returns a component to facilitate manual analysis of an xml file, similar to a SAX parser.
Classes created by the xsdread command are given attributes for use during the xmlwrite command. See here for a list.
The projection command now has 2 additonal switches: -srid=<n> and -epsg=<n> to permit the Oracle SRID code and/or EPSG number to be supplied.
Corresponding elements .srid and .epsg have also been added to the projection structure.
A new -hex switch is available on the color command to enable a color to be defined by a composite hexadecimal 0xRRGGBB value.
Support has been added for the creation of tiff files via a new -tif switch on the rasdump command.
Various new options have been added to the rasdraw command to enable clipping, positioning and scaling.
Support has been added to catch mouse thumbwheels events via a new callback procedure window.wheel.
A new -xg switch is available on the polymerge command to capture intersection polygons.
The validate command now has a -of switch to direct polygon invalidity details to a text file.
Currently, during the reading of text files, lines following those terminated by a \ are treated as continuation lines. A new -raw switch has been added on the open command to suppress this feature, thereby treating lines ending with \ as normal lines.
A new string function entity.sdogeom returns a text definition of an entity, suitable for insertion into an Oracle database SDO_GEOMETRY column.
A new xform command has been introduced, combining scaling, translation and rotation.
A new command ebuffer adds a buffer zone around one or more entities to create new polygon entities.
The functions clash_e, clash_p, clump_e and clump_p now have an additional optional parameter to permit a vertex/edge closeness tolerance to be applied.
A new element has been added to the time identifier structure. The attribute .time_only can specify that the date part of the value is to be ignored.
Several new functions have been added to the language:
appversion returns the version number of an application library file.
atextern returns external references from an entity or atable file.
choosefiles returns multiple files, similar to choosefile.
fhash derives a fingerprint, or hash value, for a file using one of various algorithms.
finddirs searches for directories in the local file system.
findfiles searches for files in the local file system.
porder analyses a set of point values, sorts them by their distance from a supplied target point, and returns the order as a numeric array.
A new circulate command has been added to enable array values to be shuffled "in place" in a circular fashion.
Some new system screen cursors have been added to be displayed at periods of inactivity. They are as follows:
print_cursor shown during execution of the print command when document details are being sent to a printer/spooler.
process_cursor shown while waiting for an external process to complete its operation.
redraw_cursor shown during during graphic window repaint operations.
web_cursor shown while waiting for internet communication to complete.
The .vvalue attribute of system classes treenode and layer have been renamed .vdata. The old name will continue to be available for a while.
A new system string array printers has been added. This lists all available printers on a system.
The current printer, previously accessed by the system string printer_name, is now accessed by the system string printer.
A new command traceback has been added to list the current command frame stack trace in the monitor window. It also has an alias tb.