Compose file format description

The Compose file format is structured using sections and variable values, in
roughly human readable (text) form.

A file is comprised of sections, with each section containing a number of
variables with their specified values, which can be either strings, or
numbers (in text format).

Each section is delineated by the name of the section in square brackets. The
variables associated with each section follow on linearly from this,
separated by linefeeds. Each line should contain a variable followed by the
value associated with the variable, the two being separated by a colon.

Example:

[Section title]
Var1 : 100
Var2 : Some text
Var3 : 0

A compose file will contain two compulsory sections, followed by a number of
optional sections.

Other sections may be added at a later date, but they will conform to the
above format.

The 1st compulsory section should have the title "Components" and should
contain the variable "Num", followed by a number of pairs of optional
variables with names "0D", "0P", "1D", "1P", "2D", "2P", etc.

The 2nd compulsory section should have the title "Links" and should contain
the variable "Num", followed by a number of optional variables with the names
"0", "1", "2", etc.

Both of these sections may have other variables added in future versions of
the file format.

The optional sections that follow should have the titles "Component 0",
"Component 1", "Component 2", etc. Each of these sections is associated with
the configuration of a component and the names and values of the variables
contained in each section will be dependent on the component in question.

****************************************************************************
Future versions of the file may change to work similarly, but based on an XML
format.
****************************************************************************


An example file follows:



[Components]
Num : 4
0D : <CompTextView$Dir>
0P : 1073,-584
1D : <CompTextView$Dir>
1P : 1053,-358
2D : <CompServer$Dir>
2P : 666,-418
3D : <CompKeyboard$Dir>
3P : 258,-552

[Links]
Num : 3
0 : 2-0 -> 1-0
1 : 3-0 -> 0-0
2 : 3-0 -> 2-0

[Component 0]
Concat : 1
Special : 1
Mouse : 0
Warn : 0
Size : 20480

[Component 1]
Concat : 1
Special : 1
Mouse : 0
Warn : 0
Size : 20480

[Component 2]
Port : 6420

[Component 3]
Individ : 1
