OldConfigurationConditions

From EiffelStudio: an EiffelSoftware project
(Redirected from ConfigurationConditions)
Jump to navigation Jump to search

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