Difference between revisions of "OldConfigurationConditions"
(→Proposal) |
|||
Line 54: | Line 54: | ||
We should have enough flexibility to allow complicated cases as well. | 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 | ||
+ | |||
+ | <code>[eiffel, N] | ||
+ | class | ||
+ | CONF_CONDITION | ||
+ | |||
+ | feature -- Access | ||
+ | |||
+ | platform: ARRAYED_LIST [TUPLE [value: INTEGER; invert: BOOLEAN; isset: BOOLEAN]] | ||
+ | -- Platform where it is enabled or for which it is disabled (if `invert' is true) | ||
+ | |||
+ | build: ARRAYED_LIST [TUPLE [value: INTEGER; invert: BOOLEAN; isset: BOOLEAN]] | ||
+ | -- Build where it is is enabled or for which it is disabled (if `invert' is true) | ||
+ | |||
+ | multithreaded: TUPLE [value: BOOLEAN; invert: 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 | ||
+ | </code> |
Revision as of 15:52, 11 April 2006
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> <platform is="windows"/> <build is="workbench"/> <multithreaded is="true"/> </condition> <condition> <platform isnot="windows"/> <platform isnot="macintosh"/> <multithreaded is="true"/> <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; isset: BOOLEAN]] -- Platform where it is enabled or for which it is disabled (if `invert' is true) build: ARRAYED_LIST [TUPLE [value: INTEGER; invert: BOOLEAN; isset: BOOLEAN]] -- Build where it is is enabled or for which it is disabled (if `invert' is true) multithreaded: TUPLE [value: BOOLEAN; invert: 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