OldConfigurationConditions

Revision as of 15:59, 11 April 2006 by Patrickr (Talk | contribs) (Proposal)

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 isnot="windows"/>
    <build is="workbench"/>
</condition>

Which would mean

every platform but windows and workbench

Or a more complex example

<condition multithreaded="true">
    <platform is="windows"/>
    <build is="workbench"/>
</condition>
<condition multithreaded="true">
    <platform isnot="windows"/>
    <platform isnot="macintosh"/>
    <custom name="somevar" is="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; isset: 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