This class provides an information about used datums, reading them from XML file. More...
There is the only instance of the class DDS_Dictionary in the application which can be retrieved by method Get().
Datum is a set of parameters describing a phisical characteristic. These parameters are loaded from the XML file which has the following format:
<D_URI> <COMPONENT COMPONENT_NAME="component_name"> <UNIT_SYSTEMS> <UNIT_SYSTEM UNIT_SYSTEM_NAME="[system_internal_name]" UNIT_SYSTEM_LABEL="[system_label]"> <UNIT_SYSTEM UNIT_SYSTEM_NAME="[system_internal_name]" UNIT_SYSTEM_LABEL="[system_label]"> ... <UNIT_SYSTEM UNIT_SYSTEM_NAME="[system_internal_name]" UNIT_SYSTEM_LABEL="[system_label]"> </UNIT_SYSTEMS> <DATUM DATUM_UNITS="[base_system_internal_name]" DATUM_FORMAT="[sprintf_format_specification]" DATUM_ID="[datum_id]" DATUM_LABEL="[datum_label]" DATUM_REQUIRED="[requred_value]" DATUM_FILTER="[string_regular_expression]"> <DY_DOMAIN> <VALUE_DESCR VD_DEFV="[default_value]" VD_MAXV="[max_value]" VD_MINV="[min_value]" VD_TYPE="[value_type]"/> <VALUE_LIST_REF VLR_LIST="[referenced_list_id]"/> </DY_DOMAIN> <DESCR> <SHORT_D>[brief_desription_text]</SHORT_D> <LONG_D>[full_description_text]</LONG_D> </DESCR> <OPTIONS> <OPTION OPTION_NAME="[option_name_1]">[option_value_1]</OPTION> <OPTION OPTION_NAME="[option_name_2]">[option_value_2]</OPTION> ... <OPTION OPTION_NAME="[option_name_n]">[option_value_n]</OPTION> </OPTIONS> </DATUM> ... <VALUE_LIST VALUE_LIST_ID="[list_id]" VALUE_LIST_NAME="[list_name]"> <VALUE_LIST_VALUE VALUE_LIST_VALUEID="[list_element_id]" VALUE_LIST_VALUEICON="[list_element_icon_file]">[list_element_name]</VALUE_LIST_VALUE> <VALUE_LIST_VALUE VALUE_LIST_VALUEID="[list_element_id]" VALUE_LIST_VALUEICON="[list_element_icon_file]">[list_element_name]</VALUE_LIST_VALUE> ... <VALUE_LIST_VALUE VALUE_LIST_VALUEID="[list_element_id]" VALUE_LIST_VALUEICON="[list_element_icon_file]">[list_element_name]</VALUE_LIST_VALUE> </VALUE_LIST> ... </COMPONENT> </D_URI>
In above description of the datum XML file format internal keys are used as XML tags and attributes names. Real XML keywords are defined by DDS_KeyWords class.
XML file should have one main tag named "dictionary" (key "D_URI"). This tag should contain one or several components. Component is an independent set of datums and units systems. Components are defined by XML tag named "component" (key "COMPONENT") with attribute "name" (key COMPONENT_NAME). Component name is used as component identifier and should be unique.
Component tag can contain:
true
then user can't leave an input non-filled - parameter must be explicitly entered by the user).Tag "datum" can have child subtags "description" and "options".
Each tag "datum" defines most common parameters of phisical characteristic. These parameters are placed in two groups:
Below is an example of the XML file using default keywords.
<datadictionary version="1.0"> <component name="My Component"> <!-- specify two unit systems --> <unitSystems> <system name="SI" label="System international"> <system name="AS" label="Anglo - sacson system"> </unitSystems> <!-- specify datum --> <!-- units of measure for SI - meters (m), for AS - inches (in) --> <datum SIunits="m" ASunits="in" format="%.25f" id="X" label="X coordinate" required=""> <domain> <!-- default value not specified --> <valueDescr default="" max="999999999.999" min="0.000" type="Float"/> </domain> <description> <shortDescr>X coordinate for object</shortDescr> <longDescr>X multiplier of object coordinates. Describe position of object in direction of X axis</longDescr> </description> </datum> <datum SIunits="m" ASunits="in" format="%.25f" id="Y" label="Y coordinate" required=""> <domain> <valueDescr default="" max="999999999.999" min="0.000" type="Float"/> </domain> <description> <shortDescr>Y coordinate for object</shortDescr> <longDescr>Y multiplier of object coordinates. Describe position of object in direction of Y axis</longDescr> </description> </datum> <!-- datum for object name with filter which not allow to input more that 8 letters, numbers or unerscores with first letter only --> <datum format="%.8us" id="ObjectName" label="Name" required="yes" filter="^([A-Z]+)([A-Z,0-9,_]*)$"> <domain> <!-- limits and default not specified, type is string --> <valueDescr default="" max="" min="" type="String" /> </domain> <description> <!-- long description not specified --> <shortDescr>Name of object</shortDescr> </description> </datum> <!-- datum for enumeration of side --> <datum format="" id="Side" label="Side" required=""> <domain> <!-- default list item is item with id 0 --> <valueDescr default="0" type="List"/> <!-- list reference on list named "side_list" --> <listRef list="side_list"/> </domain> <description> <shortDescr>Side of object</shortDescr> </description> </datum> <!-- list definition for enumeration of side --> <valueList listid="side_list" name="Side"> <value id="1">left</value> <value id="2">right</value> <value id="3">top</value> <value id="4">bottom</value> <value id="0">undefined</value> </valueList> </component> </datadictionary>