Brandon, can you add to your proposal discussion of how many practical 
use-cases there are for this?


We can add features to Daffodil of course if we want. I want to understand vis 
a vis influencing the DFDL standard in the future, how many cases there are of 
this situation.

________________________________
From: Sloane, Brandon <[email protected]>
Sent: Wednesday, June 12, 2019 11:16:53 AM
To: [email protected]
Subject: Proposal: Add choiceBranchKeyRanges annotation

The DFDL specification only allows for a choice branch to specify a single key 
value. Daffodil has expanded this to allow for a space delimiated list of keys. 
However, this does not support the case where a large number of contiguous 
integers are the key. Are standard advice there is to use a more complicated 
dispatch expression, such as:


if( (10 le tag) and (tag le 512)) then 'a' else 'b')


However, this approach breaks down where there area a large number of ranges 
(for exactly the same reason that this approach breaks down when there are a 
large number of single values), and is not particuarly declerative.


We face a simmilar problem with the recent Enumeration support. There, we 
solved it by including a repValueRanges attribute to go along with the 
repValues attribute.


I am proposing a simmiliar addition for choice branches. The 
daf:choiceBranchKeyRanges will be a whitelist delimiated list of integers, 
interperated as "min1 max1 min2 max2 ... minN maxN", which will be logically 
equivalent to including all of "min1 min1+1 ... max1 ... minN minN+1 ... maxN" 
in the dfdl:choiceBranchKey annotation; and can be used in conjucntion or 
instead of the choiceBranchKeyAnnotation.


In addition to making the complex case of many ranges possible, this will also 
simplify (and make more efficient) the case of 1 or few ranges.


Brandon T. Sloane

Associate, Services

[email protected] | tresys.com

Reply via email to