<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
	<link rel="stylesheet" type="text/css" href="http://oldforge.etsi.org/mantis/css/default.css" />
	<script type="text/javascript"><!--
		if(document.layers) {document.write("<style>td{padding:0px;}<\/style>")}
	// --></script>
	<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
	<meta http-equiv="Pragma" content="no-cache" />
	<meta http-equiv="Cache-Control" content="no-cache" />
	<meta http-equiv="Pragma-directive" content="no-cache" />
	<meta http-equiv="Cache-Directive" content="no-cache" />
	<meta http-equiv="Expires" content="Tue, 17 Dec 2024 09:19:44 GMT" />
	<link rel="shortcut icon" href="/mantis/images/favicon.ico" type="image/x-icon" />
	<link rel="search" type="application/opensearchdescription+xml" title="MantisBT: Text Search" href="http://oldforge.etsi.org/mantis/browser_search_plugin.php?type=text" />	<link rel="search" type="application/opensearchdescription+xml" title="MantisBT: Issue Id" href="http://oldforge.etsi.org/mantis/browser_search_plugin.php?type=id" />	<title>0003320: Introduce contained subtype type constraints - ETSI's Bug Tracker</title>
<script type="text/javascript" src="/mantis/javascript/min/common.js"></script>
<script type="text/javascript">var loading_lang = "Loading...";</script><script type="text/javascript" src="/mantis/javascript/min/ajax.js"></script>
</head>
<body>
<br /><table class="width100" cellspacing="1"><tr><td class="form-title" colspan="6"><div class="center">ETSI's Bug Tracker - Part 01: TTCN-3 Core Language</div></td></tr><tr><td class="form-title" colspan="6">View Issue Details</td></tr><tr><td class="print-spacer" colspan="6"><hr size="1" /></td></tr><tr class="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="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><td class="print-spacer" colspan="6"><hr size="1" /></td></tr><tr class="print"><td class="print-category">Reporter</td><td class="print">Gyorgy Rethy</td><td class="print" colspan="4">&#160;</td></tr><tr class="print"><td class="print-category">Assigned To</td><td class="print">Ina Schieferdecker</td><td class="print" colspan="4">&#160;</td></tr><tr class="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="print"><td class="print-category">Status</td><td class="print">closed</td><td class="print-category">Resolution</td><td class="print">fixed</td><td class="print" colspan="2">&#160;</td></tr><tr class="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="print"><td class="print-category">Product Version</td><td class="print"></td><td class="print" colspan="4">&#160;</td></tr><tr><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 class="print" colspan="2">&#160;</td></tr><tr class="print"><td class="print-category">Clause Reference(s)</td><td class="print" colspan="4">Clause 6 &amp; Annex A</td></tr><tr class="print"><td class="print-category">Source  (company  - Author)</td><td class="print" colspan="4">L.M.Ericsson</td></tr><tr><td class="print-spacer" colspan="6"><hr size="1" /></td></tr><tr class="print"><td class="print-category">Summary</td><td class="print" colspan="5">0003320: Introduce contained subtype type constraints</td></tr><tr class="print"><td class="print-category">Description</td><td class="print" colspan="5">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 />
&#160;&#160;&quot;{century}({year}{month}{dayOfMonth}&quot;)<br />
<br />
type charstring  ISO8601DateCalendarCompleteExtended ( pattern<br />
&#160;&#160;&quot;{century}{year}-{month}-{dayOfMonth}&quot;)<br />
<br />
type charstring  ISO8601DateCalendarReducedBasic ( pattern<br />
&#160;&#160;&quot;{century}({year}(-{month})#(0,1))#(0,1)&quot;)<br />
<br />
type charstring  ISO8601DateCalendarExpandedBasic ( pattern<br />
&#160;&#160;&quot;{centuryExpansion}{century}({year}(({month}{dayOfMonth})|(-{month}))#(0,1))#(0,1)&quot;)<br />
<br />
type charstring  ISO8601DateCalendarExpandedExtended ( pattern<br />
&#160;&#160;&quot;{centuryExpansion}{century}{year}-{month}-{dayOfMonth}&quot;)<br />
<br />
//... further atomic date representations here<br />
<br />
//more complex definitions<br />
type charstring  ISO8601DateBasic ( pattern<br />
&#160;&#160;&quot;{centuryExpansion}#(0,1){century}({year}(({month}{dayOfMonth})|({dayOfYear})|({week}({dayOfWeek})#(0,1))|(-{month}))#(0,1))#(0,1)&quot;)<br />
<br />
type charstring  ISO8601DateExtended ( pattern<br />
&#160;&#160;&quot;{centuryExpansion}#(0,1){century}{year}-(({month}-{dayOfMonth})|({dayOfYear})|({week}(-{dayOfWeek})#(0,1)))&quot;)<br />
<br />
type charstring  ISO8601Date ( pattern<br />
&#160;&#160;&quot;{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)&quot;)<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 />
&#160;&#160;ISO8601DateCalendarCompleteBasic,<br />
&#160;&#160;ISO8601DateCalendarReducedBasic,<br />
&#160;&#160;ISO8601DateCalendarExpandedBasic,<br />
//...further atomic types listed here<br />
)<br />
type charstring  ISO8601DateExtended (<br />
&#160;&#160;ISO8601DateCalendarCompleteExtended,<br />
&#160;&#160;ISO8601DateCalendarExpandedExtended,<br />
//...further atomic types listed here<br />
)<br />
type charstring  ISO8601Date (<br />
&#160;&#160;ISO8601DateBasic,<br />
&#160;&#160;ISO8601DateExtended<br />
)</td></tr><tr class="print"><td class="print-category">Steps To Reproduce</td><td class="print" colspan="5"></td></tr><tr class="print"><td class="print-category">Additional Information</td><td class="print" colspan="5">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 &quot;lifts&quot; a single value into the new type, the second &quot;lifts&quot; 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="print"><td class="print-category">Tags</td><td class="print" colspan="5">No tags attached.</td></tr><tr class="print"><td class="print-category">Relationships</td><td class="print" colspan="5"></td></tr><tr class="print"><td class="print-category">Attached Files</td><td class="print" colspan="5"><img src="http://oldforge.etsi.org/mantis/images/fileicons/doc.gif" alt="doc" />&#160;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" />&#160;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><td class="print-spacer" colspan="6"><hr size="1" /></td></tr><tr><td class="form-title">Issue History</td></tr><tr class="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></tr><tr class="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></tr><tr class="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></tr><tr class="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></tr><tr class="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></tr><tr class="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></tr><tr class="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></tr><tr class="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></tr><tr class="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></tr><tr class="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></tr><tr class="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></tr><tr class="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></tr><tr class="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></tr><tr class="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></tr><tr class="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></tr><tr class="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></tr><tr class="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></tr><tr class="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></tr></table>
<br />
<table class="width100" cellspacing="1">
<tr>
	<td class="form-title" colspan="2">
		Notes	</td>
</tr>
<tr>
	<td class="print-spacer" colspan="2">
		<hr size="1" />
	</td>
</tr>
<tr>
	<td class="nopad" valign="top" width="20%">
		<table class="hide" cellspacing="1">
		<tr>
			<td class="print">
				(0006922)
			</td>
		</tr>
		<tr>
			<td class="print">
				<a href="http://oldforge.etsi.org/mantis/view_user_page.php?id=112">Thomas DeiÃŸ</a>&#160;&#160;&#160;
			</td>
		</tr>
		<tr>
			<td class="print">
				29-09-2008 08:31&#160;&#160;&#160;
							</td>
		</tr>
		</table>
	</td>
	<td class="nopad" valign="top" width="85%">
		<table class="hide" cellspacing="1">
		<tr>
			<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>
		</table>
	</td>
</tr>
<tr>
	<td class="print-spacer" colspan="2">
		<hr size="1" />
	</td>
</tr>
<tr>
	<td class="nopad" valign="top" width="20%">
		<table class="hide" cellspacing="1">
		<tr>
			<td class="print">
				(0007741)
			</td>
		</tr>
		<tr>
			<td class="print">
				<a href="http://oldforge.etsi.org/mantis/view_user_page.php?id=127">Gyorgy Rethy</a>&#160;&#160;&#160;
			</td>
		</tr>
		<tr>
			<td class="print">
				18-12-2008 14:58&#160;&#160;&#160;
							</td>
		</tr>
		</table>
	</td>
	<td class="nopad" valign="top" width="85%">
		<table class="hide" cellspacing="1">
		<tr>
			<td class="print">
				OK with me.			</td>
		</tr>
		</table>
	</td>
</tr>
</table>
</body>
</html>
