Difference between revisions of "OldConfigurationConditions"

m (Internal representation)
Line 1: Line 1:
 
[[Category:Configuration]]
 
[[Category:Configuration]]
 +
{{cleanup}}
 +
 
== Current ==
 
== Current ==
 
At the moment conditioning is done like that
 
At the moment conditioning is done like that

Revision as of 08:51, 6 September 2006

This information is not up to date and needs some cleanup.


Current

At the moment conditioning is done like that

<if platform="windows" build="workbench"/>

Which means enabled for

windows and workbench
<ifnot platform="windows" build="workbench"/>

Which means enabled for

everything but (windows and workbench)
<if platform="windows"/>
<if platform="unix"/>

Which means enabled for

windows or unix

Something a bit more complicated like enabled for workbench on everything but windows is not possible and would have to be expressed as

<if platform="unix" build="workbench"/>
<if platform="macintosh" build="workbench"/>
<if platform="vxworks" build="workbench"/>

Proposal

If the conditioning would be done like this

<condition>
    <platform excluded_value="windows"/>
    <build value="workbench"/>
</condition>

Which would mean

every platform but windows and workbench

Or a more complex example

<condition>
    <multithreaded value="true"/>
    <platform value="windows"/>
    <build value="workbench"/>
</condition>
<condition>
    <multithreaded value="true"/>
    <platform excluded_value="windows"/>
    <platform excluded_value="macintosh"/>
    <custom name="somevar" value="true">
</condition>

Which would mean

(windows and workbench and multithreaded) or (not windows and not macintosh and multithreaded and somevar=true)

We should have enough flexibility to allow complicated cases as well.

Internal representation

Internally this could be represented by a list of CONF_CONDITIONS where CONF_CONDITIONS could look like this

class
	CONF_CONDITION
 
feature -- Access
 
	platform: ARRAYED_LIST [TUPLE [value: INTEGER; invert: BOOLEAN]]
			-- Platform where it is enabled or for which it is disabled (if `invert' is true)
 
	build: ARRAYED_LIST [TUPLE [value: INTEGER; invert: BOOLEAN]]
			-- Build where it is is enabled or for which it is disabled (if `invert' is true)
 
	multithreaded: TUPLE [value: BOOLEAN]
			-- Enabled for multithreaded?
 
	custom: HASH_TABLE [TUPLE [value: STRING; invert: BOOLEAN], STRING]
			-- Custom variables that have to be fullfilled indexed by the variable name..
 
end