Source files syntax

All files with source data and settings for VM2D are text files and have the uniform C++-like syntax.

  • Two types of comments are allowed, following the C++ pattern:

    • // - comment from current position to end of line;

    • /* ... */ - comment of a fragment of arbitrary length, including multi-line (such comments cannot be nested);

  • line break is equivalent to a space;

  • spaces in source files and tabs are ignored.

The source data files are organized as dictionaries, i.e. according to principle

key1 = value1;
key2 = value2;
...

Keys are case insensitive, i.e. key1, Key1, KEY1, kEy1 are equal.

Values can be either simple values or lists, if the latter, list is enclosed in curly braces, and values in the list are separated by commas

key1 = value1;
key2 = {value21, value22};
key3 = {value31, value32, value33,};

It is permissible to leave a comma at the end of the list of values before the closing curly brace; it will be ignored in this case.

The type of values is arbitrary — they can be integers, floating point numbers, logical values (true/false, or, which is the same, yes/no and 0/1), symbols, strings. String values without spaces can be specified either in quotes or without them; if the string value contains a space, comma, semicolon or brackets, then it must be enclosed in double quotes:

integerkey1       = 12;
floatingpointkey2 = 6.22;
vectorkey3        = {3.14159265, 2.71828183};
logicalkey4       = true;
logicalkey5       = no;
stringkey6        = "Hello, World!";  // string-type values are
stringkey7        = Goodbye;          // case sensitive

The type of the values corresponding to the keys is not analyzed or controlled when files are read; the values themselves are initially read simply as sets of characters (strings). When accessing the corresponding parameter from the executable program, the functions for converting the read lines to the required type are called.

Some values can be complicated, i.e. they, in turn, depend on some parameters, in this case the parameters of such values are indicated in parentheses

key1 = value1(parameter1);