The parameterfiles are written in an XML file format. The actual format is described in a Document Type Definition (DTD) in xml/parameterfile.dtd, copied below. Of course these files can be created or edited by hand, but the graphical tool ksimthetic will also read and write these files, which is probably more convenient.
For a concrete simulation there is a powerful mechanism in place which will read all properties from the parameterfile xml file so that each device can access its properties at runtime. The programmer of a device does not need to care about how this happens; the programmer can simply call Device::getProperty<T>() to retrieve the simulation parameters.
Nevertheless, a programmer does have to define the properties that actually exist for a particular device. To do this, the definition of a Device's PropertyList resides in an additional XML file which is called the devicelist file. The file format is specified with a DTD which can be found in xml/devicelist.dtd, copied below. These additional XML file(s) are installed together with the actual library in a directory which is specified at installation time of simthetic. These devicelist files should also contain as much documentation of all properties as possible, because the documentation from there is also used by doxygen when creation the HTML documentation that you are reading right now.
<!-- ............................................................ -->
<!--
Typical Invocation:
# <!DOCTYPE parameterfile PUBLIC
# "-//TUHH//Simthetic Parameterfile V1.0//EN"
# "parameterfile.dtd">
Purpose:
Proposed DTD for specifying the parameters of one concrete
simulation run of the simthetic simulation system. This file is
meant for the final solution where every Device of Simthetic is
solely configured via a PropertyList. In this final case, this
parameter file would simply "fill in the values" for all properties
of the used devices.
-->
<!-- ............................................................ -->
<!ELEMENT parameterfile (simulationparameters*)>
<!ATTLIST parameterfile
xmlns:gui CDATA #FIXED "http://simthetic.sourceforge.net/dtd/gui/1.0">
<!-- Note: The URL for the namespace does not have to point to any
valid location. It is simply used to distinguish from possible
other namespaces. -->
<!ELEMENT simulationparameters (title?, devicevalues?, variables?,
devicesvalues, loopvariables, connectionlist,
gui:objects?) >
<!-- title = (unimplemented) Short descriptive title of this simulation
devicevalues = This holds the global properties of the simulation
system. The name is (admittantly) misleading, but this
is by far the easiest implementation, hence we stick
with this element here.
variables = A list of string variables (name and value) that
can be re-used in the values of other properties
by writing $(variable_name).
devicesvalues = The list of devices and their properties
loopvariables = The list of loop variables and their settings
connectionlist = The list of connections between the devices
gui:objects = List of additional GUI objects (text, lines) which
might be useful for explaining the system.
-->
<!ELEMENT title (#PCDATA)>
<!ELEMENT description (#PCDATA)>
<!ELEMENT variables (variabledef*)>
<!ELEMENT variabledef (description?, value)>
<!ATTLIST variabledef
name ID #REQUIRED>
<!ELEMENT value (#PCDATA)>
<!ELEMENT propertyvalues (propertyvalue*)>
<!ELEMENT propertyvalue (value)>
<!ATTLIST propertyvalue
name CDATA #REQUIRED>
<!ELEMENT devicesvalues (devicevalues*)>
<!ELEMENT devicevalues (description | propertyvalues | gui:point)*>
<!ATTLIST devicevalues
id ID #REQUIRED
type CDATA #REQUIRED
gui:rotation CDATA #IMPLIED>
<!ELEMENT loopvariables (loopvariable*)>
<!ELEMENT loopvariable (description?, value+)>
<!ATTLIST loopvariable
id ID #REQUIRED
name CDATA #REQUIRED
type CDATA #REQUIRED>
<!ELEMENT connectionlist (connection*)>
<!ELEMENT connection (description?, gui:point*)>
<!ATTLIST connection
fromid IDREF #REQUIRED
fromintf CDATA #REQUIRED
toid IDREF #REQUIRED
tointf CDATA #REQUIRED
active (true|false) "true">
<!ELEMENT gui:point EMPTY>
<!ATTLIST gui:point
x CDATA #REQUIRED
y CDATA #REQUIRED>
<!ELEMENT gui:objects (gui:text | gui:polygon)*>
<!ELEMENT gui:text (gui:point, value)>
<!ATTLIST gui:text
gui:rotation CDATA #IMPLIED>
<!ELEMENT gui:polygon (gui:point*)>
The syntax of a DTD is described e.g. here: http://xmlsoft.org/xmldtd.html
<!-- ............................................................ -->
<!--
Typical Invocation:
# <!DOCTYPE devicelist PUBLIC
# "-//TUHH//Simthetic Devicelist V1.0//EN"
# "devicelist.dtd">
Purpose:
This DTD was developed to specify the properties of a Device in the
simulations system Simthetic. Basically, an XML file adhering to
this XML should specify everything about a device that is needed by
any GUI.
-->
<!-- ............................................................ -->
<!-- A devicelist file can include many device definitions. The
include element (see explanation there) can appear file-wide here, or
can appear in particular devices. -->
<!ELEMENT devicelist (include*, device*) >
<!-- Each device element describes one C++ class. The C++ typename has
to appear in the type attribute. The libraryname attribute contains
the name of the shared library this device is implemented in. The
extends attribute contains the name of the C++ base class, if this
device is derived from another one. The abstract attribute is true if
the C++ class is an abstract class. -->
<!ELEMENT device (include*, description, inputinterfaces?,
outputinterfaces?, overriddenproperties?, propertylist?) >
<!ATTLIST device
name CDATA #REQUIRED
type ID #REQUIRED
libraryname CDATA #REQUIRED
extends CDATA #IMPLIED
abstract (true|false) "false">
<!-- The include element should point to the file name that contains
the devicelist of the base class. This is just for helping the
DeviceManager finding all necessary xml files. -->
<!ELEMENT include (#PCDATA)>
<!ELEMENT description (#PCDATA)>
<!-- The input- and outputinterfaces describe all the interfaces of a
device. The attribute "multiplied_by" contains the name of a
property, which, if it is set, gives the number of multiple
instances of this interface that will actually exist.
-->
<!ELEMENT inputinterfaces (interface*)>
<!ELEMENT outputinterfaces (interface*)>
<!ELEMENT interface (description?)>
<!ATTLIST interface
type CDATA #REQUIRED
multiplied_by CDATA #IMPLIED>
<!-- Sometimes, a derived class will override properties of the base
class by its own values as defined in the C++ code. The names of these
properties are listed in this element. -->
<!ELEMENT overriddenproperties (value*)>
<!-- Most important for the definition of a useful simulation
scenario: The propertylist describes all properties that are available
in this device. The propertylist defined here is also directly used
inside simthetic when the objects are created. -->
<!ELEMENT propertylist (property*)>
<!ELEMENT property (default?, description, option*)>
<!ATTLIST property
name CDATA #REQUIRED
type (bool | int | unsigned | double | complex | string |
list_string | enum | sequencelength | vector_octal_int |
vector_double | octal_int ) #REQUIRED
empty_default (true|false) "false"
obsolete (true|false) "false"
grouping CDATA #IMPLIED>
<!-- For most property types, the option element describes possible
values that particularly make sense for this property (please add
appropriate descriptions). But for properties of type 'enum' the
semantics are different: For 'enum' properties, the property is only
allowed to have values that are mentioned here as option elements. -->
<!ELEMENT option (value, description?)>
<!-- The default element simply contains a default value for a
property. If it is empty and the property attribute empty_default is
false, then this property has to be set in the simulation parameter
file. -->
<!ELEMENT default (#PCDATA)>
<!ELEMENT value (#PCDATA)>
The syntax of a DTD is described e.g. here: http://xmlsoft.org/xmldtd.html
For a more detailed discussion see Migration of Parameter files to the XML format
1.4.1