<!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:49 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>0000370: Component Parameters - 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">0000370</td><td class="print">Part 01: TTCN-3 Core Language</td><td class="print">Technical</td><td class="print">public</td><td class="print">22-11-2006 15:55</td><td class="print">12-12-2008 11:56</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">Stephan Schulz</td><td class="print" colspan="4">&#160;</td></tr><tr class="print"><td class="print-category">Assigned To</td><td class="print"></td><td class="print" colspan="4">&#160;</td></tr><tr class="print"><td class="print-category">Priority</td><td class="print">high</td><td class="print-category">Severity</td><td class="print">major</td><td class="print-category">Reproducibility</td><td class="print">always</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">won't fix</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">v3.1.1 (published 2005-06)</td><td class="print" colspan="4">&#160;</td></tr><tr><td class="print-category">Target Version</td><td class="print">v3.2.1 (published 2007-02)</td><td class="print-category">Fixed in Version</td><td class="print"></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">5.2.1.0</td></tr><tr class="print"><td class="print-category">Source  (company  - Author)</td><td class="print" colspan="4">Ina Schieferdecker FOKUS</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">0000370: Component Parameters</td></tr><tr class="print"><td class="print-category">Description</td><td class="print" colspan="5">Component parameters are handled differently than port and timer parameters. The ï¿½architectural/configurationï¿½ objects should all be handled the same. Either they are considered to be references (then, all should be always in parameters) or they are considered to be objects (then, all should be always inout parameters). One of the choices should be taken but not a mix as it is currently done:<br />
5.2.1.0:<br />
By default, all actual parameters of basic types, basic string types, user-defined structured types, address type and component type are passed by value. This may optionally be denoted by the keyword in. To pass parameters of the mentioned types by reference the keywords out or inout shall be used.<br />
Timers and ports are always passed by reference and are identified by the keywords timer and port. The keyword inout may optionally be used to denote passing by reference<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">The smallest change to TTCN-3 is to make component parameters also inout parameters:<br />
<br />
By default, all actual parameters of basic types, basic string types, user-defined structured types, and address type and component type are passed by value. This may optionally be denoted by the keyword in. To pass parameters of the mentioned types by reference the keywords out or inout shall be used.<br />
Timers Components, timers and ports are always passed by reference. Timer parameters and are identified by the keywords timer and port. The keyword inout may optionally be used to denote passing by reference.<br />
</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"></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">22-11-2006 15:55</td><td class="print"><a href="http://oldforge.etsi.org/mantis/view_user_page.php?id=56">Stephan Schulz</a></td><td class="print">New Issue</td><td class="print"></td></tr><tr class="print"><td class="print">22-11-2006 15:55</td><td class="print"><a href="http://oldforge.etsi.org/mantis/view_user_page.php?id=56">Stephan Schulz</a></td><td class="print">Clause Reference(s)</td><td class="print"> =&gt; 5.2.1.0</td></tr><tr class="print"><td class="print">22-11-2006 15:55</td><td class="print"><a href="http://oldforge.etsi.org/mantis/view_user_page.php?id=56">Stephan Schulz</a></td><td class="print">Source  (company  - Author)</td><td class="print"> =&gt; Ina Schieferdecker FOKUS</td></tr><tr class="print"><td class="print">22-11-2006 15:56</td><td class="print"><a href="http://oldforge.etsi.org/mantis/view_user_page.php?id=56">Stephan Schulz</a></td><td class="print">Status</td><td class="print">new =&gt; closed</td></tr><tr class="print"><td class="print">22-11-2006 15:56</td><td class="print"><a href="http://oldforge.etsi.org/mantis/view_user_page.php?id=56">Stephan Schulz</a></td><td class="print">Note Added: 0000291</td><td class="print"></td></tr><tr class="print"><td class="print">22-11-2006 15:56</td><td class="print"><a href="http://oldforge.etsi.org/mantis/view_user_page.php?id=56">Stephan Schulz</a></td><td class="print">Resolution</td><td class="print">open =&gt; won't fix</td></tr><tr class="print"><td class="print">12-12-2008 11:56</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 3.2.1</td></tr><tr class="print"><td class="print">12-12-2008 11:56</td><td class="print"><a href="http://oldforge.etsi.org/mantis/view_user_page.php?id=81">Ina Schieferdecker</a></td><td class="print">Description Updated</td><td class="print"></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">
				(0000291)
			</td>
		</tr>
		<tr>
			<td class="print">
				<a href="http://oldforge.etsi.org/mantis/view_user_page.php?id=56">Stephan Schulz</a>&#160;&#160;&#160;
			</td>
		</tr>
		<tr>
			<td class="print">
				22-11-2006 15:56&#160;&#160;&#160;
							</td>
		</tr>
		</table>
	</td>
	<td class="nopad" valign="top" width="85%">
		<table class="hide" cellspacing="1">
		<tr>
			<td class="print">
				For the following reasons, I recommend rejecting this CR:<br />
<br />
•	The handling of component references is more comparable to the handling of values data types than the handling of ports and timers. It is allowed to have variables of component references, but it is not allowed to have variables of ports and timers. Therefore, component types should be handled more like data types than port types or timers.<br />
•	The statement ports and timers are passed by reference is not completely correct. Correct is that names (= references) of ports and timers are passed in by constant value, i.e., you are not allowed to change the value (= references) of these names even within the called function (Note: setting or resetting a timer changes the status of a timer object but the name of the timer, which may be passed in, does not change), which is possible when passing in a variable of a component type or integer. In fact, timers and ports are more passed in like values than like references.<br />
•	The call by value mechanism is a programming mechanism, which supports secure programming. I.e., it avoids the unwanted change of values as a side effect within a function. Disallowing, this mechanism for component references just because some people think that timers are closer to components than integer is very strange.			</td>
		</tr>
		</table>
	</td>
</tr>
</table>
</body>
</html>
