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 14: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