  

<table class="width100" style="width:100%;" data-cellspacing="1">
<colgroup>
<col style="width: 16%" />
<col style="width: 16%" />
<col style="width: 16%" />
<col style="width: 16%" />
<col style="width: 16%" />
<col style="width: 16%" />
</colgroup>
<tbody>
<tr class="odd">
<td colspan="6" class="form-title"><div class="center">
ETSI's Bug Tracker - Part 01: TTCN-3 Core Language
</div></td>
</tr>
<tr class="even">
<td colspan="6" class="form-title">View Issue Details</td>
</tr>
<tr class="odd">
<td colspan="6" class="print-spacer"><hr /></td>
</tr>
<tr class="even print-category">
<td class="print" width="16%">ID</td>
<td class="print" width="16%">Project</td>
<td class="print" width="16%">Category</td>
<td class="print" width="16%">View Status</td>
<td class="print" width="16%">Date Submitted</td>
<td class="print" width="16%">Last Update</td>
</tr>
<tr class="odd print">
<td class="print">0003320</td>
<td class="print">Part 01: TTCN-3 Core Language</td>
<td class="print">New Feature</td>
<td class="print">public</td>
<td class="print">06-05-2008 18:49</td>
<td class="print">20-12-2008 15:16</td>
</tr>
<tr class="even">
<td colspan="6" class="print-spacer"><hr /></td>
</tr>
<tr class="odd print">
<td class="print-category">Reporter</td>
<td class="print">Gyorgy Rethy</td>
<td colspan="4" class="print"> </td>
</tr>
<tr class="even print">
<td class="print-category">Assigned To</td>
<td class="print">Ina Schieferdecker</td>
<td colspan="4" class="print"> </td>
</tr>
<tr class="odd print">
<td class="print-category">Priority</td>
<td class="print">normal</td>
<td class="print-category">Severity</td>
<td class="print">minor</td>
<td class="print-category">Reproducibility</td>
<td class="print">have not tried</td>
</tr>
<tr class="even print">
<td class="print-category">Status</td>
<td class="print">closed</td>
<td class="print-category">Resolution</td>
<td class="print">fixed</td>
<td colspan="2" class="print"> </td>
</tr>
<tr class="odd print">
<td class="print-category">Platform</td>
<td class="print"></td>
<td class="print-category">OS</td>
<td class="print"></td>
<td class="print-category">OS Version</td>
<td class="print"></td>
</tr>
<tr class="even print">
<td class="print-category">Product Version</td>
<td class="print"></td>
<td colspan="4" class="print"> </td>
</tr>
<tr class="odd">
<td class="print-category">Target Version</td>
<td class="print">v4.1.1 (published 2009-06)</td>
<td class="print-category">Fixed in Version</td>
<td class="print">v4.1.1 (published 2009-06)</td>
<td colspan="2" class="print"> </td>
</tr>
<tr class="even print">
<td class="print-category">Clause Reference(s)</td>
<td colspan="4" class="print">Clause 6 &amp; Annex A</td>
<td></td>
</tr>
<tr class="odd print">
<td class="print-category">Source (company - Author)</td>
<td colspan="4" class="print">L.M.Ericsson</td>
<td></td>
</tr>
<tr class="even">
<td colspan="6" class="print-spacer"><hr /></td>
</tr>
<tr class="odd print">
<td class="print-category">Summary</td>
<td colspan="5" class="print">0003320: Introduce contained subtype type
constraints</td>
</tr>
<tr class="even print">
<td class="print-category">Description</td>
<td colspan="5" class="print">Types in general are sets of values.
Subtypes are a limited (related to the parent type) set of values. Today
it is allowed to use literals and constants in subtype definitions.
However, in several cases, usability of the language would be
significantly increased. The new type still shall be a subset of the
parent type, but to define it another (even smaller) subsets could be
used.<br />
Example:<br />
------------------------------------------------------<br />
Today, to define e.g. types for ISO 8601 date representations, several
type definitions has to created in a flat manner, both for atomic and
more complex formats; the types for the more complex formats mostly
repeating patterns from the other types and patterns tend to grow too
huge (n*100 characters). i.e.:<br />
<br />
type charstring ISO8601DateCalendarCompleteBasic ( pattern<br />
  "{century}({year}{month}{dayOfMonth}")<br />
<br />
type charstring ISO8601DateCalendarCompleteExtended ( pattern<br />
  "{century}{year}-{month}-{dayOfMonth}")<br />
<br />
type charstring ISO8601DateCalendarReducedBasic ( pattern<br />
  "{century}({year}(-{month})#(0,1))#(0,1)")<br />
<br />
type charstring ISO8601DateCalendarExpandedBasic ( pattern<br />
  "{centuryExpansion}{century}({year}(({month}{dayOfMonth})|(-{month}))#(0,1))#(0,1)")<br />
<br />
type charstring ISO8601DateCalendarExpandedExtended ( pattern<br />
  "{centuryExpansion}{century}{year}-{month}-{dayOfMonth}")<br />
<br />
//... further atomic date representations here<br />
<br />
//more complex definitions<br />
type charstring ISO8601DateBasic ( pattern<br />
  "{centuryExpansion}#(0,1){century}({year}(({month}{dayOfMonth})|({dayOfYear})|({week}({dayOfWeek})#(0,1))|(-{month}))#(0,1))#(0,1)")<br />
<br />
type charstring ISO8601DateExtended ( pattern<br />
  "{centuryExpansion}#(0,1){century}{year}-(({month}-{dayOfMonth})|({dayOfYear})|({week}(-{dayOfWeek})#(0,1)))")<br />
<br />
type charstring ISO8601Date ( pattern<br />
  "{centuryExpansion}#(0,1){century}({year}(({month}{dayOfMonth})|({dayOfYear})|({week}({dayOfWeek})#(0,1))|(-(({month}(-{dayOfMonth})#(0,1))|({dayOfYear})|({week}(-{dayOfWeek})#(0,1))))#(0,1))#(0,1))#(0,1)")<br />
<br />
------------------------------------------------------<br />
With the use of contained subtypes the structure could become
hierarchical that would make complex definitions significantly simpler
and without repetitions. This would decrease the development time and
probability of errors and increase maintenability (e.g. in case of
format changes only the simply types should be changed). i.e.:<br />
<br />
type charstring ISO8601DateBasic (<br />
  ISO8601DateCalendarCompleteBasic,<br />
  ISO8601DateCalendarReducedBasic,<br />
  ISO8601DateCalendarExpandedBasic,<br />
//...further atomic types listed here<br />
)<br />
type charstring ISO8601DateExtended (<br />
  ISO8601DateCalendarCompleteExtended,<br />
  ISO8601DateCalendarExpandedExtended,<br />
//...further atomic types listed here<br />
)<br />
type charstring ISO8601Date (<br />
  ISO8601DateBasic,<br />
  ISO8601DateExtended<br />
)</td>
</tr>
<tr class="odd print">
<td class="print-category">Steps To Reproduce</td>
<td colspan="5" class="print"></td>
</tr>
<tr class="even print">
<td class="print-category">Additional Information</td>
<td colspan="5" class="print">As contained subtypes represent a subset
of the parent type, it would be usable for all types.<br />
<br />
From semantical point of view list subtyping and contained subtypes are
very similar: the difference is, that the first "lifts" a single value
into the new type, the second "lifts" a set of values. Thus, the same
subtype mixing rules could be applied as for list subtyping (e.g. can be
mixed with other subtyping for integer and float and cannot be mixed for
character strings).</td>
</tr>
<tr class="odd print">
<td class="print-category">Tags</td>
<td colspan="5" class="print">No tags attached.</td>
</tr>
<tr class="even print">
<td class="print-category">Relationships</td>
<td colspan="5" class="print"></td>
</tr>
<tr class="odd print">
<td class="print-category">Attached Files</td>
<td colspan="5" class="print"><img
src="http://oldforge.etsi.org/mantis/images/fileicons/doc.gif"
alt="doc" /> CR_3320_Introduce_contained_subtype_solution_01.doc
(349,184) <span class="italic">29-09-2008 08:24</span><br />
http://oldforge.etsi.org/mantis/file_download.php?file_id=1661&amp;type=bug<br />
<img src="http://oldforge.etsi.org/mantis/images/fileicons/doc.gif"
alt="doc" /> CR_3320_Introduce_contained_subtype_solution_02.doc
(343,040) <span class="italic">29-09-2008 08:32</span><br />
http://oldforge.etsi.org/mantis/file_download.php?file_id=1662&amp;type=bug</td>
</tr>
<tr class="even">
<td colspan="6" class="print-spacer"><hr /></td>
</tr>
<tr class="odd">
<td class="form-title">Issue History</td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr class="even print-category">
<td class="row-category-history">Date Modified</td>
<td class="row-category-history">Username</td>
<td class="row-category-history">Field</td>
<td class="row-category-history">Change</td>
<td></td>
<td></td>
</tr>
<tr class="odd print">
<td class="print">06-05-2008 18:49</td>
<td class="print"><a
href="http://oldforge.etsi.org/mantis/view_user_page.php?id=127">Gyorgy
Rethy</a></td>
<td class="print">New Issue</td>
<td class="print"></td>
<td></td>
<td></td>
</tr>
<tr class="even print">
<td class="print">06-05-2008 18:49</td>
<td class="print"><a
href="http://oldforge.etsi.org/mantis/view_user_page.php?id=127">Gyorgy
Rethy</a></td>
<td class="print">Status</td>
<td class="print">new =&gt; assigned</td>
<td></td>
<td></td>
</tr>
<tr class="odd print">
<td class="print">06-05-2008 18:49</td>
<td class="print"><a
href="http://oldforge.etsi.org/mantis/view_user_page.php?id=127">Gyorgy
Rethy</a></td>
<td class="print">Assigned To</td>
<td class="print">=&gt; Ina Schieferdecker</td>
<td></td>
<td></td>
</tr>
<tr class="even print">
<td class="print">06-05-2008 18:49</td>
<td class="print"><a
href="http://oldforge.etsi.org/mantis/view_user_page.php?id=127">Gyorgy
Rethy</a></td>
<td class="print">Clause Reference(s)</td>
<td class="print">=&gt; Clause 6 &amp; Annex A</td>
<td></td>
<td></td>
</tr>
<tr class="odd print">
<td class="print">06-05-2008 18:49</td>
<td class="print"><a
href="http://oldforge.etsi.org/mantis/view_user_page.php?id=127">Gyorgy
Rethy</a></td>
<td class="print">Source (company - Author)</td>
<td class="print">=&gt; L.M.Ericsson</td>
<td></td>
<td></td>
</tr>
<tr class="even print">
<td class="print">09-05-2008 09:39</td>
<td class="print"><a
href="http://oldforge.etsi.org/mantis/view_user_page.php?id=81">Ina
Schieferdecker</a></td>
<td class="print">Target Version</td>
<td class="print">=&gt; Edition 4.1.1 (not yet published)</td>
<td></td>
<td></td>
</tr>
<tr class="odd print">
<td class="print">15-07-2008 12:54</td>
<td class="print"><a
href="http://oldforge.etsi.org/mantis/view_user_page.php?id=81">Ina
Schieferdecker</a></td>
<td class="print">Assigned To</td>
<td class="print">Ina Schieferdecker =&gt; Thomas DeiÃŸ</td>
<td></td>
<td></td>
</tr>
<tr class="even print">
<td class="print">29-09-2008 08:24</td>
<td class="print"><a
href="http://oldforge.etsi.org/mantis/view_user_page.php?id=112">Thomas
DeiÃŸ</a></td>
<td class="print">File Added:
CR_3320_Introduce_contained_subtype_solution_01.doc</td>
<td class="print"></td>
<td></td>
<td></td>
</tr>
<tr class="odd print">
<td class="print">29-09-2008 08:31</td>
<td class="print"><a
href="http://oldforge.etsi.org/mantis/view_user_page.php?id=112">Thomas
DeiÃŸ</a></td>
<td class="print">Note Added: 0006922</td>
<td class="print"></td>
<td></td>
<td></td>
</tr>
<tr class="even print">
<td class="print">29-09-2008 08:31</td>
<td class="print"><a
href="http://oldforge.etsi.org/mantis/view_user_page.php?id=112">Thomas
DeiÃŸ</a></td>
<td class="print">Assigned To</td>
<td class="print">Thomas DeiÃŸ =&gt; Gyorgy Rethy</td>
<td></td>
<td></td>
</tr>
<tr class="odd print">
<td class="print">29-09-2008 08:32</td>
<td class="print"><a
href="http://oldforge.etsi.org/mantis/view_user_page.php?id=112">Thomas
DeiÃŸ</a></td>
<td class="print">File Added:
CR_3320_Introduce_contained_subtype_solution_02.doc</td>
<td class="print"></td>
<td></td>
<td></td>
</tr>
<tr class="even print">
<td class="print">18-12-2008 14:58</td>
<td class="print"><a
href="http://oldforge.etsi.org/mantis/view_user_page.php?id=127">Gyorgy
Rethy</a></td>
<td class="print">Note Added: 0007741</td>
<td class="print"></td>
<td></td>
<td></td>
</tr>
<tr class="odd print">
<td class="print">18-12-2008 14:58</td>
<td class="print"><a
href="http://oldforge.etsi.org/mantis/view_user_page.php?id=127">Gyorgy
Rethy</a></td>
<td class="print">Assigned To</td>
<td class="print">Gyorgy Rethy =&gt; Ina Schieferdecker</td>
<td></td>
<td></td>
</tr>
<tr class="even print">
<td class="print">18-12-2008 14:58</td>
<td class="print"><a
href="http://oldforge.etsi.org/mantis/view_user_page.php?id=127">Gyorgy
Rethy</a></td>
<td class="print">Status</td>
<td class="print">assigned =&gt; resolved</td>
<td></td>
<td></td>
</tr>
<tr class="odd print">
<td class="print">18-12-2008 14:58</td>
<td class="print"><a
href="http://oldforge.etsi.org/mantis/view_user_page.php?id=127">Gyorgy
Rethy</a></td>
<td class="print">Resolution</td>
<td class="print">open =&gt; fixed</td>
<td></td>
<td></td>
</tr>
<tr class="even print">
<td class="print">18-12-2008 14:58</td>
<td class="print"><a
href="http://oldforge.etsi.org/mantis/view_user_page.php?id=127">Gyorgy
Rethy</a></td>
<td class="print">Fixed in Version</td>
<td class="print">=&gt; Edition 4.1.1 (not yet published)</td>
<td></td>
<td></td>
</tr>
<tr class="odd print">
<td class="print">20-12-2008 15:16</td>
<td class="print"><a
href="http://oldforge.etsi.org/mantis/view_user_page.php?id=81">Ina
Schieferdecker</a></td>
<td class="print">Status</td>
<td class="print">resolved =&gt; closed</td>
<td></td>
<td></td>
</tr>
</tbody>
</table>

  

<table class="width100" data-cellspacing="1">
<colgroup>
<col style="width: 50%" />
<col style="width: 50%" />
</colgroup>
<tbody>
<tr class="odd">
<td colspan="2" class="form-title">Notes</td>
</tr>
<tr class="even">
<td colspan="2" class="print-spacer"><hr /></td>
</tr>
<tr class="odd">
<td class="nopad" data-valign="top" width="20%"><table class="hide"
data-cellspacing="1">
<tbody>
<tr class="odd">
<td class="print">(0006922)</td>
</tr>
<tr class="even">
<td class="print"><a
href="http://oldforge.etsi.org/mantis/view_user_page.php?id=112">Thomas
DeiÃŸ</a>   </td>
</tr>
<tr class="odd">
<td class="print">29-09-2008 08:31   </td>
</tr>
</tbody>
</table></td>
<td class="nopad" data-valign="top" width="85%"><table class="hide"
data-cellspacing="1">
<colgroup>
<col style="width: 100%" />
</colgroup>
<tbody>
<tr class="odd">
<td class="print">Example in CR (charstrings) can be written by defining
corresponding templates first and then using pattern subtyping of
charstrings.<br />
This is possible only for charstrings, this kind of subtyping would be
reasonable for other types, too.<br />
<br />
Solution proposal uploaded for checking. (version 02 contains also rules
on mixing subtyping)</td>
</tr>
</tbody>
</table></td>
</tr>
<tr class="even">
<td colspan="2" class="print-spacer"><hr /></td>
</tr>
<tr class="odd">
<td class="nopad" data-valign="top" width="20%"><table class="hide"
data-cellspacing="1">
<tbody>
<tr class="odd">
<td class="print">(0007741)</td>
</tr>
<tr class="even">
<td class="print"><a
href="http://oldforge.etsi.org/mantis/view_user_page.php?id=127">Gyorgy
Rethy</a>   </td>
</tr>
<tr class="odd">
<td class="print">18-12-2008 14:58   </td>
</tr>
</tbody>
</table></td>
<td class="nopad" data-valign="top" width="85%"><table class="hide"
data-cellspacing="1">
<tbody>
<tr class="odd">
<td class="print">OK with me.</td>
</tr>
</tbody>
</table></td>
</tr>
</tbody>
</table>
