<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://www.stridewiki.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Robg</id>
	<title>STRIDE Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://www.stridewiki.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Robg"/>
	<link rel="alternate" type="text/html" href="https://www.stridewiki.com/index.php?title=Special:Contributions/Robg"/>
	<updated>2026-04-28T05:42:04Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.10</generator>
	<entry>
		<id>https://www.stridewiki.com/index.php?title=STRIDE_3.0.02xx&amp;diff=8929</id>
		<title>STRIDE 3.0.02xx</title>
		<link rel="alternate" type="text/html" href="https://www.stridewiki.com/index.php?title=STRIDE_3.0.02xx&amp;diff=8929"/>
		<updated>2009-01-16T17:34:18Z</updated>

		<summary type="html">&lt;p&gt;Robg: /* 3.0.0201 (Beacon&amp;#039;s Beta 1) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Release Notes&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
This page documents the changes in STRIDE version 3.0.02xx (code name &#039;&#039;Beacon&#039;s&#039;&#039;). &lt;br /&gt;
&lt;br /&gt;
Please review this information before upgrading from an earlier version. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
Note that if you are upgrading from a previous installation &#039;&#039;&#039;you must uninstall your existing STRIDE&#039;&#039;&#039; before installing version 3.0.02xx. &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
= What&#039;s New  =&lt;br /&gt;
&lt;br /&gt;
Based on customer feedback, we&#039;ve improved Test Unit and Test Class capabilities with Test Class Macros.  Integration with Linux has never been easier with improvements to the Linux SDK. &lt;br /&gt;
&lt;br /&gt;
== Usability Improvements ==&lt;br /&gt;
=== Test Class Macros ===&lt;br /&gt;
&lt;br /&gt;
A new set of [[Test_Units#ASSERT.2FEXPECT_Macros|macros]] has been created to make it easy to perform assertions within target test code and automatically annotate resulting reports in case of failures. The update includes [[Test_Macros_Samples|samples]] to get you started.&lt;br /&gt;
&lt;br /&gt;
=== Linux SDK  ===&lt;br /&gt;
&lt;br /&gt;
A new [[Linux_SDK|SDK]] to enable easy integration with Linux devices has been packaged.&lt;br /&gt;
&lt;br /&gt;
= Acquiring the Software =&lt;br /&gt;
&lt;br /&gt;
You can download the latest release from the S2 Technologies ftp site: ftp://ftp.s2technologies.com &lt;br /&gt;
&lt;br /&gt;
To run STRIDE you will need a license. If you are not yet a customer of S2 and would like to obtain an evaluation license, email [mailto:sales@s2technologies.com S2 Sales] or call our offices at &#039;&#039;&#039;760-635-2345&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
= Installing the Software  =&lt;br /&gt;
&lt;br /&gt;
To install STRIDE for the first time, or as an upgrade to an existing installation, please refer to [[Desktop Installation]]. &lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
Note: if you are upgrading from a previous installation &#039;&#039;&#039;you must uninstall your existing STRIDE&#039;&#039;&#039; before installing version 3.0.0201. &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
If you are new to STRIDE, we recommend that you investigate the [[Samples_Overview|samples]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 3.0.0201 (Beacon&#039;s Beta 1) ==&lt;br /&gt;
* Linux [[Linux_SDK|SDK]] updates. &lt;br /&gt;
* [[Test_Units#ASSERT.2FEXPECT_Macros|Test Unit Macros]] introduced.&lt;br /&gt;
&lt;br /&gt;
=== Runtime ===&lt;br /&gt;
&lt;br /&gt;
The following two runtime files have been added. They are optional, and necessary only if the Test Class Macros feature is in use.&lt;br /&gt;
&lt;br /&gt;
 srtestmacros.cpp&lt;br /&gt;
 srtestmacros.h&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:3.0.02xx]]&lt;br /&gt;
[[Category:Release Notes]]&lt;/div&gt;</summary>
		<author><name>Robg</name></author>
	</entry>
	<entry>
		<id>https://www.stridewiki.com/index.php?title=STRIDE_3.0.02xx&amp;diff=8928</id>
		<title>STRIDE 3.0.02xx</title>
		<link rel="alternate" type="text/html" href="https://www.stridewiki.com/index.php?title=STRIDE_3.0.02xx&amp;diff=8928"/>
		<updated>2009-01-16T17:33:58Z</updated>

		<summary type="html">&lt;p&gt;Robg: /* 3.0.0201 (Beacon&amp;#039;s Beta 1) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Release Notes&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
This page documents the changes in STRIDE version 3.0.02xx (code name &#039;&#039;Beacon&#039;s&#039;&#039;). &lt;br /&gt;
&lt;br /&gt;
Please review this information before upgrading from an earlier version. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
Note that if you are upgrading from a previous installation &#039;&#039;&#039;you must uninstall your existing STRIDE&#039;&#039;&#039; before installing version 3.0.02xx. &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
= What&#039;s New  =&lt;br /&gt;
&lt;br /&gt;
Based on customer feedback, we&#039;ve improved Test Unit and Test Class capabilities with Test Class Macros.  Integration with Linux has never been easier with improvements to the Linux SDK. &lt;br /&gt;
&lt;br /&gt;
== Usability Improvements ==&lt;br /&gt;
=== Test Class Macros ===&lt;br /&gt;
&lt;br /&gt;
A new set of [[Test_Units#ASSERT.2FEXPECT_Macros|macros]] has been created to make it easy to perform assertions within target test code and automatically annotate resulting reports in case of failures. The update includes [[Test_Macros_Samples|samples]] to get you started.&lt;br /&gt;
&lt;br /&gt;
=== Linux SDK  ===&lt;br /&gt;
&lt;br /&gt;
A new [[Linux_SDK|SDK]] to enable easy integration with Linux devices has been packaged.&lt;br /&gt;
&lt;br /&gt;
= Acquiring the Software =&lt;br /&gt;
&lt;br /&gt;
You can download the latest release from the S2 Technologies ftp site: ftp://ftp.s2technologies.com &lt;br /&gt;
&lt;br /&gt;
To run STRIDE you will need a license. If you are not yet a customer of S2 and would like to obtain an evaluation license, email [mailto:sales@s2technologies.com S2 Sales] or call our offices at &#039;&#039;&#039;760-635-2345&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
= Installing the Software  =&lt;br /&gt;
&lt;br /&gt;
To install STRIDE for the first time, or as an upgrade to an existing installation, please refer to [[Desktop Installation]]. &lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
Note: if you are upgrading from a previous installation &#039;&#039;&#039;you must uninstall your existing STRIDE&#039;&#039;&#039; before installing version 3.0.0201. &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
If you are new to STRIDE, we recommend that you investigate the [[Samples_Overview|samples]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 3.0.0201 (Beacon&#039;s Beta 1) ==&lt;br /&gt;
* Linux [[Linux_SDK|SDK]] updates. &lt;br /&gt;
* [[Test_Units#ASSERT.2FEXPECT_Macros|Test Unit Macros]]introduced.&lt;br /&gt;
&lt;br /&gt;
=== Runtime ===&lt;br /&gt;
&lt;br /&gt;
The following two runtime files have been added. They are optional, and necessary only if the Test Class Macros feature is in use.&lt;br /&gt;
&lt;br /&gt;
 srtestmacros.cpp&lt;br /&gt;
 srtestmacros.h&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:3.0.02xx]]&lt;br /&gt;
[[Category:Release Notes]]&lt;/div&gt;</summary>
		<author><name>Robg</name></author>
	</entry>
	<entry>
		<id>https://www.stridewiki.com/index.php?title=STRIDE_3.0.02xx&amp;diff=8927</id>
		<title>STRIDE 3.0.02xx</title>
		<link rel="alternate" type="text/html" href="https://www.stridewiki.com/index.php?title=STRIDE_3.0.02xx&amp;diff=8927"/>
		<updated>2009-01-16T17:32:58Z</updated>

		<summary type="html">&lt;p&gt;Robg: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Release Notes&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
This page documents the changes in STRIDE version 3.0.02xx (code name &#039;&#039;Beacon&#039;s&#039;&#039;). &lt;br /&gt;
&lt;br /&gt;
Please review this information before upgrading from an earlier version. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
Note that if you are upgrading from a previous installation &#039;&#039;&#039;you must uninstall your existing STRIDE&#039;&#039;&#039; before installing version 3.0.02xx. &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
= What&#039;s New  =&lt;br /&gt;
&lt;br /&gt;
Based on customer feedback, we&#039;ve improved Test Unit and Test Class capabilities with Test Class Macros.  Integration with Linux has never been easier with improvements to the Linux SDK. &lt;br /&gt;
&lt;br /&gt;
== Usability Improvements ==&lt;br /&gt;
=== Test Class Macros ===&lt;br /&gt;
&lt;br /&gt;
A new set of [[Test_Units#ASSERT.2FEXPECT_Macros|macros]] has been created to make it easy to perform assertions within target test code and automatically annotate resulting reports in case of failures. The update includes [[Test_Macros_Samples|samples]] to get you started.&lt;br /&gt;
&lt;br /&gt;
=== Linux SDK  ===&lt;br /&gt;
&lt;br /&gt;
A new [[Linux_SDK|SDK]] to enable easy integration with Linux devices has been packaged.&lt;br /&gt;
&lt;br /&gt;
= Acquiring the Software =&lt;br /&gt;
&lt;br /&gt;
You can download the latest release from the S2 Technologies ftp site: ftp://ftp.s2technologies.com &lt;br /&gt;
&lt;br /&gt;
To run STRIDE you will need a license. If you are not yet a customer of S2 and would like to obtain an evaluation license, email [mailto:sales@s2technologies.com S2 Sales] or call our offices at &#039;&#039;&#039;760-635-2345&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
= Installing the Software  =&lt;br /&gt;
&lt;br /&gt;
To install STRIDE for the first time, or as an upgrade to an existing installation, please refer to [[Desktop Installation]]. &lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
Note: if you are upgrading from a previous installation &#039;&#039;&#039;you must uninstall your existing STRIDE&#039;&#039;&#039; before installing version 3.0.0201. &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
If you are new to STRIDE, we recommend that you investigate the [[Samples_Overview|samples]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 3.0.0201 (Beacon&#039;s Beta 1) ==&lt;br /&gt;
* Linux [[Linux_SDK|SDK]]updates. &lt;br /&gt;
* [[Test_Units#ASSERT.2FEXPECT_Macros|Test Unit Macros]]introduced.&lt;br /&gt;
&lt;br /&gt;
=== Runtime ===&lt;br /&gt;
&lt;br /&gt;
The following two runtime files have been added. They are optional, and necessary only if the Test Class Macros feature is in use.&lt;br /&gt;
&lt;br /&gt;
 srtestmacros.cpp&lt;br /&gt;
 srtestmacros.h&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:3.0.02xx]]&lt;br /&gt;
[[Category:Release Notes]]&lt;/div&gt;</summary>
		<author><name>Robg</name></author>
	</entry>
	<entry>
		<id>https://www.stridewiki.com/index.php?title=STRIDE_3.0.02xx&amp;diff=8926</id>
		<title>STRIDE 3.0.02xx</title>
		<link rel="alternate" type="text/html" href="https://www.stridewiki.com/index.php?title=STRIDE_3.0.02xx&amp;diff=8926"/>
		<updated>2009-01-16T17:31:44Z</updated>

		<summary type="html">&lt;p&gt;Robg: /* Change Details */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Release Notes&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
This page documents the changes in STRIDE version 3.0.02xx (code name &#039;&#039;Beacon&#039;s&#039;&#039;). &lt;br /&gt;
&lt;br /&gt;
Please review this information before upgrading from an earlier version. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
Note that if you are upgrading from a previous installation &#039;&#039;&#039;you must uninstall your existing STRIDE&#039;&#039;&#039; before installing version 3.0.02xx. &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
= What&#039;s New  =&lt;br /&gt;
&lt;br /&gt;
Based on customer feedback, we&#039;ve improved Test Unit and Test Class capabilities with Test Class Macros.  Integration with Linux has never been easier with improvements to the Linux SDK. &lt;br /&gt;
&lt;br /&gt;
== Usability Improvements ==&lt;br /&gt;
=== Test Class Macros ===&lt;br /&gt;
&lt;br /&gt;
A new set of [[Test_Units#ASSERT.2FEXPECT_Macros|macros]] has been created to make it easy to perform assertions within target test code and automatically annotate resulting reports in case of failures. The update includes [[Test_Macros_Samples|samples]] to get you started.&lt;br /&gt;
&lt;br /&gt;
=== Linux SDK  ===&lt;br /&gt;
&lt;br /&gt;
A new [[Linux_SDK|SDK]] to enable easy integration with Linux devices has been packaged.&lt;br /&gt;
&lt;br /&gt;
= Acquiring the Software =&lt;br /&gt;
&lt;br /&gt;
You can download the latest release from the S2 Technologies ftp site: ftp://ftp.s2technologies.com &lt;br /&gt;
&lt;br /&gt;
To run STRIDE you will need a license. If you are not yet a customer of S2 and would like to obtain an evaluation license, email [mailto:sales@s2technologies.com S2 Sales] or call our offices at &#039;&#039;&#039;760-635-2345&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
= Installing the Software  =&lt;br /&gt;
&lt;br /&gt;
To install STRIDE for the first time, or as an upgrade to an existing installation, please refer to [[Desktop Installation]]. &lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
Note: if you are upgrading from a previous installation &#039;&#039;&#039;you must uninstall your existing STRIDE&#039;&#039;&#039; before installing version 3.0.0201. &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
If you are new to STRIDE, we recommend that you investigate the [[Samples_Overview|samples]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 3.0.0201 (Beacon&#039;s Beta 1) ==&lt;br /&gt;
* Linux SDK updates. &lt;br /&gt;
* Test Unit Macros introduced.&lt;br /&gt;
&lt;br /&gt;
=== Runtime ===&lt;br /&gt;
&lt;br /&gt;
The following two runtime files have been added. They are optional, and necessary only if the Test Class Macros feature is in use.&lt;br /&gt;
&lt;br /&gt;
 srtestmacros.cpp&lt;br /&gt;
 srtestmacros.h&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:3.0.02xx]]&lt;br /&gt;
[[Category:Release Notes]]&lt;/div&gt;</summary>
		<author><name>Robg</name></author>
	</entry>
	<entry>
		<id>https://www.stridewiki.com/index.php?title=STRIDE_3.0.02xx&amp;diff=8925</id>
		<title>STRIDE 3.0.02xx</title>
		<link rel="alternate" type="text/html" href="https://www.stridewiki.com/index.php?title=STRIDE_3.0.02xx&amp;diff=8925"/>
		<updated>2009-01-16T17:31:30Z</updated>

		<summary type="html">&lt;p&gt;Robg: /* 3.0.0101a */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Release Notes&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
This page documents the changes in STRIDE version 3.0.02xx (code name &#039;&#039;Beacon&#039;s&#039;&#039;). &lt;br /&gt;
&lt;br /&gt;
Please review this information before upgrading from an earlier version. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
Note that if you are upgrading from a previous installation &#039;&#039;&#039;you must uninstall your existing STRIDE&#039;&#039;&#039; before installing version 3.0.02xx. &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
= What&#039;s New  =&lt;br /&gt;
&lt;br /&gt;
Based on customer feedback, we&#039;ve improved Test Unit and Test Class capabilities with Test Class Macros.  Integration with Linux has never been easier with improvements to the Linux SDK. &lt;br /&gt;
&lt;br /&gt;
== Usability Improvements ==&lt;br /&gt;
=== Test Class Macros ===&lt;br /&gt;
&lt;br /&gt;
A new set of [[Test_Units#ASSERT.2FEXPECT_Macros|macros]] has been created to make it easy to perform assertions within target test code and automatically annotate resulting reports in case of failures. The update includes [[Test_Macros_Samples|samples]] to get you started.&lt;br /&gt;
&lt;br /&gt;
=== Linux SDK  ===&lt;br /&gt;
&lt;br /&gt;
A new [[Linux_SDK|SDK]] to enable easy integration with Linux devices has been packaged.&lt;br /&gt;
&lt;br /&gt;
= Acquiring the Software =&lt;br /&gt;
&lt;br /&gt;
You can download the latest release from the S2 Technologies ftp site: ftp://ftp.s2technologies.com &lt;br /&gt;
&lt;br /&gt;
To run STRIDE you will need a license. If you are not yet a customer of S2 and would like to obtain an evaluation license, email [mailto:sales@s2technologies.com S2 Sales] or call our offices at &#039;&#039;&#039;760-635-2345&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
= Installing the Software  =&lt;br /&gt;
&lt;br /&gt;
To install STRIDE for the first time, or as an upgrade to an existing installation, please refer to [[Desktop Installation]]. &lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
Note: if you are upgrading from a previous installation &#039;&#039;&#039;you must uninstall your existing STRIDE&#039;&#039;&#039; before installing version 3.0.0201. &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
If you are new to STRIDE, we recommend that you investigate the [[Samples_Overview|samples]].&lt;br /&gt;
&lt;br /&gt;
= Change Details  =&lt;br /&gt;
== 3.0.0201 (Beacon&#039;s Beta 1) ==&lt;br /&gt;
* Linux SDK updates. &lt;br /&gt;
* Test Unit Macros introduced.&lt;br /&gt;
&lt;br /&gt;
=== Runtime ===&lt;br /&gt;
&lt;br /&gt;
The following two runtime files have been added. They are optional, and necessary only if the Test Class Macros feature is in use.&lt;br /&gt;
&lt;br /&gt;
 srtestmacros.cpp&lt;br /&gt;
 srtestmacros.h&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:3.0.02xx]]&lt;br /&gt;
[[Category:Release Notes]]&lt;/div&gt;</summary>
		<author><name>Robg</name></author>
	</entry>
	<entry>
		<id>https://www.stridewiki.com/index.php?title=STRIDE_3.0.02xx&amp;diff=8924</id>
		<title>STRIDE 3.0.02xx</title>
		<link rel="alternate" type="text/html" href="https://www.stridewiki.com/index.php?title=STRIDE_3.0.02xx&amp;diff=8924"/>
		<updated>2009-01-16T17:30:18Z</updated>

		<summary type="html">&lt;p&gt;Robg: New page: &amp;#039;&amp;#039;&amp;#039;Release Notes&amp;#039;&amp;#039;&amp;#039;   This page documents the changes in STRIDE version 3.0.02xx (code name &amp;#039;&amp;#039;Beacon&amp;#039;s&amp;#039;&amp;#039;).   Please review this information before upgrading from an earlier version.   &amp;lt;br/...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Release Notes&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
This page documents the changes in STRIDE version 3.0.02xx (code name &#039;&#039;Beacon&#039;s&#039;&#039;). &lt;br /&gt;
&lt;br /&gt;
Please review this information before upgrading from an earlier version. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
Note that if you are upgrading from a previous installation &#039;&#039;&#039;you must uninstall your existing STRIDE&#039;&#039;&#039; before installing version 3.0.02xx. &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
= What&#039;s New  =&lt;br /&gt;
&lt;br /&gt;
Based on customer feedback, we&#039;ve improved Test Unit and Test Class capabilities with Test Class Macros.  Integration with Linux has never been easier with improvements to the Linux SDK. &lt;br /&gt;
&lt;br /&gt;
== Usability Improvements ==&lt;br /&gt;
=== Test Class Macros ===&lt;br /&gt;
&lt;br /&gt;
A new set of [[Test_Units#ASSERT.2FEXPECT_Macros|macros]] has been created to make it easy to perform assertions within target test code and automatically annotate resulting reports in case of failures. The update includes [[Test_Macros_Samples|samples]] to get you started.&lt;br /&gt;
&lt;br /&gt;
=== Linux SDK  ===&lt;br /&gt;
&lt;br /&gt;
A new [[Linux_SDK|SDK]] to enable easy integration with Linux devices has been packaged.&lt;br /&gt;
&lt;br /&gt;
= Acquiring the Software =&lt;br /&gt;
&lt;br /&gt;
You can download the latest release from the S2 Technologies ftp site: ftp://ftp.s2technologies.com &lt;br /&gt;
&lt;br /&gt;
To run STRIDE you will need a license. If you are not yet a customer of S2 and would like to obtain an evaluation license, email [mailto:sales@s2technologies.com S2 Sales] or call our offices at &#039;&#039;&#039;760-635-2345&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
= Installing the Software  =&lt;br /&gt;
&lt;br /&gt;
To install STRIDE for the first time, or as an upgrade to an existing installation, please refer to [[Desktop Installation]]. &lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
Note: if you are upgrading from a previous installation &#039;&#039;&#039;you must uninstall your existing STRIDE&#039;&#039;&#039; before installing version 3.0.0201. &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
If you are new to STRIDE, we recommend that you investigate the [[Samples_Overview|samples]].&lt;br /&gt;
&lt;br /&gt;
= Change Details  =&lt;br /&gt;
== 3.0.0101a ==&lt;br /&gt;
* Linux version of the STRIDE [[Build Tools]] is officially introduced.&lt;br /&gt;
* Fixed several minor issues in [[STRIDE Studio]].&lt;br /&gt;
&lt;br /&gt;
=== Runtime ===&lt;br /&gt;
&lt;br /&gt;
The following two files have been added. They are optional, and necessary only if the Test Class Macros feature is in use.&lt;br /&gt;
&lt;br /&gt;
 srtestmacros.cpp&lt;br /&gt;
 srtestmacros.h&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:3.0.02xx]]&lt;br /&gt;
[[Category:Release Notes]]&lt;/div&gt;</summary>
		<author><name>Robg</name></author>
	</entry>
	<entry>
		<id>https://www.stridewiki.com/index.php?title=Main_Page&amp;diff=8923</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://www.stridewiki.com/index.php?title=Main_Page&amp;diff=8923"/>
		<updated>2009-01-16T17:24:40Z</updated>

		<summary type="html">&lt;p&gt;Robg: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Welcome to the S2 Technologies™ &#039;&#039;&#039;STRIDE&#039;&#039;&#039;™&#039;&#039;&#039; 3.0 Support Wiki&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
All contributions are welcome and encouraged. Please read &#039;&#039;&#039;[[Help:How to add a topic|How to add a topic]]&#039;&#039;&#039; and &#039;&#039;&#039;[[Help:Contents|Help]]&#039;&#039;&#039; pages for guidelines and instructions on editing. You must &#039;&#039;&#039;[[Special:Userlogin|log in or create an account]]&#039;&#039;&#039; before you can edit a page. &lt;br /&gt;
&lt;br /&gt;
Please select a topic or category heading below, or enter a search string in the Search field to the left. &lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;FCK__ShowTableBorders&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;FCK__ShowTableBorders&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | &lt;br /&gt;
{| class=&amp;quot;FCK__ShowTableBorders&amp;quot; style=&amp;quot;border-right: rgb(187,204,204) 1px solid; border-top: rgb(187,204,204) 1px solid; vertical-align: top; border-left: rgb(187,204,204) 1px solid; border-bottom: rgb(187,204,204) 1px solid&amp;quot; cellspacing=&amp;quot;5&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;border-right: rgb(163,176,191) 1px solid; padding-right: 0.4em; border-top: rgb(163,176,191) 1px solid; padding-left: 0.4em; font-weight: bold; font-size: 120%; background: rgb(206,223,242) 0% 50%; padding-bottom: 0.2em; margin: 0pt; border-left: rgb(163,176,191) 1px solid; color: rgb(0,0,0); padding-top: 0.2em; border-bottom: rgb(163,176,191) 1px solid; text-align: left; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial&amp;quot; | [[:Category:Installation|Installation]]&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &lt;br /&gt;
! style=&amp;quot;border-right: rgb(163,176,191) 1px solid; padding-right: 0.4em; border-top: rgb(163,176,191) 1px solid; padding-left: 0.4em; font-weight: bold; font-size: 120%; background: rgb(206,223,242) 0% 50%; padding-bottom: 0.2em; margin: 0pt; border-left: rgb(163,176,191) 1px solid; color: rgb(0,0,0); padding-top: 0.2em; border-bottom: rgb(163,176,191) 1px solid; text-align: left; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial&amp;quot; | [[:Category:Reference|Reference]]&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &lt;br /&gt;
! style=&amp;quot;border-right: rgb(163,176,191) 1px solid; padding-right: 0.4em; border-top: rgb(163,176,191) 1px solid; padding-left: 0.4em; font-weight: bold; font-size: 120%; background: rgb(206,223,242) 0% 50%; padding-bottom: 0.2em; margin: 0pt; border-left: rgb(163,176,191) 1px solid; color: rgb(0,0,0); padding-top: 0.2em; border-bottom: rgb(163,176,191) 1px solid; text-align: left; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial&amp;quot; | [[:Category:Samples|Samples]] &amp;lt;!--&lt;br /&gt;
Deploying&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | &lt;br /&gt;
*[[Desktop_Installation|Desktop Installation]] &lt;br /&gt;
*[[Build_Integration|Build Integration]] &lt;br /&gt;
*[[Target_Integration|Target Integration]] &lt;br /&gt;
*[[Verifying Installation|Verification]]&amp;lt;u&amp;gt;&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Reference&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | &lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[Reference Overview|Overview]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[Runtime Reference|Runtime]]&amp;lt;/li&amp;gt; &lt;br /&gt;
&amp;lt;li&amp;gt;[[Build Tools|Build Tools]]&amp;lt;/li&amp;gt; &lt;br /&gt;
&amp;lt;li&amp;gt;[[SCL_Pragmas|SCL Pragmas]]&amp;lt;/li&amp;gt; &lt;br /&gt;
&amp;lt;li&amp;gt;[[Intercept Module|Intercept Module]]&amp;lt;/li&amp;gt; &lt;br /&gt;
&amp;lt;li&amp;gt;[[AutoScript|AutoScript]]&amp;lt;/li&amp;gt; &lt;br /&gt;
&amp;lt;li&amp;gt;[[Reporter|Reporter]]&amp;lt;/li&amp;gt; &lt;br /&gt;
&amp;lt;li&amp;gt;[[STRIDE_Studio|Studio]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[Test Units|Test Units]]&amp;lt;/li&amp;gt;  &lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;categorytree mode=pages depth=0&amp;gt;SDKs&amp;lt;/categorytree&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;categorytree mode=pages depth=0&amp;gt;Utilities&amp;lt;/categorytree&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Samples&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | &lt;br /&gt;
*[[Samples Overview]]&lt;br /&gt;
*[[Install_Test_Sample|Install Test]]&lt;br /&gt;
*[[Hello_Stride_Sample|Hello Stride]]&lt;br /&gt;
*[[Test_Unit_Samples|Test Units]]&lt;br /&gt;
*[[Test_Script_Samples|Test Scripts]] &lt;br /&gt;
*[[SCL_Samples|SCL]]&lt;br /&gt;
*[[Intercept_Module_Sample|Intercept Module]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;border-right: rgb(163,176,191) 1px solid; padding-right: 0.4em; border-top: rgb(163,176,191) 1px solid; padding-left: 0.4em; font-weight: bold; font-size: 120%; background: rgb(206,223,242) 0% 50%; padding-bottom: 0.2em; margin: 0pt; border-left: rgb(163,176,191) 1px solid; color: rgb(0,0,0); padding-top: 0.2em; border-bottom: rgb(163,176,191) 1px solid; text-align: left; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial&amp;quot; | [[:Category:Practice|Practice]] &lt;br /&gt;
! style=&amp;quot;border-right: rgb(163,176,191) 1px solid; padding-right: 0.4em; border-top: rgb(163,176,191) 1px solid; padding-left: 0.4em; font-weight: bold; font-size: 120%; background: rgb(206,223,242) 0% 50%; padding-bottom: 0.2em; margin: 0pt; border-left: rgb(163,176,191) 1px solid; color: rgb(0,0,0); padding-top: 0.2em; border-bottom: rgb(163,176,191) 1px solid; text-align: left; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial&amp;quot; | [[:Category:Application Notes|Notes]] &lt;br /&gt;
! style=&amp;quot;border-right: rgb(163,176,191) 1px solid; padding-right: 0.4em; border-top: rgb(163,176,191) 1px solid; padding-left: 0.4em; font-weight: bold; font-size: 120%; background: rgb(206,223,242) 0% 50%; padding-bottom: 0.2em; margin: 0pt; border-left: rgb(163,176,191) 1px solid; color: rgb(0,0,0); padding-top: 0.2em; border-bottom: rgb(163,176,191) 1px solid; text-align: left; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial&amp;quot; | [[:Category:Release Notes|Release Notes]]&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | &lt;br /&gt;
&amp;lt;ul&amp;gt; &lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;categorytree mode=&amp;quot;all&amp;quot; depth=0&amp;gt;Documentation&amp;lt;/categorytree&amp;gt;&amp;lt;/li&amp;gt; &lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;categorytree mode=&amp;quot;all&amp;quot; depth=0&amp;gt;Script Writing&amp;lt;/categorytree&amp;gt;&amp;lt;/li&amp;gt; &lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;categorytree mode=&amp;quot;all&amp;quot; depth=0&amp;gt;Project Organization&amp;lt;/categorytree&amp;gt;&amp;lt;/li&amp;gt; &lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Notes&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | &lt;br /&gt;
&amp;lt;categorytree mode=&amp;quot;all&amp;quot; hideroot=&amp;quot;on&amp;quot;&amp;gt;Application Notes&amp;lt;/categorytree&amp;gt; &amp;lt;!--&lt;br /&gt;
Release Notes&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | &lt;br /&gt;
*[[STRIDE 2.1.00xx|STRIDE 2.1.00xx (D Street)]] &lt;br /&gt;
*[[STRIDE 3.0.01xx|STRIDE 3.0.01xx (StoneSteps)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Robg</name></author>
	</entry>
	<entry>
		<id>https://www.stridewiki.com/index.php?title=Main_Page&amp;diff=8922</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://www.stridewiki.com/index.php?title=Main_Page&amp;diff=8922"/>
		<updated>2009-01-16T17:09:04Z</updated>

		<summary type="html">&lt;p&gt;Robg: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Welcome to the S2 Technologies™ &#039;&#039;&#039;STRIDE&#039;&#039;&#039;™&#039;&#039;&#039; 3.0 Support Wiki&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
All contributions are welcome and encouraged. Please read &#039;&#039;&#039;[[Help:How to add a topic|How to add a topic]]&#039;&#039;&#039; and &#039;&#039;&#039;[[Help:Contents|Help]]&#039;&#039;&#039; pages for guidelines and instructions on editing. You must &#039;&#039;&#039;[[Special:Userlogin|log in or create an account]]&#039;&#039;&#039; before you can edit a page. &lt;br /&gt;
&lt;br /&gt;
Please select a topic or category heading below, or enter a search string in the Search field to the left. &lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;FCK__ShowTableBorders&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;FCK__ShowTableBorders&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | &lt;br /&gt;
{| class=&amp;quot;FCK__ShowTableBorders&amp;quot; style=&amp;quot;border-right: rgb(187,204,204) 1px solid; border-top: rgb(187,204,204) 1px solid; vertical-align: top; border-left: rgb(187,204,204) 1px solid; border-bottom: rgb(187,204,204) 1px solid&amp;quot; cellspacing=&amp;quot;5&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;border-right: rgb(163,176,191) 1px solid; padding-right: 0.4em; border-top: rgb(163,176,191) 1px solid; padding-left: 0.4em; font-weight: bold; font-size: 120%; background: rgb(206,223,242) 0% 50%; padding-bottom: 0.2em; margin: 0pt; border-left: rgb(163,176,191) 1px solid; color: rgb(0,0,0); padding-top: 0.2em; border-bottom: rgb(163,176,191) 1px solid; text-align: left; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial&amp;quot; | [[:Category:Installation|Installation]]&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &lt;br /&gt;
! style=&amp;quot;border-right: rgb(163,176,191) 1px solid; padding-right: 0.4em; border-top: rgb(163,176,191) 1px solid; padding-left: 0.4em; font-weight: bold; font-size: 120%; background: rgb(206,223,242) 0% 50%; padding-bottom: 0.2em; margin: 0pt; border-left: rgb(163,176,191) 1px solid; color: rgb(0,0,0); padding-top: 0.2em; border-bottom: rgb(163,176,191) 1px solid; text-align: left; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial&amp;quot; | [[:Category:Reference|Reference]]&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &lt;br /&gt;
! style=&amp;quot;border-right: rgb(163,176,191) 1px solid; padding-right: 0.4em; border-top: rgb(163,176,191) 1px solid; padding-left: 0.4em; font-weight: bold; font-size: 120%; background: rgb(206,223,242) 0% 50%; padding-bottom: 0.2em; margin: 0pt; border-left: rgb(163,176,191) 1px solid; color: rgb(0,0,0); padding-top: 0.2em; border-bottom: rgb(163,176,191) 1px solid; text-align: left; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial&amp;quot; | [[:Category:Samples|Samples]] &amp;lt;!--&lt;br /&gt;
Deploying&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | &lt;br /&gt;
*[[Desktop_Installation|Desktop Installation]] &lt;br /&gt;
*[[Build_Integration|Build Integration]] &lt;br /&gt;
*[[Target_Integration|Target Integration]] &lt;br /&gt;
*[[Verifying Installation|Verification]]&amp;lt;u&amp;gt;&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Reference&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | &lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[Reference Overview|Overview]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[Runtime Reference|Runtime]]&amp;lt;/li&amp;gt; &lt;br /&gt;
&amp;lt;li&amp;gt;[[Build Tools|Build Tools]]&amp;lt;/li&amp;gt; &lt;br /&gt;
&amp;lt;li&amp;gt;[[SCL_Pragmas|SCL Pragmas]]&amp;lt;/li&amp;gt; &lt;br /&gt;
&amp;lt;li&amp;gt;[[Intercept Module|Intercept Module]]&amp;lt;/li&amp;gt; &lt;br /&gt;
&amp;lt;li&amp;gt;[[AutoScript|AutoScript]]&amp;lt;/li&amp;gt; &lt;br /&gt;
&amp;lt;li&amp;gt;[[Reporter|Reporter]]&amp;lt;/li&amp;gt; &lt;br /&gt;
&amp;lt;li&amp;gt;[[STRIDE_Studio|Studio]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[Test Units|Test Units]]&amp;lt;/li&amp;gt;  &lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;categorytree mode=pages depth=0&amp;gt;SDKs&amp;lt;/categorytree&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;categorytree mode=pages depth=0&amp;gt;Utilities&amp;lt;/categorytree&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Samples&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | &lt;br /&gt;
*[[Samples Overview]]&lt;br /&gt;
*[[Install_Test_Sample|Install Test]]&lt;br /&gt;
*[[Hello_Stride_Sample|Hello Stride]]&lt;br /&gt;
*[[Test_Unit_Samples|Test Units]]&lt;br /&gt;
*[[Test_Script_Samples|Test Scripts]] &lt;br /&gt;
*[[SCL_Samples|SCL]]&lt;br /&gt;
*[[Intercept_Module_Sample|Intercept Module]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;border-right: rgb(163,176,191) 1px solid; padding-right: 0.4em; border-top: rgb(163,176,191) 1px solid; padding-left: 0.4em; font-weight: bold; font-size: 120%; background: rgb(206,223,242) 0% 50%; padding-bottom: 0.2em; margin: 0pt; border-left: rgb(163,176,191) 1px solid; color: rgb(0,0,0); padding-top: 0.2em; border-bottom: rgb(163,176,191) 1px solid; text-align: left; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial&amp;quot; | [[:Category:Practice|Practice]] &lt;br /&gt;
! style=&amp;quot;border-right: rgb(163,176,191) 1px solid; padding-right: 0.4em; border-top: rgb(163,176,191) 1px solid; padding-left: 0.4em; font-weight: bold; font-size: 120%; background: rgb(206,223,242) 0% 50%; padding-bottom: 0.2em; margin: 0pt; border-left: rgb(163,176,191) 1px solid; color: rgb(0,0,0); padding-top: 0.2em; border-bottom: rgb(163,176,191) 1px solid; text-align: left; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial&amp;quot; | [[:Category:Application Notes|Notes]] &lt;br /&gt;
! style=&amp;quot;border-right: rgb(163,176,191) 1px solid; padding-right: 0.4em; border-top: rgb(163,176,191) 1px solid; padding-left: 0.4em; font-weight: bold; font-size: 120%; background: rgb(206,223,242) 0% 50%; padding-bottom: 0.2em; margin: 0pt; border-left: rgb(163,176,191) 1px solid; color: rgb(0,0,0); padding-top: 0.2em; border-bottom: rgb(163,176,191) 1px solid; text-align: left; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial&amp;quot; | [[:Category:Release Notes|Release Notes]]&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | &lt;br /&gt;
&amp;lt;ul&amp;gt; &lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;categorytree mode=&amp;quot;all&amp;quot; depth=0&amp;gt;Documentation&amp;lt;/categorytree&amp;gt;&amp;lt;/li&amp;gt; &lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;categorytree mode=&amp;quot;all&amp;quot; depth=0&amp;gt;Script Writing&amp;lt;/categorytree&amp;gt;&amp;lt;/li&amp;gt; &lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;categorytree mode=&amp;quot;all&amp;quot; depth=0&amp;gt;Project Organization&amp;lt;/categorytree&amp;gt;&amp;lt;/li&amp;gt; &lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Notes&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | &lt;br /&gt;
&amp;lt;categorytree mode=&amp;quot;all&amp;quot; hideroot=&amp;quot;on&amp;quot;&amp;gt;Application Notes&amp;lt;/categorytree&amp;gt; &amp;lt;!--&lt;br /&gt;
Release Notes&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | &lt;br /&gt;
*[[STRIDE 2.1.00xx|STRIDE 2.1.00xx (D Street)]] &lt;br /&gt;
*[[STRIDE 3.0.01xx|STRIDE 3.0.01xx (StoneSteps)]]&lt;br /&gt;
*[[STRIDE_3.0.0201_(Beacon&#039;s_Beta_1)|STRIDE 3.0.0201 (Beacon&#039;s Beta 1)]]&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Robg</name></author>
	</entry>
	<entry>
		<id>https://www.stridewiki.com/index.php?title=Main_Page&amp;diff=8921</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://www.stridewiki.com/index.php?title=Main_Page&amp;diff=8921"/>
		<updated>2009-01-16T17:08:15Z</updated>

		<summary type="html">&lt;p&gt;Robg: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Welcome to the S2 Technologies™ &#039;&#039;&#039;STRIDE&#039;&#039;&#039;™&#039;&#039;&#039; 3.0 Support Wiki&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
All contributions are welcome and encouraged. Please read &#039;&#039;&#039;[[Help:How to add a topic|How to add a topic]]&#039;&#039;&#039; and &#039;&#039;&#039;[[Help:Contents|Help]]&#039;&#039;&#039; pages for guidelines and instructions on editing. You must &#039;&#039;&#039;[[Special:Userlogin|log in or create an account]]&#039;&#039;&#039; before you can edit a page. &lt;br /&gt;
&lt;br /&gt;
Please select a topic or category heading below, or enter a search string in the Search field to the left. &lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;FCK__ShowTableBorders&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;FCK__ShowTableBorders&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | &lt;br /&gt;
{| class=&amp;quot;FCK__ShowTableBorders&amp;quot; style=&amp;quot;border-right: rgb(187,204,204) 1px solid; border-top: rgb(187,204,204) 1px solid; vertical-align: top; border-left: rgb(187,204,204) 1px solid; border-bottom: rgb(187,204,204) 1px solid&amp;quot; cellspacing=&amp;quot;5&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;border-right: rgb(163,176,191) 1px solid; padding-right: 0.4em; border-top: rgb(163,176,191) 1px solid; padding-left: 0.4em; font-weight: bold; font-size: 120%; background: rgb(206,223,242) 0% 50%; padding-bottom: 0.2em; margin: 0pt; border-left: rgb(163,176,191) 1px solid; color: rgb(0,0,0); padding-top: 0.2em; border-bottom: rgb(163,176,191) 1px solid; text-align: left; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial&amp;quot; | [[:Category:Installation|Installation]]&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &lt;br /&gt;
! style=&amp;quot;border-right: rgb(163,176,191) 1px solid; padding-right: 0.4em; border-top: rgb(163,176,191) 1px solid; padding-left: 0.4em; font-weight: bold; font-size: 120%; background: rgb(206,223,242) 0% 50%; padding-bottom: 0.2em; margin: 0pt; border-left: rgb(163,176,191) 1px solid; color: rgb(0,0,0); padding-top: 0.2em; border-bottom: rgb(163,176,191) 1px solid; text-align: left; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial&amp;quot; | [[:Category:Reference|Reference]]&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &lt;br /&gt;
! style=&amp;quot;border-right: rgb(163,176,191) 1px solid; padding-right: 0.4em; border-top: rgb(163,176,191) 1px solid; padding-left: 0.4em; font-weight: bold; font-size: 120%; background: rgb(206,223,242) 0% 50%; padding-bottom: 0.2em; margin: 0pt; border-left: rgb(163,176,191) 1px solid; color: rgb(0,0,0); padding-top: 0.2em; border-bottom: rgb(163,176,191) 1px solid; text-align: left; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial&amp;quot; | [[:Category:Samples|Samples]] &amp;lt;!--&lt;br /&gt;
Deploying&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | &lt;br /&gt;
*[[Desktop_Installation|Desktop Installation]] &lt;br /&gt;
*[[Build_Integration|Build Integration]] &lt;br /&gt;
*[[Target_Integration|Target Integration]] &lt;br /&gt;
*[[Verifying Installation|Verification]]&amp;lt;u&amp;gt;&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Reference&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | &lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[Reference Overview|Overview]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[Runtime Reference|Runtime]]&amp;lt;/li&amp;gt; &lt;br /&gt;
&amp;lt;li&amp;gt;[[Build Tools|Build Tools]]&amp;lt;/li&amp;gt; &lt;br /&gt;
&amp;lt;li&amp;gt;[[SCL_Pragmas|SCL Pragmas]]&amp;lt;/li&amp;gt; &lt;br /&gt;
&amp;lt;li&amp;gt;[[Intercept Module|Intercept Module]]&amp;lt;/li&amp;gt; &lt;br /&gt;
&amp;lt;li&amp;gt;[[AutoScript|AutoScript]]&amp;lt;/li&amp;gt; &lt;br /&gt;
&amp;lt;li&amp;gt;[[Reporter|Reporter]]&amp;lt;/li&amp;gt; &lt;br /&gt;
&amp;lt;li&amp;gt;[[STRIDE_Studio|Studio]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[Test Units|Test Units]]&amp;lt;/li&amp;gt;  &lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;categorytree mode=pages depth=0&amp;gt;SDKs&amp;lt;/categorytree&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;categorytree mode=pages depth=0&amp;gt;Utilities&amp;lt;/categorytree&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Samples&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | &lt;br /&gt;
*[[Samples Overview]]&lt;br /&gt;
*[[Install_Test_Sample|Install Test]]&lt;br /&gt;
*[[Hello_Stride_Sample|Hello Stride]]&lt;br /&gt;
*[[Test_Unit_Samples|Test Units]]&lt;br /&gt;
*[[Test_Script_Samples|Test Scripts]] &lt;br /&gt;
*[[SCL_Samples|SCL]]&lt;br /&gt;
*[[Intercept_Module_Sample|Intercept Module]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;border-right: rgb(163,176,191) 1px solid; padding-right: 0.4em; border-top: rgb(163,176,191) 1px solid; padding-left: 0.4em; font-weight: bold; font-size: 120%; background: rgb(206,223,242) 0% 50%; padding-bottom: 0.2em; margin: 0pt; border-left: rgb(163,176,191) 1px solid; color: rgb(0,0,0); padding-top: 0.2em; border-bottom: rgb(163,176,191) 1px solid; text-align: left; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial&amp;quot; | [[:Category:Practice|Practice]] &lt;br /&gt;
! style=&amp;quot;border-right: rgb(163,176,191) 1px solid; padding-right: 0.4em; border-top: rgb(163,176,191) 1px solid; padding-left: 0.4em; font-weight: bold; font-size: 120%; background: rgb(206,223,242) 0% 50%; padding-bottom: 0.2em; margin: 0pt; border-left: rgb(163,176,191) 1px solid; color: rgb(0,0,0); padding-top: 0.2em; border-bottom: rgb(163,176,191) 1px solid; text-align: left; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial&amp;quot; | [[:Category:Application Notes|Notes]] &lt;br /&gt;
! style=&amp;quot;border-right: rgb(163,176,191) 1px solid; padding-right: 0.4em; border-top: rgb(163,176,191) 1px solid; padding-left: 0.4em; font-weight: bold; font-size: 120%; background: rgb(206,223,242) 0% 50%; padding-bottom: 0.2em; margin: 0pt; border-left: rgb(163,176,191) 1px solid; color: rgb(0,0,0); padding-top: 0.2em; border-bottom: rgb(163,176,191) 1px solid; text-align: left; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial&amp;quot; | [[:Category:Release Notes|Release Notes]]&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | &lt;br /&gt;
&amp;lt;ul&amp;gt; &lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;categorytree mode=&amp;quot;all&amp;quot; depth=0&amp;gt;Documentation&amp;lt;/categorytree&amp;gt;&amp;lt;/li&amp;gt; &lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;categorytree mode=&amp;quot;all&amp;quot; depth=0&amp;gt;Script Writing&amp;lt;/categorytree&amp;gt;&amp;lt;/li&amp;gt; &lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;categorytree mode=&amp;quot;all&amp;quot; depth=0&amp;gt;Project Organization&amp;lt;/categorytree&amp;gt;&amp;lt;/li&amp;gt; &lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Notes&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | &lt;br /&gt;
&amp;lt;categorytree mode=&amp;quot;all&amp;quot; hideroot=&amp;quot;on&amp;quot;&amp;gt;Application Notes&amp;lt;/categorytree&amp;gt; &amp;lt;!--&lt;br /&gt;
Release Notes&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | &lt;br /&gt;
*[[STRIDE 2.1.00xx|STRIDE 2.1.00xx (D Street)]] &lt;br /&gt;
*[[STRIDE 3.0.01xx|STRIDE 3.0.01xx (StoneSteps)]]&lt;br /&gt;
*[[STRIDE 3.0.0201|STRIDE_3.0.0201_(Beacon&#039;s_Beta_1)]]&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Robg</name></author>
	</entry>
	<entry>
		<id>https://www.stridewiki.com/index.php?title=%22type_info%22_is_undefined&amp;diff=8862</id>
		<title>&quot;type info&quot; is undefined</title>
		<link rel="alternate" type="text/html" href="https://www.stridewiki.com/index.php?title=%22type_info%22_is_undefined&amp;diff=8862"/>
		<updated>2009-01-12T17:46:46Z</updated>

		<summary type="html">&lt;p&gt;Robg: &amp;quot;type info&amp;quot; is undefined moved to &amp;quot;typeinfo&amp;quot; is undefined&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[&amp;quot;typeinfo&amp;quot; is undefined]]&lt;/div&gt;</summary>
		<author><name>Robg</name></author>
	</entry>
	<entry>
		<id>https://www.stridewiki.com/index.php?title=%22typeinfo%22_is_undefined&amp;diff=8861</id>
		<title>&quot;typeinfo&quot; is undefined</title>
		<link rel="alternate" type="text/html" href="https://www.stridewiki.com/index.php?title=%22typeinfo%22_is_undefined&amp;diff=8861"/>
		<updated>2009-01-12T17:46:46Z</updated>

		<summary type="html">&lt;p&gt;Robg: &amp;quot;type info&amp;quot; is undefined moved to &amp;quot;typeinfo&amp;quot; is undefined&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;If you are compiling with s2scompile (the STRIDE compiler) and encounter the following error message: &lt;br /&gt;
&lt;br /&gt;
  error: identifier &amp;quot;type_info&amp;quot; is undefined&lt;br /&gt;
&lt;br /&gt;
You should add the following include statement to the file being compiled:&lt;br /&gt;
&lt;br /&gt;
 #include &amp;lt;typeinfo&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will resolve the problem. Note: This issue is known to occur when compiling using the STRIDE compiler using some versions of the Microsoft standard library include files.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Troubleshooting]]&lt;br /&gt;
[[Category:Compiler]]&lt;/div&gt;</summary>
		<author><name>Robg</name></author>
	</entry>
	<entry>
		<id>https://www.stridewiki.com/index.php?title=%22typeinfo%22_is_undefined&amp;diff=8860</id>
		<title>&quot;typeinfo&quot; is undefined</title>
		<link rel="alternate" type="text/html" href="https://www.stridewiki.com/index.php?title=%22typeinfo%22_is_undefined&amp;diff=8860"/>
		<updated>2009-01-12T17:45:43Z</updated>

		<summary type="html">&lt;p&gt;Robg: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;If you are compiling with s2scompile (the STRIDE compiler) and encounter the following error message: &lt;br /&gt;
&lt;br /&gt;
  error: identifier &amp;quot;type_info&amp;quot; is undefined&lt;br /&gt;
&lt;br /&gt;
You should add the following include statement to the file being compiled:&lt;br /&gt;
&lt;br /&gt;
 #include &amp;lt;typeinfo&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will resolve the problem. Note: This issue is known to occur when compiling using the STRIDE compiler using some versions of the Microsoft standard library include files.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Troubleshooting]]&lt;br /&gt;
[[Category:Compiler]]&lt;/div&gt;</summary>
		<author><name>Robg</name></author>
	</entry>
	<entry>
		<id>https://www.stridewiki.com/index.php?title=Error_compiling_standard_libaries&amp;diff=8859</id>
		<title>Error compiling standard libaries</title>
		<link rel="alternate" type="text/html" href="https://www.stridewiki.com/index.php?title=Error_compiling_standard_libaries&amp;diff=8859"/>
		<updated>2009-01-12T17:44:56Z</updated>

		<summary type="html">&lt;p&gt;Robg: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Because the STRIDE C/C++ compiler (s2scompile) is a program analysis &lt;br /&gt;
and instrumentation tool, it does not include its own copy of the &lt;br /&gt;
standard C and C++ library header files. Rather, the recommended use&lt;br /&gt;
is to configure the STRIDE compiler to use the same header files &lt;br /&gt;
as the target compilation system. Normally this works fine without&lt;br /&gt;
adjustment. However, from time to time the target compiler may have&lt;br /&gt;
certain macros specially predefined that require adjustment&lt;br /&gt;
within STRIDE.&lt;br /&gt;
&lt;br /&gt;
If you encounter syntax errors when compiling the systems standard &lt;br /&gt;
library header files, the issue is typically that one or more macros&lt;br /&gt;
is built into the target compiler and the STRIDE environment needs to&lt;br /&gt;
be adjusted to also include the macro. Typically this requires the user&lt;br /&gt;
to put one or more defines (-D options) on the STRIDE compiler &lt;br /&gt;
commandline. &lt;br /&gt;
&lt;br /&gt;
As an example, in one case, compilation of the local stdlib.h file&lt;br /&gt;
yielded the following error message: &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;C:/Apps/QDSP6/release_1.0.00/tools/dinkumware/include/common/stdlib.h&amp;quot;, line&lt;br /&gt;
  161: error: linkage specification is incompatible with previous &amp;quot;atexit&amp;quot;&lt;br /&gt;
  (declared at line 151)&lt;br /&gt;
&lt;br /&gt;
Examination of the stdlib.h file and included filed contents revealed that the &lt;br /&gt;
following macro definition needed to be added to the STRIDE compile commandline. &lt;br /&gt;
&lt;br /&gt;
  -D_HAS_STRICT_LINKAGE=0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Troubleshooting]]&lt;br /&gt;
[[Category:Compiler]]&lt;/div&gt;</summary>
		<author><name>Robg</name></author>
	</entry>
	<entry>
		<id>https://www.stridewiki.com/index.php?title=%22typeinfo%22_is_undefined&amp;diff=8858</id>
		<title>&quot;typeinfo&quot; is undefined</title>
		<link rel="alternate" type="text/html" href="https://www.stridewiki.com/index.php?title=%22typeinfo%22_is_undefined&amp;diff=8858"/>
		<updated>2009-01-12T17:44:11Z</updated>

		<summary type="html">&lt;p&gt;Robg: New page:  If you are compiling with s2scompile (the STRIDE compiler) and encounter the following error message:     error: identifier &amp;quot;type_info&amp;quot; is undefined  You should add the following include ...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
If you are compiling with s2scompile (the STRIDE compiler) and encounter the following error message: &lt;br /&gt;
&lt;br /&gt;
  error: identifier &amp;quot;type_info&amp;quot; is undefined&lt;br /&gt;
&lt;br /&gt;
You should add the following include statement to the file being compiled:&lt;br /&gt;
&lt;br /&gt;
 #include &amp;lt;typeinfo&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will resolve the problem. Note: This issue is known to occur when compiling using the STRIDE compiler using some versions of the Microsoft standard library include files.&lt;/div&gt;</summary>
		<author><name>Robg</name></author>
	</entry>
	<entry>
		<id>https://www.stridewiki.com/index.php?title=Test_Macros_Sample&amp;diff=8857</id>
		<title>Test Macros Sample</title>
		<link rel="alternate" type="text/html" href="https://www.stridewiki.com/index.php?title=Test_Macros_Sample&amp;diff=8857"/>
		<updated>2009-01-12T17:28:30Z</updated>

		<summary type="html">&lt;p&gt;Robg: /* Workspace-based Execution */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
The Test Macros Samples are part of the [[Test_Unit_Samples|STRIDE Test Unit Samples]]. The following content relates to the sample files and workspaces installed in &#039;&#039;%STRIDE_DIR%\Samples\TestUnits\TestClassMacros&#039;&#039;.  This sample consists of a [http://en.wikipedia.org/wiki/Microsoft_Visual_Studio Visual Studio] workspace for building a [[Windows_Off-Target_Apps|Windows Off-Target App]], sample test class macros source code,  and a STRIDE workspace for doing more advanced test class execution.&lt;br /&gt;
&lt;br /&gt;
==Getting Started==&lt;br /&gt;
&lt;br /&gt;
To begin, open the Visual Studio Solution file in the sample directory.  This solution (and corresponding project) were created for Visual Studio 2005.  If you have a later version of Visual Studio installed, you should be able to open this solution and it will be automatically upgraded if necessary.  If you do not currently have any version of Visual Studio, it is recommended that you install the current free version of [http://en.wikipedia.org/wiki/Visual_Studio_Express Visual Studio Express].&lt;br /&gt;
&lt;br /&gt;
Once you have successfully opened the solution, rebuild it.  The build process has custom STRIDE build rules integrated and will produce a STRIDE database, intercept module source files, and a Windows Off-Target App that incorporates the test class source.&lt;br /&gt;
&lt;br /&gt;
Once the build is complete, perform the following steps to run the test classes in the workspace:&lt;br /&gt;
&lt;br /&gt;
# launch the Windows Off-Target App, TestClass.exe.  This will run in a standard console window.&lt;br /&gt;
# open a command prompt window and change to this sample&#039;s directory.&lt;br /&gt;
# at the command prompt, run the command &amp;lt;tt&amp;gt;&#039;&#039;&#039;TestUnitRun.pl -v&#039;&#039;&#039;&amp;lt;/tt&amp;gt;.  This will execute all of the test units in the workspace and open a browser to display the results.&lt;br /&gt;
# quit the TestClass.exe application by typing &#039;q&#039; in its console window.&lt;br /&gt;
&lt;br /&gt;
==Sample Test Class Macros==&lt;br /&gt;
&lt;br /&gt;
Now that you have built the Windows Off-Target App and executed the test classes it contains, you can take time to peruse the test class source and the corresponding results that each produces.  This section provides a brief description for each.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;NOTE:&#039;&#039; each of the example test classes is grouped in the &#039;&#039;Basic&#039;&#039; namespace.  This is for organizational purposes only -- it is &#039;&#039;&#039;not&#039;&#039;&#039; a general requirement that test classes be placed into namespaces.   &lt;br /&gt;
&lt;br /&gt;
===Basic Examples===&lt;br /&gt;
&lt;br /&gt;
These examples cover simple uses of each of the macro families. The names of the test methods contain either &#039;&#039;Pass&#039;&#039; or &#039;&#039;Fail&#039;&#039;. All methods containing &#039;&#039;Fail&#039;&#039; illustrates uses of test macros that result in failures. Methods containing &#039;&#039;Pass&#039;&#039; illustrate passing uses. &lt;br /&gt;
&lt;br /&gt;
====01_01_Basic_ExpectBool====&lt;br /&gt;
&lt;br /&gt;
This example demonstrates uses of the &#039;&#039;srEXPECT_TRUE()&#039;&#039; and &#039;&#039;srEXPECT_FALSE()&#039;&#039; test class macros. &lt;br /&gt;
&lt;br /&gt;
====01_02_Basic_Comparison====&lt;br /&gt;
&lt;br /&gt;
This example demonstrates uses of the &#039;&#039;srEXPECT_EQ()&#039;&#039;, &#039;&#039;srEXPECT_NE()&#039;&#039;, &#039;&#039;srEXPECT_GT()&#039;&#039;, &#039;&#039;srEXPECT_GE()&#039;&#039;, &#039;&#039;srEXPECT_LT()&#039;&#039; and &#039;&#039;srEXPECT_LE()&#039;&#039; macros. &lt;br /&gt;
&lt;br /&gt;
====01_03_Basic_CString====&lt;br /&gt;
&lt;br /&gt;
This example demonstrates use of the C-string (zero terminated character sequence) macros &#039;&#039;srEXPECT_STREQ()&#039;&#039;, &#039;&#039;srEXPECT_STRNE(&#039;&#039;), &#039;&#039;srEXPECT_STRCASEEQ()&#039;&#039; and &#039;&#039;srEXPECT_STRCASENE()&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
====01_04_Basic_Exceptions====&lt;br /&gt;
&lt;br /&gt;
This example demonstrates use of the exception verification macros &#039;&#039;srEXPECT_THROW()&#039;&#039;, &#039;&#039;srEXPECT_THROW_ANY()&#039;&#039; and &#039;&#039;srEXPECT_NO_THROW()&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
====01_05_Basic_Predicates====&lt;br /&gt;
&lt;br /&gt;
This example demonstrates use of the predicate based macros &#039;&#039;srEXPECT_PRED&amp;lt;n&amp;gt;()&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
====01_06_Basic_FloatingPt====&lt;br /&gt;
&lt;br /&gt;
This example demonstrates use of the macro used to test equality (or near equality) of floating point values &#039;&#039;srEXPECT_NEAR()&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
====01_07_Basic_Assert====&lt;br /&gt;
&lt;br /&gt;
This example illustrates the use of the assertion macros (&#039;&#039;srASSERT_xx&#039;&#039;) which, in contrast to the expectation macros (&#039;&#039;srEXPECT_xx&#039;&#039;), cause the rest of the test case code to by bypassed.&lt;br /&gt;
&lt;br /&gt;
==Test Class Macros Execution==&lt;br /&gt;
&lt;br /&gt;
This sample demonstrates two different techniques for executing test classes.&lt;br /&gt;
&lt;br /&gt;
===Command Line Execution===&lt;br /&gt;
&lt;br /&gt;
Command line execution for test classes is done using the [[Test_Runners#TestUnitRun.pl|TestUnitRun utility]].  Here are several examples of specific syntax to execute test classes.  All of these commands can be invoked from a standard [http://en.wikipedia.org/wiki/Command_Prompt_(Windows) command shell] (or other shell of your choosing) and the arguments shown assume that the commands are executed with the sample&#039;s directory as the starting directory. You must have your TestClass.exe application running in order for the runner to be able to initiate a connection to the target simulator. In addition, you should verify that your %STRIDE_DIR%\bin\transport.cfg file is using the TCP transport to connect to port 8000 (these are the default settings when the product is installed).&lt;br /&gt;
&lt;br /&gt;
====Simple execution of all test units====&lt;br /&gt;
&lt;br /&gt;
The following command executes all of the test units found in the STRIDE database you have previously generated.  For the purpose of this sample, since there is only one database, the -d parameter is not strictly needed, but it is shown here for completeness.&lt;br /&gt;
&lt;br /&gt;
  TestUnitRun.pl -d TestClassMacros.sidb&lt;br /&gt;
&lt;br /&gt;
This command executes all Test Units found in the database in descending alpha-numeric sort order.  Any Test Class initialization arguments are given default values (typically zero or NULL).&lt;br /&gt;
&lt;br /&gt;
When you run this command, you should see console output like:&lt;br /&gt;
&lt;br /&gt;
  Attempting connection using [Sockets (S2)] transport ...&lt;br /&gt;
  Connected to device.&lt;br /&gt;
  Initializing STRIDE database objects...&lt;br /&gt;
  Done.&lt;br /&gt;
  Running Test Basic::Assert...&lt;br /&gt;
  Running Test Basic::CString...&lt;br /&gt;
  Running Test Basic::Comparison...&lt;br /&gt;
  Running Test Basic::Exceptions...&lt;br /&gt;
  Running Test Basic::ExpectBool...&lt;br /&gt;
  Running Test Basic::FloatingPt...&lt;br /&gt;
  Running Test Basic::Predicates...&lt;br /&gt;
  Disconnected from device.&lt;br /&gt;
  Test Results saved to C:\STRIDE\Samples\TestUnits\TestClassMacros\TestClassMacros.xml&lt;br /&gt;
  Test Report saved to C:\STRIDE\Samples\TestUnits\TestClassMacros\TestClassMacros.html&lt;br /&gt;
  ***************************************************************************&lt;br /&gt;
  Results Summary&lt;br /&gt;
  ***************************************************************************&lt;br /&gt;
    Passed:               7&lt;br /&gt;
    Failed:               8&lt;br /&gt;
    In Progress:          0&lt;br /&gt;
    Not Applicable:       0&lt;br /&gt;
    ...in 7 suites.&lt;br /&gt;
  ***************************************************************************&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Workspace-based Execution===&lt;br /&gt;
&lt;br /&gt;
TestClassMacros.ssw, a workspace in the TestClass directory, demonstrates the use of script execution with Studio to manage test order and hierarchy.  This workspace was created using [[WorkspaceSetup.pl]].  The setup and teardown folders provide basic infrastructure scripts that start/stop the simulator application (TestClassMacros.exe) and to manage traceviews used for [[Runtime_Reference#Logging_Services|srPrint]] message collection.  The scripts that drive the testing are in the workspace &#039;&#039;&#039;test&#039;&#039;&#039; folder. What follows is a brief description for each.&lt;br /&gt;
&lt;br /&gt;
====RunAll====&lt;br /&gt;
&lt;br /&gt;
This folder contains a script, All.js, that iterates through the entire collection of test units and executes them one at a time. The order of execution will be in ascending alphabetical order (by name) since the [[AutoScript#ascript.TestUnits|ArrangeBy]] collection method was called.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Run Individual====&lt;br /&gt;
&lt;br /&gt;
This folder shows how to use individual scripts to execute test classes. Each script has the following form:&lt;br /&gt;
&lt;br /&gt;
  ascript.TestUnits.Item(&#039;&#039;&#039;TEST_CLASS_NAME&#039;&#039;&#039;).Run();&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;TEST_Class_NAME&#039;&#039;&#039; is the name of the scl_test_class test to be run.  The order and hierarchy of each item may be changed via the Studio tree control by moving the item within the scripts and/or folders. The sample contains individual scripts for a few of the sample scl_test_class tests - you are free to move, add, or delete any items as you experiment with the workspace.&lt;br /&gt;
&lt;br /&gt;
[[Category: Samples]]&lt;/div&gt;</summary>
		<author><name>Robg</name></author>
	</entry>
	<entry>
		<id>https://www.stridewiki.com/index.php?title=Test_Macros_Sample&amp;diff=8856</id>
		<title>Test Macros Sample</title>
		<link rel="alternate" type="text/html" href="https://www.stridewiki.com/index.php?title=Test_Macros_Sample&amp;diff=8856"/>
		<updated>2009-01-12T17:25:46Z</updated>

		<summary type="html">&lt;p&gt;Robg: /* Test Class Execution */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
The Test Macros Samples are part of the [[Test_Unit_Samples|STRIDE Test Unit Samples]]. The following content relates to the sample files and workspaces installed in &#039;&#039;%STRIDE_DIR%\Samples\TestUnits\TestClassMacros&#039;&#039;.  This sample consists of a [http://en.wikipedia.org/wiki/Microsoft_Visual_Studio Visual Studio] workspace for building a [[Windows_Off-Target_Apps|Windows Off-Target App]], sample test class macros source code,  and a STRIDE workspace for doing more advanced test class execution.&lt;br /&gt;
&lt;br /&gt;
==Getting Started==&lt;br /&gt;
&lt;br /&gt;
To begin, open the Visual Studio Solution file in the sample directory.  This solution (and corresponding project) were created for Visual Studio 2005.  If you have a later version of Visual Studio installed, you should be able to open this solution and it will be automatically upgraded if necessary.  If you do not currently have any version of Visual Studio, it is recommended that you install the current free version of [http://en.wikipedia.org/wiki/Visual_Studio_Express Visual Studio Express].&lt;br /&gt;
&lt;br /&gt;
Once you have successfully opened the solution, rebuild it.  The build process has custom STRIDE build rules integrated and will produce a STRIDE database, intercept module source files, and a Windows Off-Target App that incorporates the test class source.&lt;br /&gt;
&lt;br /&gt;
Once the build is complete, perform the following steps to run the test classes in the workspace:&lt;br /&gt;
&lt;br /&gt;
# launch the Windows Off-Target App, TestClass.exe.  This will run in a standard console window.&lt;br /&gt;
# open a command prompt window and change to this sample&#039;s directory.&lt;br /&gt;
# at the command prompt, run the command &amp;lt;tt&amp;gt;&#039;&#039;&#039;TestUnitRun.pl -v&#039;&#039;&#039;&amp;lt;/tt&amp;gt;.  This will execute all of the test units in the workspace and open a browser to display the results.&lt;br /&gt;
# quit the TestClass.exe application by typing &#039;q&#039; in its console window.&lt;br /&gt;
&lt;br /&gt;
==Sample Test Class Macros==&lt;br /&gt;
&lt;br /&gt;
Now that you have built the Windows Off-Target App and executed the test classes it contains, you can take time to peruse the test class source and the corresponding results that each produces.  This section provides a brief description for each.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;NOTE:&#039;&#039; each of the example test classes is grouped in the &#039;&#039;Basic&#039;&#039; namespace.  This is for organizational purposes only -- it is &#039;&#039;&#039;not&#039;&#039;&#039; a general requirement that test classes be placed into namespaces.   &lt;br /&gt;
&lt;br /&gt;
===Basic Examples===&lt;br /&gt;
&lt;br /&gt;
These examples cover simple uses of each of the macro families. The names of the test methods contain either &#039;&#039;Pass&#039;&#039; or &#039;&#039;Fail&#039;&#039;. All methods containing &#039;&#039;Fail&#039;&#039; illustrates uses of test macros that result in failures. Methods containing &#039;&#039;Pass&#039;&#039; illustrate passing uses. &lt;br /&gt;
&lt;br /&gt;
====01_01_Basic_ExpectBool====&lt;br /&gt;
&lt;br /&gt;
This example demonstrates uses of the &#039;&#039;srEXPECT_TRUE()&#039;&#039; and &#039;&#039;srEXPECT_FALSE()&#039;&#039; test class macros. &lt;br /&gt;
&lt;br /&gt;
====01_02_Basic_Comparison====&lt;br /&gt;
&lt;br /&gt;
This example demonstrates uses of the &#039;&#039;srEXPECT_EQ()&#039;&#039;, &#039;&#039;srEXPECT_NE()&#039;&#039;, &#039;&#039;srEXPECT_GT()&#039;&#039;, &#039;&#039;srEXPECT_GE()&#039;&#039;, &#039;&#039;srEXPECT_LT()&#039;&#039; and &#039;&#039;srEXPECT_LE()&#039;&#039; macros. &lt;br /&gt;
&lt;br /&gt;
====01_03_Basic_CString====&lt;br /&gt;
&lt;br /&gt;
This example demonstrates use of the C-string (zero terminated character sequence) macros &#039;&#039;srEXPECT_STREQ()&#039;&#039;, &#039;&#039;srEXPECT_STRNE(&#039;&#039;), &#039;&#039;srEXPECT_STRCASEEQ()&#039;&#039; and &#039;&#039;srEXPECT_STRCASENE()&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
====01_04_Basic_Exceptions====&lt;br /&gt;
&lt;br /&gt;
This example demonstrates use of the exception verification macros &#039;&#039;srEXPECT_THROW()&#039;&#039;, &#039;&#039;srEXPECT_THROW_ANY()&#039;&#039; and &#039;&#039;srEXPECT_NO_THROW()&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
====01_05_Basic_Predicates====&lt;br /&gt;
&lt;br /&gt;
This example demonstrates use of the predicate based macros &#039;&#039;srEXPECT_PRED&amp;lt;n&amp;gt;()&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
====01_06_Basic_FloatingPt====&lt;br /&gt;
&lt;br /&gt;
This example demonstrates use of the macro used to test equality (or near equality) of floating point values &#039;&#039;srEXPECT_NEAR()&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
====01_07_Basic_Assert====&lt;br /&gt;
&lt;br /&gt;
This example illustrates the use of the assertion macros (&#039;&#039;srASSERT_xx&#039;&#039;) which, in contrast to the expectation macros (&#039;&#039;srEXPECT_xx&#039;&#039;), cause the rest of the test case code to by bypassed.&lt;br /&gt;
&lt;br /&gt;
==Test Class Macros Execution==&lt;br /&gt;
&lt;br /&gt;
This sample demonstrates two different techniques for executing test classes.&lt;br /&gt;
&lt;br /&gt;
===Command Line Execution===&lt;br /&gt;
&lt;br /&gt;
Command line execution for test classes is done using the [[Test_Runners#TestUnitRun.pl|TestUnitRun utility]].  Here are several examples of specific syntax to execute test classes.  All of these commands can be invoked from a standard [http://en.wikipedia.org/wiki/Command_Prompt_(Windows) command shell] (or other shell of your choosing) and the arguments shown assume that the commands are executed with the sample&#039;s directory as the starting directory. You must have your TestClass.exe application running in order for the runner to be able to initiate a connection to the target simulator. In addition, you should verify that your %STRIDE_DIR%\bin\transport.cfg file is using the TCP transport to connect to port 8000 (these are the default settings when the product is installed).&lt;br /&gt;
&lt;br /&gt;
====Simple execution of all test units====&lt;br /&gt;
&lt;br /&gt;
The following command executes all of the test units found in the STRIDE database you have previously generated.  For the purpose of this sample, since there is only one database, the -d parameter is not strictly needed, but it is shown here for completeness.&lt;br /&gt;
&lt;br /&gt;
  TestUnitRun.pl -d TestClassMacros.sidb&lt;br /&gt;
&lt;br /&gt;
This command executes all Test Units found in the database in descending alpha-numeric sort order.  Any Test Class initialization arguments are given default values (typically zero or NULL).&lt;br /&gt;
&lt;br /&gt;
When you run this command, you should see console output like:&lt;br /&gt;
&lt;br /&gt;
  Attempting connection using [Sockets (S2)] transport ...&lt;br /&gt;
  Connected to device.&lt;br /&gt;
  Initializing STRIDE database objects...&lt;br /&gt;
  Done.&lt;br /&gt;
  Running Test Basic::Assert...&lt;br /&gt;
  Running Test Basic::CString...&lt;br /&gt;
  Running Test Basic::Comparison...&lt;br /&gt;
  Running Test Basic::Exceptions...&lt;br /&gt;
  Running Test Basic::ExpectBool...&lt;br /&gt;
  Running Test Basic::FloatingPt...&lt;br /&gt;
  Running Test Basic::Predicates...&lt;br /&gt;
  Disconnected from device.&lt;br /&gt;
  Test Results saved to C:\STRIDE\Samples\TestUnits\TestClassMacros\TestClassMacros.xml&lt;br /&gt;
  Test Report saved to C:\STRIDE\Samples\TestUnits\TestClassMacros\TestClassMacros.html&lt;br /&gt;
  ***************************************************************************&lt;br /&gt;
  Results Summary&lt;br /&gt;
  ***************************************************************************&lt;br /&gt;
    Passed:               7&lt;br /&gt;
    Failed:               8&lt;br /&gt;
    In Progress:          0&lt;br /&gt;
    Not Applicable:       0&lt;br /&gt;
    ...in 7 suites.&lt;br /&gt;
  ***************************************************************************&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Workspace-based Execution===&lt;br /&gt;
&lt;br /&gt;
TestClass.ssw, a workspace in the TestClass directory, demonstrates the use of script execution with Studio to manage test order and hierarchy.  This workspace was created using [[WorkspaceSetup.pl]].  The setup and teardown folders provide basic infrastructure scripts that start/stop the simulator application (TestClass.exe) and to manage traceviews used for [[Runtime_Reference#Logging_Services|srPrint]] message collection.  The scripts that drive the testing are in the workspace &#039;&#039;&#039;test&#039;&#039;&#039; folder. What follows is a brief description for each.&lt;br /&gt;
&lt;br /&gt;
====RunAll====&lt;br /&gt;
&lt;br /&gt;
This folder contains a script, All.js, that iterates through the entire collection of test units and executes them one at a time. The order of execution will be in ascending alpabetical order (by name) since the [[AutoScript#ascript.TestUnits|ArrangeBy]] collection method was called.&lt;br /&gt;
&lt;br /&gt;
====CallConstructor====&lt;br /&gt;
&lt;br /&gt;
This folder contains a simple script example that shows how to invoke test classes with constructor arguments.  In this example, the Basic::Constructors test class is executed twice with different initialization (constructor) arguments both times.&lt;br /&gt;
&lt;br /&gt;
====Run Individual====&lt;br /&gt;
&lt;br /&gt;
This folder shows how to use individual scripts to execute test classes. Each script has the following form:&lt;br /&gt;
&lt;br /&gt;
  ascript.TestUnits.Item(&#039;&#039;&#039;TEST_CLASS_NAME&#039;&#039;&#039;).Run();&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;TEST_Class_NAME&#039;&#039;&#039; is the name of the scl_test_class test to be run.  The order and hierarchy of each item may be changed via the Studio tree control by moving the item within the scripts and/or folders. The sample contains individual scripts for a few of the sample scl_test_class tests - you are free to move, add, or delete any items as you experiment with the workspace.&lt;br /&gt;
&lt;br /&gt;
[[Category: Samples]]&lt;/div&gt;</summary>
		<author><name>Robg</name></author>
	</entry>
	<entry>
		<id>https://www.stridewiki.com/index.php?title=Test_Macros_Sample&amp;diff=8855</id>
		<title>Test Macros Sample</title>
		<link rel="alternate" type="text/html" href="https://www.stridewiki.com/index.php?title=Test_Macros_Sample&amp;diff=8855"/>
		<updated>2009-01-12T17:03:13Z</updated>

		<summary type="html">&lt;p&gt;Robg: /* Simple execution of all test units */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
The Test Macros Samples are part of the [[Test_Unit_Samples|STRIDE Test Unit Samples]]. The following content relates to the sample files and workspaces installed in &#039;&#039;%STRIDE_DIR%\Samples\TestUnits\TestClassMacros&#039;&#039;.  This sample consists of a [http://en.wikipedia.org/wiki/Microsoft_Visual_Studio Visual Studio] workspace for building a [[Windows_Off-Target_Apps|Windows Off-Target App]], sample test class macros source code,  and a STRIDE workspace for doing more advanced test class execution.&lt;br /&gt;
&lt;br /&gt;
==Getting Started==&lt;br /&gt;
&lt;br /&gt;
To begin, open the Visual Studio Solution file in the sample directory.  This solution (and corresponding project) were created for Visual Studio 2005.  If you have a later version of Visual Studio installed, you should be able to open this solution and it will be automatically upgraded if necessary.  If you do not currently have any version of Visual Studio, it is recommended that you install the current free version of [http://en.wikipedia.org/wiki/Visual_Studio_Express Visual Studio Express].&lt;br /&gt;
&lt;br /&gt;
Once you have successfully opened the solution, rebuild it.  The build process has custom STRIDE build rules integrated and will produce a STRIDE database, intercept module source files, and a Windows Off-Target App that incorporates the test class source.&lt;br /&gt;
&lt;br /&gt;
Once the build is complete, perform the following steps to run the test classes in the workspace:&lt;br /&gt;
&lt;br /&gt;
# launch the Windows Off-Target App, TestClass.exe.  This will run in a standard console window.&lt;br /&gt;
# open a command prompt window and change to this sample&#039;s directory.&lt;br /&gt;
# at the command prompt, run the command &amp;lt;tt&amp;gt;&#039;&#039;&#039;TestUnitRun.pl -v&#039;&#039;&#039;&amp;lt;/tt&amp;gt;.  This will execute all of the test units in the workspace and open a browser to display the results.&lt;br /&gt;
# quit the TestClass.exe application by typing &#039;q&#039; in its console window.&lt;br /&gt;
&lt;br /&gt;
==Sample Test Class Macros==&lt;br /&gt;
&lt;br /&gt;
Now that you have built the Windows Off-Target App and executed the test classes it contains, you can take time to peruse the test class source and the corresponding results that each produces.  This section provides a brief description for each.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;NOTE:&#039;&#039; each of the example test classes is grouped in the &#039;&#039;Basic&#039;&#039; namespace.  This is for organizational purposes only -- it is &#039;&#039;&#039;not&#039;&#039;&#039; a general requirement that test classes be placed into namespaces.   &lt;br /&gt;
&lt;br /&gt;
===Basic Examples===&lt;br /&gt;
&lt;br /&gt;
These examples cover simple uses of each of the macro families. The names of the test methods contain either &#039;&#039;Pass&#039;&#039; or &#039;&#039;Fail&#039;&#039;. All methods containing &#039;&#039;Fail&#039;&#039; illustrates uses of test macros that result in failures. Methods containing &#039;&#039;Pass&#039;&#039; illustrate passing uses. &lt;br /&gt;
&lt;br /&gt;
====01_01_Basic_ExpectBool====&lt;br /&gt;
&lt;br /&gt;
This example demonstrates uses of the &#039;&#039;srEXPECT_TRUE()&#039;&#039; and &#039;&#039;srEXPECT_FALSE()&#039;&#039; test class macros. &lt;br /&gt;
&lt;br /&gt;
====01_02_Basic_Comparison====&lt;br /&gt;
&lt;br /&gt;
This example demonstrates uses of the &#039;&#039;srEXPECT_EQ()&#039;&#039;, &#039;&#039;srEXPECT_NE()&#039;&#039;, &#039;&#039;srEXPECT_GT()&#039;&#039;, &#039;&#039;srEXPECT_GE()&#039;&#039;, &#039;&#039;srEXPECT_LT()&#039;&#039; and &#039;&#039;srEXPECT_LE()&#039;&#039; macros. &lt;br /&gt;
&lt;br /&gt;
====01_03_Basic_CString====&lt;br /&gt;
&lt;br /&gt;
This example demonstrates use of the C-string (zero terminated character sequence) macros &#039;&#039;srEXPECT_STREQ()&#039;&#039;, &#039;&#039;srEXPECT_STRNE(&#039;&#039;), &#039;&#039;srEXPECT_STRCASEEQ()&#039;&#039; and &#039;&#039;srEXPECT_STRCASENE()&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
====01_04_Basic_Exceptions====&lt;br /&gt;
&lt;br /&gt;
This example demonstrates use of the exception verification macros &#039;&#039;srEXPECT_THROW()&#039;&#039;, &#039;&#039;srEXPECT_THROW_ANY()&#039;&#039; and &#039;&#039;srEXPECT_NO_THROW()&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
====01_05_Basic_Predicates====&lt;br /&gt;
&lt;br /&gt;
This example demonstrates use of the predicate based macros &#039;&#039;srEXPECT_PRED&amp;lt;n&amp;gt;()&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
====01_06_Basic_FloatingPt====&lt;br /&gt;
&lt;br /&gt;
This example demonstrates use of the macro used to test equality (or near equality) of floating point values &#039;&#039;srEXPECT_NEAR()&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
====01_07_Basic_Assert====&lt;br /&gt;
&lt;br /&gt;
This example illustrates the use of the assertion macros (&#039;&#039;srASSERT_xx&#039;&#039;) which, in contrast to the expectation macros (&#039;&#039;srEXPECT_xx&#039;&#039;), cause the rest of the test case code to by bypassed.&lt;br /&gt;
&lt;br /&gt;
==Test Class Execution==&lt;br /&gt;
&lt;br /&gt;
This sample demonstrates two different techniques for executing test classes.&lt;br /&gt;
&lt;br /&gt;
===Command Line Execution===&lt;br /&gt;
&lt;br /&gt;
Command line execution for test classes is done using the [[Test_Runners#TestUnitRun.pl|TestUnitRun utility]].  Here are several examples of specific syntax to execute test classes.  All of these commands can be invoked from a standard [http://en.wikipedia.org/wiki/Command_Prompt_(Windows) command shell] (or other shell of your choosing) and the arguments shown assume that the commands are executed with the sample&#039;s directory as the starting directory. You must have your TestClass.exe application running in order for the runner to be able to initiate a connection to the target simulator. In addition, you should verify that your %STRIDE_DIR%\bin\transport.cfg file is using the TCP transport to connect to port 8000 (these are the default settings when the product is installed).&lt;br /&gt;
&lt;br /&gt;
====Simple execution of all test units====&lt;br /&gt;
&lt;br /&gt;
The following command executes all of the test units found in the STRIDE database you have previously generated.  For the purpose of this sample, since there is only one database, the -d parameter is not strictly needed, but it is shown here for completeness.&lt;br /&gt;
&lt;br /&gt;
  TestUnitRun.pl -d TestClassMacros.sidb&lt;br /&gt;
&lt;br /&gt;
This command executes all Test Units found in the database in descending alpha-numeric sort order.  Any Test Class initialization arguments are given default values (typically zero or NULL).&lt;br /&gt;
&lt;br /&gt;
When you run this command, you should see console output like:&lt;br /&gt;
&lt;br /&gt;
  Attempting connection using [Sockets (S2)] transport ...&lt;br /&gt;
  Connected to device.&lt;br /&gt;
  Initializing STRIDE database objects...&lt;br /&gt;
  Done.&lt;br /&gt;
  Running Test Basic::Assert...&lt;br /&gt;
  Running Test Basic::CString...&lt;br /&gt;
  Running Test Basic::Comparison...&lt;br /&gt;
  Running Test Basic::Exceptions...&lt;br /&gt;
  Running Test Basic::ExpectBool...&lt;br /&gt;
  Running Test Basic::FloatingPt...&lt;br /&gt;
  Running Test Basic::Predicates...&lt;br /&gt;
  Disconnected from device.&lt;br /&gt;
  Test Results saved to C:\STRIDE\Samples\TestUnits\TestClassMacros\TestClassMacros.xml&lt;br /&gt;
  Test Report saved to C:\STRIDE\Samples\TestUnits\TestClassMacros\TestClassMacros.html&lt;br /&gt;
  ***************************************************************************&lt;br /&gt;
  Results Summary&lt;br /&gt;
  ***************************************************************************&lt;br /&gt;
    Passed:               7&lt;br /&gt;
    Failed:               8&lt;br /&gt;
    In Progress:          0&lt;br /&gt;
    Not Applicable:       0&lt;br /&gt;
    ...in 7 suites.&lt;br /&gt;
  ***************************************************************************&lt;br /&gt;
&lt;br /&gt;
====Execution based on an order file====&lt;br /&gt;
&lt;br /&gt;
TestUnitRun can optionally base its execution on simple text file input. A simple order file, &#039;&#039;RunSimple.txt&#039;&#039;, is provided which specifies a subset of all the Test Classes in this sample. This order file also shows how to create subsuites in the final output by using the special &#039;&#039;&#039;{suitepath}&#039;&#039;&#039; syntax, as described in [[Test_Runners#Usage|the usage section]].&lt;br /&gt;
&lt;br /&gt;
  TestUnitRun.pl -d TestClass.sidb -o RunSimple.txt&lt;br /&gt;
&lt;br /&gt;
...and will produce this output:&lt;br /&gt;
&lt;br /&gt;
  Attempting connection using [Sockets (S2)] transport ...&lt;br /&gt;
  Connected to device.&lt;br /&gt;
  Initializing STRIDE database objects...&lt;br /&gt;
  Done.&lt;br /&gt;
  Running Test Basic::Simple...&lt;br /&gt;
  Running Test RuntimeServices::Simple...&lt;br /&gt;
  Running Test srTest::Simple...&lt;br /&gt;
  Disconnected from device.&lt;br /&gt;
  Test Results saved to C:\STRIDE\Samples\TestUnits\TestClass\TestClass.xml&lt;br /&gt;
  Test Report saved to C:\STRIDE\Samples\TestUnits\TestClass\TestClass.html&lt;br /&gt;
  ***************************************************************************&lt;br /&gt;
  Results Summary&lt;br /&gt;
  ***************************************************************************&lt;br /&gt;
    Passed:              13&lt;br /&gt;
    Failed:               6&lt;br /&gt;
    In Progress:          2&lt;br /&gt;
    Not Applicable:       2&lt;br /&gt;
    ...in 6 suites.&lt;br /&gt;
  ***************************************************************************&lt;br /&gt;
&lt;br /&gt;
====Execution based on filesystem order====&lt;br /&gt;
&lt;br /&gt;
TestUnitRun can also try to infer execution order and suite hierarchy from filesystem organization.  If you have organized your test class source files (only the files that contain the scl_test_class pragma matter here) in a filesystem hierarchy that you want to mimic in your tests, you can specify a root of a directory tree that contains the relevant test class source.  TestUnitRun will walk the directory structure and determine order and hierarchy of tests based on the directory structure.  To see an example of this in action, you can execute this command with the sample:&lt;br /&gt;
&lt;br /&gt;
  TestUnitRun.pl -d TestClass.sidb -f Tests&lt;br /&gt;
&lt;br /&gt;
This will cause the runner to examine the Tests subdirectory structure and build a hierarchy of tests based on that directory tree.  Subdirectories will map to suites in the final report.  Here is the output for this example:&lt;br /&gt;
 &lt;br /&gt;
  Attempting connection using [Sockets (S2)] transport ...&lt;br /&gt;
  Connected to device.&lt;br /&gt;
  Initializing STRIDE database objects...&lt;br /&gt;
  Done.&lt;br /&gt;
  Running Test Basic::Simple...&lt;br /&gt;
  Running Test Basic::Fixtures...&lt;br /&gt;
  Running Test Basic::Exceptions...&lt;br /&gt;
  Running Test Basic::Constructors...&lt;br /&gt;
  Running Test RuntimeServices::Simple...&lt;br /&gt;
  Running Test RuntimeServices::Dynamic...&lt;br /&gt;
  Running Test RuntimeServices::Override...&lt;br /&gt;
  Running Test RuntimeServices::VarComment...&lt;br /&gt;
  Running Test srTest::Simple...&lt;br /&gt;
  Running Test srTest::Dynamic...&lt;br /&gt;
  Disconnected from device.&lt;br /&gt;
  Test Results saved to C:\STRIDE\Samples\TestUnits\TestClass\TestClass.xml&lt;br /&gt;
  Test Report saved to C:\STRIDE\Samples\TestUnits\TestClass\TestClass.html&lt;br /&gt;
  ***************************************************************************&lt;br /&gt;
  Results Summary&lt;br /&gt;
  ***************************************************************************&lt;br /&gt;
    Passed:              26&lt;br /&gt;
    Failed:              12&lt;br /&gt;
    In Progress:          2&lt;br /&gt;
    Not Applicable:       2&lt;br /&gt;
    ...in 15 suites.&lt;br /&gt;
  ***************************************************************************&lt;br /&gt;
&lt;br /&gt;
===Workspace-based Execution===&lt;br /&gt;
&lt;br /&gt;
TestClass.ssw, a workspace in the TestClass directory, demonstrates the use of script execution with Studio to manage test order and hierarchy.  This workspace was created using [[WorkspaceSetup.pl]].  The setup and teardown folders provide basic infrastructure scripts that start/stop the simulator application (TestClass.exe) and to manage traceviews used for [[Runtime_Reference#Logging_Services|srPrint]] message collection.  The scripts that drive the testing are in the workspace &#039;&#039;&#039;test&#039;&#039;&#039; folder. What follows is a brief description for each.&lt;br /&gt;
&lt;br /&gt;
====RunAll====&lt;br /&gt;
&lt;br /&gt;
This folder contains a script, All.js, that iterates through the entire collection of test units and executes them one at a time. The order of execution will be in ascending alpabetical order (by name) since the [[AutoScript#ascript.TestUnits|ArrangeBy]] collection method was called.&lt;br /&gt;
&lt;br /&gt;
====CallConstructor====&lt;br /&gt;
&lt;br /&gt;
This folder contains a simple script example that shows how to invoke test classes with constructor arguments.  In this example, the Basic::Constructors test class is executed twice with different initialization (constructor) arguments both times.&lt;br /&gt;
&lt;br /&gt;
====Run Individual====&lt;br /&gt;
&lt;br /&gt;
This folder shows how to use individual scripts to execute test classes. Each script has the following form:&lt;br /&gt;
&lt;br /&gt;
  ascript.TestUnits.Item(&#039;&#039;&#039;TEST_CLASS_NAME&#039;&#039;&#039;).Run();&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;TEST_Class_NAME&#039;&#039;&#039; is the name of the scl_test_class test to be run.  The order and hierarchy of each item may be changed via the Studio tree control by moving the item within the scripts and/or folders. The sample contains individual scripts for a few of the sample scl_test_class tests - you are free to move, add, or delete any items as you experiment with the workspace.&lt;br /&gt;
&lt;br /&gt;
[[Category: Samples]]&lt;/div&gt;</summary>
		<author><name>Robg</name></author>
	</entry>
	<entry>
		<id>https://www.stridewiki.com/index.php?title=Test_Macros_Sample&amp;diff=8854</id>
		<title>Test Macros Sample</title>
		<link rel="alternate" type="text/html" href="https://www.stridewiki.com/index.php?title=Test_Macros_Sample&amp;diff=8854"/>
		<updated>2009-01-12T16:55:58Z</updated>

		<summary type="html">&lt;p&gt;Robg: /* Basic Examples */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
The Test Macros Samples are part of the [[Test_Unit_Samples|STRIDE Test Unit Samples]]. The following content relates to the sample files and workspaces installed in &#039;&#039;%STRIDE_DIR%\Samples\TestUnits\TestClassMacros&#039;&#039;.  This sample consists of a [http://en.wikipedia.org/wiki/Microsoft_Visual_Studio Visual Studio] workspace for building a [[Windows_Off-Target_Apps|Windows Off-Target App]], sample test class macros source code,  and a STRIDE workspace for doing more advanced test class execution.&lt;br /&gt;
&lt;br /&gt;
==Getting Started==&lt;br /&gt;
&lt;br /&gt;
To begin, open the Visual Studio Solution file in the sample directory.  This solution (and corresponding project) were created for Visual Studio 2005.  If you have a later version of Visual Studio installed, you should be able to open this solution and it will be automatically upgraded if necessary.  If you do not currently have any version of Visual Studio, it is recommended that you install the current free version of [http://en.wikipedia.org/wiki/Visual_Studio_Express Visual Studio Express].&lt;br /&gt;
&lt;br /&gt;
Once you have successfully opened the solution, rebuild it.  The build process has custom STRIDE build rules integrated and will produce a STRIDE database, intercept module source files, and a Windows Off-Target App that incorporates the test class source.&lt;br /&gt;
&lt;br /&gt;
Once the build is complete, perform the following steps to run the test classes in the workspace:&lt;br /&gt;
&lt;br /&gt;
# launch the Windows Off-Target App, TestClass.exe.  This will run in a standard console window.&lt;br /&gt;
# open a command prompt window and change to this sample&#039;s directory.&lt;br /&gt;
# at the command prompt, run the command &amp;lt;tt&amp;gt;&#039;&#039;&#039;TestUnitRun.pl -v&#039;&#039;&#039;&amp;lt;/tt&amp;gt;.  This will execute all of the test units in the workspace and open a browser to display the results.&lt;br /&gt;
# quit the TestClass.exe application by typing &#039;q&#039; in its console window.&lt;br /&gt;
&lt;br /&gt;
==Sample Test Class Macros==&lt;br /&gt;
&lt;br /&gt;
Now that you have built the Windows Off-Target App and executed the test classes it contains, you can take time to peruse the test class source and the corresponding results that each produces.  This section provides a brief description for each.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;NOTE:&#039;&#039; each of the example test classes is grouped in the &#039;&#039;Basic&#039;&#039; namespace.  This is for organizational purposes only -- it is &#039;&#039;&#039;not&#039;&#039;&#039; a general requirement that test classes be placed into namespaces.   &lt;br /&gt;
&lt;br /&gt;
===Basic Examples===&lt;br /&gt;
&lt;br /&gt;
These examples cover simple uses of each of the macro families. The names of the test methods contain either &#039;&#039;Pass&#039;&#039; or &#039;&#039;Fail&#039;&#039;. All methods containing &#039;&#039;Fail&#039;&#039; illustrates uses of test macros that result in failures. Methods containing &#039;&#039;Pass&#039;&#039; illustrate passing uses. &lt;br /&gt;
&lt;br /&gt;
====01_01_Basic_ExpectBool====&lt;br /&gt;
&lt;br /&gt;
This example demonstrates uses of the &#039;&#039;srEXPECT_TRUE()&#039;&#039; and &#039;&#039;srEXPECT_FALSE()&#039;&#039; test class macros. &lt;br /&gt;
&lt;br /&gt;
====01_02_Basic_Comparison====&lt;br /&gt;
&lt;br /&gt;
This example demonstrates uses of the &#039;&#039;srEXPECT_EQ()&#039;&#039;, &#039;&#039;srEXPECT_NE()&#039;&#039;, &#039;&#039;srEXPECT_GT()&#039;&#039;, &#039;&#039;srEXPECT_GE()&#039;&#039;, &#039;&#039;srEXPECT_LT()&#039;&#039; and &#039;&#039;srEXPECT_LE()&#039;&#039; macros. &lt;br /&gt;
&lt;br /&gt;
====01_03_Basic_CString====&lt;br /&gt;
&lt;br /&gt;
This example demonstrates use of the C-string (zero terminated character sequence) macros &#039;&#039;srEXPECT_STREQ()&#039;&#039;, &#039;&#039;srEXPECT_STRNE(&#039;&#039;), &#039;&#039;srEXPECT_STRCASEEQ()&#039;&#039; and &#039;&#039;srEXPECT_STRCASENE()&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
====01_04_Basic_Exceptions====&lt;br /&gt;
&lt;br /&gt;
This example demonstrates use of the exception verification macros &#039;&#039;srEXPECT_THROW()&#039;&#039;, &#039;&#039;srEXPECT_THROW_ANY()&#039;&#039; and &#039;&#039;srEXPECT_NO_THROW()&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
====01_05_Basic_Predicates====&lt;br /&gt;
&lt;br /&gt;
This example demonstrates use of the predicate based macros &#039;&#039;srEXPECT_PRED&amp;lt;n&amp;gt;()&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
====01_06_Basic_FloatingPt====&lt;br /&gt;
&lt;br /&gt;
This example demonstrates use of the macro used to test equality (or near equality) of floating point values &#039;&#039;srEXPECT_NEAR()&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
====01_07_Basic_Assert====&lt;br /&gt;
&lt;br /&gt;
This example illustrates the use of the assertion macros (&#039;&#039;srASSERT_xx&#039;&#039;) which, in contrast to the expectation macros (&#039;&#039;srEXPECT_xx&#039;&#039;), cause the rest of the test case code to by bypassed.&lt;br /&gt;
&lt;br /&gt;
==Test Class Execution==&lt;br /&gt;
&lt;br /&gt;
This sample demonstrates two different techniques for executing test classes.&lt;br /&gt;
&lt;br /&gt;
===Command Line Execution===&lt;br /&gt;
&lt;br /&gt;
Command line execution for test classes is done using the [[Test_Runners#TestUnitRun.pl|TestUnitRun utility]].  Here are several examples of specific syntax to execute test classes.  All of these commands can be invoked from a standard [http://en.wikipedia.org/wiki/Command_Prompt_(Windows) command shell] (or other shell of your choosing) and the arguments shown assume that the commands are executed with the sample&#039;s directory as the starting directory. You must have your TestClass.exe application running in order for the runner to be able to initiate a connection to the target simulator. In addition, you should verify that your %STRIDE_DIR%\bin\transport.cfg file is using the TCP transport to connect to port 8000 (these are the default settings when the product is installed).&lt;br /&gt;
&lt;br /&gt;
====Simple execution of all test units====&lt;br /&gt;
&lt;br /&gt;
The following command executes all of the test units found in the STRIDE database you have previously generated.  For the purpose of this sample, since there is only one database, the -d parameter is not strictly needed, but it is shown here for completeness.&lt;br /&gt;
&lt;br /&gt;
  TestUnitRun.pl -d TestClass.sidb&lt;br /&gt;
&lt;br /&gt;
This command executes all Test Units found in the database in descending alpha-numeric sort order.  Any Test Class initialization arguments are given default values (typically zero or NULL).&lt;br /&gt;
&lt;br /&gt;
When you run this command, you should see console output like:&lt;br /&gt;
&lt;br /&gt;
  Attempting connection using [Sockets (S2)] transport ...&lt;br /&gt;
  Connected to device.&lt;br /&gt;
  Initializing STRIDE database objects...&lt;br /&gt;
  Done.&lt;br /&gt;
  Running Test Basic::Constructors...&lt;br /&gt;
  Running Test Basic::Exceptions...&lt;br /&gt;
  Running Test Basic::Fixtures...&lt;br /&gt;
  Running Test Basic::Simple...&lt;br /&gt;
  Running Test RuntimeServices::Dynamic...&lt;br /&gt;
  Running Test RuntimeServices::Override... &lt;br /&gt;
  Running Test RuntimeServices::Simple...&lt;br /&gt;
  Running Test RuntimeServices::VarComment...&lt;br /&gt;
  Running Test srTest::Dynamic...&lt;br /&gt;
  Running Test srTest::Simple...&lt;br /&gt;
  Disconnected from device.&lt;br /&gt;
  Test Results saved to C:\STRIDE\Samples\TestUnits\TestClass\TestClass.xml&lt;br /&gt;
  Test Report saved to C:\STRIDE\Samples\TestUnits\TestClass\TestClass.html&lt;br /&gt;
  ***************************************************************************&lt;br /&gt;
  Results Summary&lt;br /&gt;
  ***************************************************************************&lt;br /&gt;
    Passed:              26&lt;br /&gt;
    Failed:              12&lt;br /&gt;
    In Progress:          2&lt;br /&gt;
    Not Applicable:       2&lt;br /&gt;
    ...in 12 suites.&lt;br /&gt;
  ***************************************************************************&lt;br /&gt;
&lt;br /&gt;
====Execution based on an order file====&lt;br /&gt;
&lt;br /&gt;
TestUnitRun can optionally base its execution on simple text file input. A simple order file, &#039;&#039;RunSimple.txt&#039;&#039;, is provided which specifies a subset of all the Test Classes in this sample. This order file also shows how to create subsuites in the final output by using the special &#039;&#039;&#039;{suitepath}&#039;&#039;&#039; syntax, as described in [[Test_Runners#Usage|the usage section]].&lt;br /&gt;
&lt;br /&gt;
  TestUnitRun.pl -d TestClass.sidb -o RunSimple.txt&lt;br /&gt;
&lt;br /&gt;
...and will produce this output:&lt;br /&gt;
&lt;br /&gt;
  Attempting connection using [Sockets (S2)] transport ...&lt;br /&gt;
  Connected to device.&lt;br /&gt;
  Initializing STRIDE database objects...&lt;br /&gt;
  Done.&lt;br /&gt;
  Running Test Basic::Simple...&lt;br /&gt;
  Running Test RuntimeServices::Simple...&lt;br /&gt;
  Running Test srTest::Simple...&lt;br /&gt;
  Disconnected from device.&lt;br /&gt;
  Test Results saved to C:\STRIDE\Samples\TestUnits\TestClass\TestClass.xml&lt;br /&gt;
  Test Report saved to C:\STRIDE\Samples\TestUnits\TestClass\TestClass.html&lt;br /&gt;
  ***************************************************************************&lt;br /&gt;
  Results Summary&lt;br /&gt;
  ***************************************************************************&lt;br /&gt;
    Passed:              13&lt;br /&gt;
    Failed:               6&lt;br /&gt;
    In Progress:          2&lt;br /&gt;
    Not Applicable:       2&lt;br /&gt;
    ...in 6 suites.&lt;br /&gt;
  ***************************************************************************&lt;br /&gt;
&lt;br /&gt;
====Execution based on filesystem order====&lt;br /&gt;
&lt;br /&gt;
TestUnitRun can also try to infer execution order and suite hierarchy from filesystem organization.  If you have organized your test class source files (only the files that contain the scl_test_class pragma matter here) in a filesystem hierarchy that you want to mimic in your tests, you can specify a root of a directory tree that contains the relevant test class source.  TestUnitRun will walk the directory structure and determine order and hierarchy of tests based on the directory structure.  To see an example of this in action, you can execute this command with the sample:&lt;br /&gt;
&lt;br /&gt;
  TestUnitRun.pl -d TestClass.sidb -f Tests&lt;br /&gt;
&lt;br /&gt;
This will cause the runner to examine the Tests subdirectory structure and build a hierarchy of tests based on that directory tree.  Subdirectories will map to suites in the final report.  Here is the output for this example:&lt;br /&gt;
 &lt;br /&gt;
  Attempting connection using [Sockets (S2)] transport ...&lt;br /&gt;
  Connected to device.&lt;br /&gt;
  Initializing STRIDE database objects...&lt;br /&gt;
  Done.&lt;br /&gt;
  Running Test Basic::Simple...&lt;br /&gt;
  Running Test Basic::Fixtures...&lt;br /&gt;
  Running Test Basic::Exceptions...&lt;br /&gt;
  Running Test Basic::Constructors...&lt;br /&gt;
  Running Test RuntimeServices::Simple...&lt;br /&gt;
  Running Test RuntimeServices::Dynamic...&lt;br /&gt;
  Running Test RuntimeServices::Override...&lt;br /&gt;
  Running Test RuntimeServices::VarComment...&lt;br /&gt;
  Running Test srTest::Simple...&lt;br /&gt;
  Running Test srTest::Dynamic...&lt;br /&gt;
  Disconnected from device.&lt;br /&gt;
  Test Results saved to C:\STRIDE\Samples\TestUnits\TestClass\TestClass.xml&lt;br /&gt;
  Test Report saved to C:\STRIDE\Samples\TestUnits\TestClass\TestClass.html&lt;br /&gt;
  ***************************************************************************&lt;br /&gt;
  Results Summary&lt;br /&gt;
  ***************************************************************************&lt;br /&gt;
    Passed:              26&lt;br /&gt;
    Failed:              12&lt;br /&gt;
    In Progress:          2&lt;br /&gt;
    Not Applicable:       2&lt;br /&gt;
    ...in 15 suites.&lt;br /&gt;
  ***************************************************************************&lt;br /&gt;
&lt;br /&gt;
===Workspace-based Execution===&lt;br /&gt;
&lt;br /&gt;
TestClass.ssw, a workspace in the TestClass directory, demonstrates the use of script execution with Studio to manage test order and hierarchy.  This workspace was created using [[WorkspaceSetup.pl]].  The setup and teardown folders provide basic infrastructure scripts that start/stop the simulator application (TestClass.exe) and to manage traceviews used for [[Runtime_Reference#Logging_Services|srPrint]] message collection.  The scripts that drive the testing are in the workspace &#039;&#039;&#039;test&#039;&#039;&#039; folder. What follows is a brief description for each.&lt;br /&gt;
&lt;br /&gt;
====RunAll====&lt;br /&gt;
&lt;br /&gt;
This folder contains a script, All.js, that iterates through the entire collection of test units and executes them one at a time. The order of execution will be in ascending alpabetical order (by name) since the [[AutoScript#ascript.TestUnits|ArrangeBy]] collection method was called.&lt;br /&gt;
&lt;br /&gt;
====CallConstructor====&lt;br /&gt;
&lt;br /&gt;
This folder contains a simple script example that shows how to invoke test classes with constructor arguments.  In this example, the Basic::Constructors test class is executed twice with different initialization (constructor) arguments both times.&lt;br /&gt;
&lt;br /&gt;
====Run Individual====&lt;br /&gt;
&lt;br /&gt;
This folder shows how to use individual scripts to execute test classes. Each script has the following form:&lt;br /&gt;
&lt;br /&gt;
  ascript.TestUnits.Item(&#039;&#039;&#039;TEST_CLASS_NAME&#039;&#039;&#039;).Run();&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;TEST_Class_NAME&#039;&#039;&#039; is the name of the scl_test_class test to be run.  The order and hierarchy of each item may be changed via the Studio tree control by moving the item within the scripts and/or folders. The sample contains individual scripts for a few of the sample scl_test_class tests - you are free to move, add, or delete any items as you experiment with the workspace.&lt;br /&gt;
&lt;br /&gt;
[[Category: Samples]]&lt;/div&gt;</summary>
		<author><name>Robg</name></author>
	</entry>
	<entry>
		<id>https://www.stridewiki.com/index.php?title=Test_Macros_Sample&amp;diff=8853</id>
		<title>Test Macros Sample</title>
		<link rel="alternate" type="text/html" href="https://www.stridewiki.com/index.php?title=Test_Macros_Sample&amp;diff=8853"/>
		<updated>2009-01-12T16:55:38Z</updated>

		<summary type="html">&lt;p&gt;Robg: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
The Test Macros Samples are part of the [[Test_Unit_Samples|STRIDE Test Unit Samples]]. The following content relates to the sample files and workspaces installed in &#039;&#039;%STRIDE_DIR%\Samples\TestUnits\TestClassMacros&#039;&#039;.  This sample consists of a [http://en.wikipedia.org/wiki/Microsoft_Visual_Studio Visual Studio] workspace for building a [[Windows_Off-Target_Apps|Windows Off-Target App]], sample test class macros source code,  and a STRIDE workspace for doing more advanced test class execution.&lt;br /&gt;
&lt;br /&gt;
==Getting Started==&lt;br /&gt;
&lt;br /&gt;
To begin, open the Visual Studio Solution file in the sample directory.  This solution (and corresponding project) were created for Visual Studio 2005.  If you have a later version of Visual Studio installed, you should be able to open this solution and it will be automatically upgraded if necessary.  If you do not currently have any version of Visual Studio, it is recommended that you install the current free version of [http://en.wikipedia.org/wiki/Visual_Studio_Express Visual Studio Express].&lt;br /&gt;
&lt;br /&gt;
Once you have successfully opened the solution, rebuild it.  The build process has custom STRIDE build rules integrated and will produce a STRIDE database, intercept module source files, and a Windows Off-Target App that incorporates the test class source.&lt;br /&gt;
&lt;br /&gt;
Once the build is complete, perform the following steps to run the test classes in the workspace:&lt;br /&gt;
&lt;br /&gt;
# launch the Windows Off-Target App, TestClass.exe.  This will run in a standard console window.&lt;br /&gt;
# open a command prompt window and change to this sample&#039;s directory.&lt;br /&gt;
# at the command prompt, run the command &amp;lt;tt&amp;gt;&#039;&#039;&#039;TestUnitRun.pl -v&#039;&#039;&#039;&amp;lt;/tt&amp;gt;.  This will execute all of the test units in the workspace and open a browser to display the results.&lt;br /&gt;
# quit the TestClass.exe application by typing &#039;q&#039; in its console window.&lt;br /&gt;
&lt;br /&gt;
==Sample Test Class Macros==&lt;br /&gt;
&lt;br /&gt;
Now that you have built the Windows Off-Target App and executed the test classes it contains, you can take time to peruse the test class source and the corresponding results that each produces.  This section provides a brief description for each.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;NOTE:&#039;&#039; each of the example test classes is grouped in the &#039;&#039;Basic&#039;&#039; namespace.  This is for organizational purposes only -- it is &#039;&#039;&#039;not&#039;&#039;&#039; a general requirement that test classes be placed into namespaces.   &lt;br /&gt;
&lt;br /&gt;
===Basic Examples===&lt;br /&gt;
&lt;br /&gt;
These examples cover simple uses of each of the macro families. The names of the test methods contain either &#039;&#039;Pass&#039;&#039; or &#039;&#039;Fail&#039;&#039;. All methods containing &#039;&#039;Fail&#039;&#039; illustrates uses of test macros that result in failures. Methods containing &#039;&#039;Pass&#039;&#039; illustrate passing uses. &lt;br /&gt;
&lt;br /&gt;
====01_01_Basic_ExpectBool====&lt;br /&gt;
&lt;br /&gt;
This example demonstrates uses of the &#039;&#039;srEXPECT_TRUE()&#039;&#039; and &#039;&#039;srEXPECT_FALSE()&#039;&#039; test class macros. &lt;br /&gt;
&lt;br /&gt;
====01_02_Basic_Comparison====&lt;br /&gt;
&lt;br /&gt;
This example demonstrates uses of the &#039;&#039;srEXPECT_EQ()&#039;&#039;, &#039;&#039;srEXPECT_NE()&#039;&#039;, &#039;&#039;srEXPECT_GT()&#039;&#039;, &#039;&#039;srEXPECT_GE()&#039;&#039;, &#039;&#039;srEXPECT_LT()&#039;&#039; and &#039;&#039;srEXPECT_LE()&#039;&#039; macros. &lt;br /&gt;
&lt;br /&gt;
====01_03_Basic_CString====&lt;br /&gt;
&lt;br /&gt;
This example demonstrates use of the C-string (zero terminated character sequence) macros &#039;&#039;srEXPECT_STREQ()&#039;&#039;, &#039;&#039;srEXPECT_STRNE(&#039;&#039;), &#039;&#039;srEXPECT_STRCASEEQ()&#039;&#039; and &#039;&#039;srEXPECT_STRCASENE()&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
====01_04_Basic_Exceptions====&lt;br /&gt;
&lt;br /&gt;
This example demonstrates use of the exception verification macros &#039;&#039;srEXPECT_THROW()&#039;&#039;, &#039;&#039;srEXPECT_THROW_ANY()&#039;&#039; and &#039;&#039;srEXPECT_NO_THROW()&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
====01_05_Basic_Predicates====&lt;br /&gt;
&lt;br /&gt;
This example demonstrates use of the predicate based macros &#039;&#039;srEXPECT_PRED&amp;lt;n&amp;gt;()&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
====01_06_Basic_FloatingPt====&lt;br /&gt;
&lt;br /&gt;
This example demonstrates use of the macro used to test equality (or near equality) of floating point values &#039;&#039;srEXPECT_NEAR()&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====01_07_Basic_Assert====&lt;br /&gt;
&lt;br /&gt;
This example illustrates the use of the assertion macros (&#039;&#039;srASSERT_xx&#039;&#039;) which, in contrast to the expectation macros (&#039;&#039;srEXPECT_xx&#039;&#039;), cause the rest of the test case code to by bypassed.&lt;br /&gt;
&lt;br /&gt;
==Test Class Execution==&lt;br /&gt;
&lt;br /&gt;
This sample demonstrates two different techniques for executing test classes.&lt;br /&gt;
&lt;br /&gt;
===Command Line Execution===&lt;br /&gt;
&lt;br /&gt;
Command line execution for test classes is done using the [[Test_Runners#TestUnitRun.pl|TestUnitRun utility]].  Here are several examples of specific syntax to execute test classes.  All of these commands can be invoked from a standard [http://en.wikipedia.org/wiki/Command_Prompt_(Windows) command shell] (or other shell of your choosing) and the arguments shown assume that the commands are executed with the sample&#039;s directory as the starting directory. You must have your TestClass.exe application running in order for the runner to be able to initiate a connection to the target simulator. In addition, you should verify that your %STRIDE_DIR%\bin\transport.cfg file is using the TCP transport to connect to port 8000 (these are the default settings when the product is installed).&lt;br /&gt;
&lt;br /&gt;
====Simple execution of all test units====&lt;br /&gt;
&lt;br /&gt;
The following command executes all of the test units found in the STRIDE database you have previously generated.  For the purpose of this sample, since there is only one database, the -d parameter is not strictly needed, but it is shown here for completeness.&lt;br /&gt;
&lt;br /&gt;
  TestUnitRun.pl -d TestClass.sidb&lt;br /&gt;
&lt;br /&gt;
This command executes all Test Units found in the database in descending alpha-numeric sort order.  Any Test Class initialization arguments are given default values (typically zero or NULL).&lt;br /&gt;
&lt;br /&gt;
When you run this command, you should see console output like:&lt;br /&gt;
&lt;br /&gt;
  Attempting connection using [Sockets (S2)] transport ...&lt;br /&gt;
  Connected to device.&lt;br /&gt;
  Initializing STRIDE database objects...&lt;br /&gt;
  Done.&lt;br /&gt;
  Running Test Basic::Constructors...&lt;br /&gt;
  Running Test Basic::Exceptions...&lt;br /&gt;
  Running Test Basic::Fixtures...&lt;br /&gt;
  Running Test Basic::Simple...&lt;br /&gt;
  Running Test RuntimeServices::Dynamic...&lt;br /&gt;
  Running Test RuntimeServices::Override... &lt;br /&gt;
  Running Test RuntimeServices::Simple...&lt;br /&gt;
  Running Test RuntimeServices::VarComment...&lt;br /&gt;
  Running Test srTest::Dynamic...&lt;br /&gt;
  Running Test srTest::Simple...&lt;br /&gt;
  Disconnected from device.&lt;br /&gt;
  Test Results saved to C:\STRIDE\Samples\TestUnits\TestClass\TestClass.xml&lt;br /&gt;
  Test Report saved to C:\STRIDE\Samples\TestUnits\TestClass\TestClass.html&lt;br /&gt;
  ***************************************************************************&lt;br /&gt;
  Results Summary&lt;br /&gt;
  ***************************************************************************&lt;br /&gt;
    Passed:              26&lt;br /&gt;
    Failed:              12&lt;br /&gt;
    In Progress:          2&lt;br /&gt;
    Not Applicable:       2&lt;br /&gt;
    ...in 12 suites.&lt;br /&gt;
  ***************************************************************************&lt;br /&gt;
&lt;br /&gt;
====Execution based on an order file====&lt;br /&gt;
&lt;br /&gt;
TestUnitRun can optionally base its execution on simple text file input. A simple order file, &#039;&#039;RunSimple.txt&#039;&#039;, is provided which specifies a subset of all the Test Classes in this sample. This order file also shows how to create subsuites in the final output by using the special &#039;&#039;&#039;{suitepath}&#039;&#039;&#039; syntax, as described in [[Test_Runners#Usage|the usage section]].&lt;br /&gt;
&lt;br /&gt;
  TestUnitRun.pl -d TestClass.sidb -o RunSimple.txt&lt;br /&gt;
&lt;br /&gt;
...and will produce this output:&lt;br /&gt;
&lt;br /&gt;
  Attempting connection using [Sockets (S2)] transport ...&lt;br /&gt;
  Connected to device.&lt;br /&gt;
  Initializing STRIDE database objects...&lt;br /&gt;
  Done.&lt;br /&gt;
  Running Test Basic::Simple...&lt;br /&gt;
  Running Test RuntimeServices::Simple...&lt;br /&gt;
  Running Test srTest::Simple...&lt;br /&gt;
  Disconnected from device.&lt;br /&gt;
  Test Results saved to C:\STRIDE\Samples\TestUnits\TestClass\TestClass.xml&lt;br /&gt;
  Test Report saved to C:\STRIDE\Samples\TestUnits\TestClass\TestClass.html&lt;br /&gt;
  ***************************************************************************&lt;br /&gt;
  Results Summary&lt;br /&gt;
  ***************************************************************************&lt;br /&gt;
    Passed:              13&lt;br /&gt;
    Failed:               6&lt;br /&gt;
    In Progress:          2&lt;br /&gt;
    Not Applicable:       2&lt;br /&gt;
    ...in 6 suites.&lt;br /&gt;
  ***************************************************************************&lt;br /&gt;
&lt;br /&gt;
====Execution based on filesystem order====&lt;br /&gt;
&lt;br /&gt;
TestUnitRun can also try to infer execution order and suite hierarchy from filesystem organization.  If you have organized your test class source files (only the files that contain the scl_test_class pragma matter here) in a filesystem hierarchy that you want to mimic in your tests, you can specify a root of a directory tree that contains the relevant test class source.  TestUnitRun will walk the directory structure and determine order and hierarchy of tests based on the directory structure.  To see an example of this in action, you can execute this command with the sample:&lt;br /&gt;
&lt;br /&gt;
  TestUnitRun.pl -d TestClass.sidb -f Tests&lt;br /&gt;
&lt;br /&gt;
This will cause the runner to examine the Tests subdirectory structure and build a hierarchy of tests based on that directory tree.  Subdirectories will map to suites in the final report.  Here is the output for this example:&lt;br /&gt;
 &lt;br /&gt;
  Attempting connection using [Sockets (S2)] transport ...&lt;br /&gt;
  Connected to device.&lt;br /&gt;
  Initializing STRIDE database objects...&lt;br /&gt;
  Done.&lt;br /&gt;
  Running Test Basic::Simple...&lt;br /&gt;
  Running Test Basic::Fixtures...&lt;br /&gt;
  Running Test Basic::Exceptions...&lt;br /&gt;
  Running Test Basic::Constructors...&lt;br /&gt;
  Running Test RuntimeServices::Simple...&lt;br /&gt;
  Running Test RuntimeServices::Dynamic...&lt;br /&gt;
  Running Test RuntimeServices::Override...&lt;br /&gt;
  Running Test RuntimeServices::VarComment...&lt;br /&gt;
  Running Test srTest::Simple...&lt;br /&gt;
  Running Test srTest::Dynamic...&lt;br /&gt;
  Disconnected from device.&lt;br /&gt;
  Test Results saved to C:\STRIDE\Samples\TestUnits\TestClass\TestClass.xml&lt;br /&gt;
  Test Report saved to C:\STRIDE\Samples\TestUnits\TestClass\TestClass.html&lt;br /&gt;
  ***************************************************************************&lt;br /&gt;
  Results Summary&lt;br /&gt;
  ***************************************************************************&lt;br /&gt;
    Passed:              26&lt;br /&gt;
    Failed:              12&lt;br /&gt;
    In Progress:          2&lt;br /&gt;
    Not Applicable:       2&lt;br /&gt;
    ...in 15 suites.&lt;br /&gt;
  ***************************************************************************&lt;br /&gt;
&lt;br /&gt;
===Workspace-based Execution===&lt;br /&gt;
&lt;br /&gt;
TestClass.ssw, a workspace in the TestClass directory, demonstrates the use of script execution with Studio to manage test order and hierarchy.  This workspace was created using [[WorkspaceSetup.pl]].  The setup and teardown folders provide basic infrastructure scripts that start/stop the simulator application (TestClass.exe) and to manage traceviews used for [[Runtime_Reference#Logging_Services|srPrint]] message collection.  The scripts that drive the testing are in the workspace &#039;&#039;&#039;test&#039;&#039;&#039; folder. What follows is a brief description for each.&lt;br /&gt;
&lt;br /&gt;
====RunAll====&lt;br /&gt;
&lt;br /&gt;
This folder contains a script, All.js, that iterates through the entire collection of test units and executes them one at a time. The order of execution will be in ascending alpabetical order (by name) since the [[AutoScript#ascript.TestUnits|ArrangeBy]] collection method was called.&lt;br /&gt;
&lt;br /&gt;
====CallConstructor====&lt;br /&gt;
&lt;br /&gt;
This folder contains a simple script example that shows how to invoke test classes with constructor arguments.  In this example, the Basic::Constructors test class is executed twice with different initialization (constructor) arguments both times.&lt;br /&gt;
&lt;br /&gt;
====Run Individual====&lt;br /&gt;
&lt;br /&gt;
This folder shows how to use individual scripts to execute test classes. Each script has the following form:&lt;br /&gt;
&lt;br /&gt;
  ascript.TestUnits.Item(&#039;&#039;&#039;TEST_CLASS_NAME&#039;&#039;&#039;).Run();&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;TEST_Class_NAME&#039;&#039;&#039; is the name of the scl_test_class test to be run.  The order and hierarchy of each item may be changed via the Studio tree control by moving the item within the scripts and/or folders. The sample contains individual scripts for a few of the sample scl_test_class tests - you are free to move, add, or delete any items as you experiment with the workspace.&lt;br /&gt;
&lt;br /&gt;
[[Category: Samples]]&lt;/div&gt;</summary>
		<author><name>Robg</name></author>
	</entry>
	<entry>
		<id>https://www.stridewiki.com/index.php?title=Test_Macros_Sample&amp;diff=8852</id>
		<title>Test Macros Sample</title>
		<link rel="alternate" type="text/html" href="https://www.stridewiki.com/index.php?title=Test_Macros_Sample&amp;diff=8852"/>
		<updated>2009-01-12T16:54:55Z</updated>

		<summary type="html">&lt;p&gt;Robg: /* Sample Test Class Macros */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
The Test Macros Samples are part of the [[Test_Unit_Samples|STRIDE Test Unit Samples]]. The following content relates to the sample files and workspaces installed in &#039;&#039;%STRIDE_DIR%\Samples\TestUnits\TestClassMacros&#039;&#039;.  This sample consists of a [http://en.wikipedia.org/wiki/Microsoft_Visual_Studio Visual Studio] workspace for building a [[Windows_Off-Target_Apps|Windows Off-Target App]], sample test class macros source code,  and a STRIDE workspace for doing more advanced test class execution.&lt;br /&gt;
&lt;br /&gt;
==Getting Started==&lt;br /&gt;
&lt;br /&gt;
To begin, open the Visual Studio Solution file in the sample directory.  This solution (and corresponding project) were created for Visual Studio 2005.  If you have a later version of Visual Studio installed, you should be able to open this solution and it will be automatically upgraded if necessary.  If you do not currently have any version of Visual Studio, it is recommended that you install the current free version of [http://en.wikipedia.org/wiki/Visual_Studio_Express Visual Studio Express].&lt;br /&gt;
&lt;br /&gt;
Once you have successfully opened the solution, rebuild it.  The build process has custom STRIDE build rules integrated and will produce a STRIDE database, intercept module source files, and a Windows Off-Target App that incorporates the test class source.&lt;br /&gt;
&lt;br /&gt;
Once the build is complete, perform the following steps to run the test classes in the workspace:&lt;br /&gt;
&lt;br /&gt;
# launch the Windows Off-Target App, TestClass.exe.  This will run in a standard console window.&lt;br /&gt;
# open a command prompt window and change to this sample&#039;s directory.&lt;br /&gt;
# at the command prompt, run the command &amp;lt;tt&amp;gt;&#039;&#039;&#039;TestUnitRun.pl -v&#039;&#039;&#039;&amp;lt;/tt&amp;gt;.  This will execute all of the test units in the workspace and open a browser to display the results.&lt;br /&gt;
# quit the TestClass.exe application by typing &#039;q&#039; in its console window.&lt;br /&gt;
&lt;br /&gt;
==Sample Test Class Macros==&lt;br /&gt;
&lt;br /&gt;
Now that you have built the Windows Off-Target App and executed the test classes it contains, you can take time to peruse the test class source and the corresponding results that each produces.  This section provides a brief description for each.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;NOTE:&#039;&#039; each of the example test classes is grouped in the &#039;&#039;Basic&#039;&#039; namespace.  This is for organizational purposes only -- it is &#039;&#039;&#039;not&#039;&#039;&#039; a general requirement that test classes be placed into namespaces.   &lt;br /&gt;
&lt;br /&gt;
===Basic Examples===&lt;br /&gt;
&lt;br /&gt;
These examples cover simple uses of each of the macro families. The names of the test methods contain either &#039;&#039;Pass&#039;&#039; or &#039;&#039;Fail&#039;&#039;. All methods containing &#039;&#039;Fail&#039;&#039; illustrates uses of test macros that result in failures. Methods containing &#039;&#039;Pass&#039;&#039; illustrate passing uses. &lt;br /&gt;
&lt;br /&gt;
====01_01_Basic_ExpectBool====&lt;br /&gt;
&lt;br /&gt;
This example demonstrates uses of the &#039;&#039;srEXPECT_TRUE()&#039;&#039; and &#039;&#039;srEXPECT_FALSE()&#039;&#039; test class macros. &lt;br /&gt;
&lt;br /&gt;
====01_02_Basic_Comparison====&lt;br /&gt;
&lt;br /&gt;
This example demonstrates uses of the &#039;&#039;srEXPECT_EQ()&#039;&#039;, &#039;&#039;srEXPECT_NE()&#039;&#039;, &#039;&#039;srEXPECT_GT()&#039;&#039;, &#039;&#039;srEXPECT_GE()&#039;&#039;, &#039;&#039;srEXPECT_LT()&#039;&#039; and &#039;&#039;srEXPECT_LE()&#039;&#039; macros. &lt;br /&gt;
&lt;br /&gt;
====01_03_Basic_CString====&lt;br /&gt;
&lt;br /&gt;
This example demonstrates use of the C-string (zero terminated character sequence) macros &#039;&#039;srEXPECT_STREQ()&#039;&#039;, &#039;&#039;srEXPECT_STRNE(&#039;&#039;), &#039;&#039;srEXPECT_STRCASEEQ()&#039;&#039; and &#039;&#039;srEXPECT_STRCASENE()&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
====01_04_Basic_Exceptions====&lt;br /&gt;
&lt;br /&gt;
This example demonstrates use of the exception verification macros &#039;&#039;srEXPECT_THROW()&#039;&#039;, &#039;&#039;srEXPECT_THROW_ANY()&#039;&#039; and &#039;&#039;srEXPECT_NO_THROW()&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
====01_05_Basic_Predicates====&lt;br /&gt;
&lt;br /&gt;
This example demonstrates use of the predicate based macros &#039;&#039;srEXPECT_PRED&amp;lt;n&amp;gt;()&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===01_06_Basic_FloatingPt====&lt;br /&gt;
&lt;br /&gt;
This example demonstrates use of the macro used to test equality (or near equality) of floating point values &#039;&#039;srEXPECT_NEAR()&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===01_07_Basic_Assert====&lt;br /&gt;
&lt;br /&gt;
This example illustrates the use of the assertion macros (&#039;&#039;srASSERT_xx&#039;&#039;) which, in contrast to the expectation macros (&#039;&#039;srEXPECT_xx&#039;&#039;), cause the rest of the test case code to by bypassed.&lt;br /&gt;
&lt;br /&gt;
==Test Class Execution==&lt;br /&gt;
&lt;br /&gt;
This sample demonstrates two different techniques for executing test classes.&lt;br /&gt;
&lt;br /&gt;
===Command Line Execution===&lt;br /&gt;
&lt;br /&gt;
Command line execution for test classes is done using the [[Test_Runners#TestUnitRun.pl|TestUnitRun utility]].  Here are several examples of specific syntax to execute test classes.  All of these commands can be invoked from a standard [http://en.wikipedia.org/wiki/Command_Prompt_(Windows) command shell] (or other shell of your choosing) and the arguments shown assume that the commands are executed with the sample&#039;s directory as the starting directory. You must have your TestClass.exe application running in order for the runner to be able to initiate a connection to the target simulator. In addition, you should verify that your %STRIDE_DIR%\bin\transport.cfg file is using the TCP transport to connect to port 8000 (these are the default settings when the product is installed).&lt;br /&gt;
&lt;br /&gt;
====Simple execution of all test units====&lt;br /&gt;
&lt;br /&gt;
The following command executes all of the test units found in the STRIDE database you have previously generated.  For the purpose of this sample, since there is only one database, the -d parameter is not strictly needed, but it is shown here for completeness.&lt;br /&gt;
&lt;br /&gt;
  TestUnitRun.pl -d TestClass.sidb&lt;br /&gt;
&lt;br /&gt;
This command executes all Test Units found in the database in descending alpha-numeric sort order.  Any Test Class initialization arguments are given default values (typically zero or NULL).&lt;br /&gt;
&lt;br /&gt;
When you run this command, you should see console output like:&lt;br /&gt;
&lt;br /&gt;
  Attempting connection using [Sockets (S2)] transport ...&lt;br /&gt;
  Connected to device.&lt;br /&gt;
  Initializing STRIDE database objects...&lt;br /&gt;
  Done.&lt;br /&gt;
  Running Test Basic::Constructors...&lt;br /&gt;
  Running Test Basic::Exceptions...&lt;br /&gt;
  Running Test Basic::Fixtures...&lt;br /&gt;
  Running Test Basic::Simple...&lt;br /&gt;
  Running Test RuntimeServices::Dynamic...&lt;br /&gt;
  Running Test RuntimeServices::Override... &lt;br /&gt;
  Running Test RuntimeServices::Simple...&lt;br /&gt;
  Running Test RuntimeServices::VarComment...&lt;br /&gt;
  Running Test srTest::Dynamic...&lt;br /&gt;
  Running Test srTest::Simple...&lt;br /&gt;
  Disconnected from device.&lt;br /&gt;
  Test Results saved to C:\STRIDE\Samples\TestUnits\TestClass\TestClass.xml&lt;br /&gt;
  Test Report saved to C:\STRIDE\Samples\TestUnits\TestClass\TestClass.html&lt;br /&gt;
  ***************************************************************************&lt;br /&gt;
  Results Summary&lt;br /&gt;
  ***************************************************************************&lt;br /&gt;
    Passed:              26&lt;br /&gt;
    Failed:              12&lt;br /&gt;
    In Progress:          2&lt;br /&gt;
    Not Applicable:       2&lt;br /&gt;
    ...in 12 suites.&lt;br /&gt;
  ***************************************************************************&lt;br /&gt;
&lt;br /&gt;
====Execution based on an order file====&lt;br /&gt;
&lt;br /&gt;
TestUnitRun can optionally base its execution on simple text file input. A simple order file, &#039;&#039;RunSimple.txt&#039;&#039;, is provided which specifies a subset of all the Test Classes in this sample. This order file also shows how to create subsuites in the final output by using the special &#039;&#039;&#039;{suitepath}&#039;&#039;&#039; syntax, as described in [[Test_Runners#Usage|the usage section]].&lt;br /&gt;
&lt;br /&gt;
  TestUnitRun.pl -d TestClass.sidb -o RunSimple.txt&lt;br /&gt;
&lt;br /&gt;
...and will produce this output:&lt;br /&gt;
&lt;br /&gt;
  Attempting connection using [Sockets (S2)] transport ...&lt;br /&gt;
  Connected to device.&lt;br /&gt;
  Initializing STRIDE database objects...&lt;br /&gt;
  Done.&lt;br /&gt;
  Running Test Basic::Simple...&lt;br /&gt;
  Running Test RuntimeServices::Simple...&lt;br /&gt;
  Running Test srTest::Simple...&lt;br /&gt;
  Disconnected from device.&lt;br /&gt;
  Test Results saved to C:\STRIDE\Samples\TestUnits\TestClass\TestClass.xml&lt;br /&gt;
  Test Report saved to C:\STRIDE\Samples\TestUnits\TestClass\TestClass.html&lt;br /&gt;
  ***************************************************************************&lt;br /&gt;
  Results Summary&lt;br /&gt;
  ***************************************************************************&lt;br /&gt;
    Passed:              13&lt;br /&gt;
    Failed:               6&lt;br /&gt;
    In Progress:          2&lt;br /&gt;
    Not Applicable:       2&lt;br /&gt;
    ...in 6 suites.&lt;br /&gt;
  ***************************************************************************&lt;br /&gt;
&lt;br /&gt;
====Execution based on filesystem order====&lt;br /&gt;
&lt;br /&gt;
TestUnitRun can also try to infer execution order and suite hierarchy from filesystem organization.  If you have organized your test class source files (only the files that contain the scl_test_class pragma matter here) in a filesystem hierarchy that you want to mimic in your tests, you can specify a root of a directory tree that contains the relevant test class source.  TestUnitRun will walk the directory structure and determine order and hierarchy of tests based on the directory structure.  To see an example of this in action, you can execute this command with the sample:&lt;br /&gt;
&lt;br /&gt;
  TestUnitRun.pl -d TestClass.sidb -f Tests&lt;br /&gt;
&lt;br /&gt;
This will cause the runner to examine the Tests subdirectory structure and build a hierarchy of tests based on that directory tree.  Subdirectories will map to suites in the final report.  Here is the output for this example:&lt;br /&gt;
 &lt;br /&gt;
  Attempting connection using [Sockets (S2)] transport ...&lt;br /&gt;
  Connected to device.&lt;br /&gt;
  Initializing STRIDE database objects...&lt;br /&gt;
  Done.&lt;br /&gt;
  Running Test Basic::Simple...&lt;br /&gt;
  Running Test Basic::Fixtures...&lt;br /&gt;
  Running Test Basic::Exceptions...&lt;br /&gt;
  Running Test Basic::Constructors...&lt;br /&gt;
  Running Test RuntimeServices::Simple...&lt;br /&gt;
  Running Test RuntimeServices::Dynamic...&lt;br /&gt;
  Running Test RuntimeServices::Override...&lt;br /&gt;
  Running Test RuntimeServices::VarComment...&lt;br /&gt;
  Running Test srTest::Simple...&lt;br /&gt;
  Running Test srTest::Dynamic...&lt;br /&gt;
  Disconnected from device.&lt;br /&gt;
  Test Results saved to C:\STRIDE\Samples\TestUnits\TestClass\TestClass.xml&lt;br /&gt;
  Test Report saved to C:\STRIDE\Samples\TestUnits\TestClass\TestClass.html&lt;br /&gt;
  ***************************************************************************&lt;br /&gt;
  Results Summary&lt;br /&gt;
  ***************************************************************************&lt;br /&gt;
    Passed:              26&lt;br /&gt;
    Failed:              12&lt;br /&gt;
    In Progress:          2&lt;br /&gt;
    Not Applicable:       2&lt;br /&gt;
    ...in 15 suites.&lt;br /&gt;
  ***************************************************************************&lt;br /&gt;
&lt;br /&gt;
===Workspace-based Execution===&lt;br /&gt;
&lt;br /&gt;
TestClass.ssw, a workspace in the TestClass directory, demonstrates the use of script execution with Studio to manage test order and hierarchy.  This workspace was created using [[WorkspaceSetup.pl]].  The setup and teardown folders provide basic infrastructure scripts that start/stop the simulator application (TestClass.exe) and to manage traceviews used for [[Runtime_Reference#Logging_Services|srPrint]] message collection.  The scripts that drive the testing are in the workspace &#039;&#039;&#039;test&#039;&#039;&#039; folder. What follows is a brief description for each.&lt;br /&gt;
&lt;br /&gt;
====RunAll====&lt;br /&gt;
&lt;br /&gt;
This folder contains a script, All.js, that iterates through the entire collection of test units and executes them one at a time. The order of execution will be in ascending alpabetical order (by name) since the [[AutoScript#ascript.TestUnits|ArrangeBy]] collection method was called.&lt;br /&gt;
&lt;br /&gt;
====CallConstructor====&lt;br /&gt;
&lt;br /&gt;
This folder contains a simple script example that shows how to invoke test classes with constructor arguments.  In this example, the Basic::Constructors test class is executed twice with different initialization (constructor) arguments both times.&lt;br /&gt;
&lt;br /&gt;
====Run Individual====&lt;br /&gt;
&lt;br /&gt;
This folder shows how to use individual scripts to execute test classes. Each script has the following form:&lt;br /&gt;
&lt;br /&gt;
  ascript.TestUnits.Item(&#039;&#039;&#039;TEST_CLASS_NAME&#039;&#039;&#039;).Run();&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;TEST_Class_NAME&#039;&#039;&#039; is the name of the scl_test_class test to be run.  The order and hierarchy of each item may be changed via the Studio tree control by moving the item within the scripts and/or folders. The sample contains individual scripts for a few of the sample scl_test_class tests - you are free to move, add, or delete any items as you experiment with the workspace.&lt;br /&gt;
&lt;br /&gt;
[[Category: Samples]]&lt;/div&gt;</summary>
		<author><name>Robg</name></author>
	</entry>
	<entry>
		<id>https://www.stridewiki.com/index.php?title=Test_Macros_Sample&amp;diff=8851</id>
		<title>Test Macros Sample</title>
		<link rel="alternate" type="text/html" href="https://www.stridewiki.com/index.php?title=Test_Macros_Sample&amp;diff=8851"/>
		<updated>2009-01-12T16:41:47Z</updated>

		<summary type="html">&lt;p&gt;Robg: /* Sample Test Classes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
The Test Macros Samples are part of the [[Test_Unit_Samples|STRIDE Test Unit Samples]]. The following content relates to the sample files and workspaces installed in &#039;&#039;%STRIDE_DIR%\Samples\TestUnits\TestClassMacros&#039;&#039;.  This sample consists of a [http://en.wikipedia.org/wiki/Microsoft_Visual_Studio Visual Studio] workspace for building a [[Windows_Off-Target_Apps|Windows Off-Target App]], sample test class macros source code,  and a STRIDE workspace for doing more advanced test class execution.&lt;br /&gt;
&lt;br /&gt;
==Getting Started==&lt;br /&gt;
&lt;br /&gt;
To begin, open the Visual Studio Solution file in the sample directory.  This solution (and corresponding project) were created for Visual Studio 2005.  If you have a later version of Visual Studio installed, you should be able to open this solution and it will be automatically upgraded if necessary.  If you do not currently have any version of Visual Studio, it is recommended that you install the current free version of [http://en.wikipedia.org/wiki/Visual_Studio_Express Visual Studio Express].&lt;br /&gt;
&lt;br /&gt;
Once you have successfully opened the solution, rebuild it.  The build process has custom STRIDE build rules integrated and will produce a STRIDE database, intercept module source files, and a Windows Off-Target App that incorporates the test class source.&lt;br /&gt;
&lt;br /&gt;
Once the build is complete, perform the following steps to run the test classes in the workspace:&lt;br /&gt;
&lt;br /&gt;
# launch the Windows Off-Target App, TestClass.exe.  This will run in a standard console window.&lt;br /&gt;
# open a command prompt window and change to this sample&#039;s directory.&lt;br /&gt;
# at the command prompt, run the command &amp;lt;tt&amp;gt;&#039;&#039;&#039;TestUnitRun.pl -v&#039;&#039;&#039;&amp;lt;/tt&amp;gt;.  This will execute all of the test units in the workspace and open a browser to display the results.&lt;br /&gt;
# quit the TestClass.exe application by typing &#039;q&#039; in its console window.&lt;br /&gt;
&lt;br /&gt;
==Sample Test Class Macros==&lt;br /&gt;
&lt;br /&gt;
Now that you have built the Windows Off-Target App and executed the test classes it contains, you can take time to peruse the test class source and the corresponding results that each produces.  This section provides a brief description for each.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;NOTE:&#039;&#039; each of the example test classes is grouped in the &#039;&#039;Basic&#039;&#039; namespace.  This is for organizational purposes only -- it is &#039;&#039;&#039;not&#039;&#039;&#039; a general requirement that test classes be placed into namespaces.   &lt;br /&gt;
&lt;br /&gt;
===Basic Examples===&lt;br /&gt;
&lt;br /&gt;
These examples cover simple uses of each of the macro families. The names of the test methods contain either &#039;&#039;Pass&#039;&#039; or &#039;&#039;Fail&#039;&#039;. All methods containing &#039;&#039;Fail&#039;&#039; illustrates uses of test macros that result in failures. Methods containing &#039;&#039;Pass&#039;&#039; illustrate passing uses. &lt;br /&gt;
&lt;br /&gt;
====01_01_Basic_ExpectBool====&lt;br /&gt;
&lt;br /&gt;
This example uses of the &#039;&#039;srEXPECT_TRUE()&#039;&#039; and &#039;&#039;srEXPECT_FALSE()&#039;&#039; test class macros. &lt;br /&gt;
&lt;br /&gt;
====01_02_Basic_Fixtures====&lt;br /&gt;
&lt;br /&gt;
This example demonstrates how to use [[Test_Units#Pragmas_for_Test_Units|setup and teardown]] fixtures.  The setup and teardown methods are called immediately before and after the execution of each test method, respectively.&lt;br /&gt;
&lt;br /&gt;
====01_03_Basic_Exceptions====&lt;br /&gt;
&lt;br /&gt;
This example demonstrates how exceptions thrown from a test method are caught by the intercept module and noted in the results.  Any exception that is caught by the harness is assumed to indicate failure.&lt;br /&gt;
&lt;br /&gt;
====01_04_Basic_Constructors====&lt;br /&gt;
&lt;br /&gt;
This example demonstrates how test classes may have non-trivial constructors.  These arguments can be passed using the [[AutoScript#ascript.TestUnits|ascript]] scripting model for test units.&lt;br /&gt;
&lt;br /&gt;
===Runtime Services Examples===&lt;br /&gt;
&lt;br /&gt;
These examples cover basic usage of the Runtime Test Services API (as declared in srtest.h).&lt;br /&gt;
&lt;br /&gt;
====02_01_RuntimeServices_Simple====&lt;br /&gt;
&lt;br /&gt;
This example demonstrates how to use [[Test_Units#srTestCaseSetStatus|srTestCaseSetStatus]] to set status, [[Test_Units#srTestCaseAddComment|srTestCaseAddComment]] to add a comment, and srTEST_ADD_COMMENT_WITH_LOCATION to add a comment that automatically includes line and file information. &lt;br /&gt;
&lt;br /&gt;
====02_02_RuntimeServices_Dynamic====&lt;br /&gt;
&lt;br /&gt;
This example demonstrates how to use [[Test_Units#srTestSuiteAddSuite|srTestSuiteAddSuite]], [[Test_Units#srTestSuiteAddTest|srTestSuiteAddTest]], [[Test_Units#srTestSuiteAddAnnotation|srTestSuiteAddAnnotation]], and [[Test_Units#srTestAnnotationAddComment|srTestAnnotationAddComment]] for dynamic suite, test, and annotation creation in the context of a single test method.&lt;br /&gt;
&lt;br /&gt;
====02_03_RuntimeServices_Override====&lt;br /&gt;
&lt;br /&gt;
This example demonstrates how to use [[Test_Units#srTestCaseSetStatus|srTestCaseSetStatus]] to override the status that would otherwise be inferred from the return value.&lt;br /&gt;
&lt;br /&gt;
====02_04_RuntimeServices_VarComment====&lt;br /&gt;
&lt;br /&gt;
This example demonstrates the use of [http://en.wikipedia.org/wiki/Printf printf] style format strings with [[Test_Units#srTestCaseAddComment|srTestCaseAddComment]].&lt;br /&gt;
&lt;br /&gt;
===srTest Examples===&lt;br /&gt;
&lt;br /&gt;
These examples show to how to use the [[Test_Units#C.2B.2B_Test_Classes|stride::srTest]] base class for your test classes.  When you publicly inherit from srTest, you get access to default testCase and testSuite members and their associated methods.&lt;br /&gt;
&lt;br /&gt;
====03_01_srTest_Simple====&lt;br /&gt;
&lt;br /&gt;
This example demonstrates the use of [[Test_Units#SetStatus|testCase.setStatus]] to set the status for test cases.&lt;br /&gt;
&lt;br /&gt;
====03_02_srTest_Dynamic====&lt;br /&gt;
&lt;br /&gt;
This example demonstrates how to use [[Test_Units#AddSuite|testSuite.AddSuite]], [[Test_Units#AddTest|testSuite.AddTest]], [[Test_Units#AddAnnotation|testSuite.AddAnnotation]], and [[Test_Units#AddAnnotation.AddComment|testSuite.AddAnnotation.AddComment]] for dynamic suite, test case, and annotation creation within the context of one test method.&lt;br /&gt;
&lt;br /&gt;
==Test Class Execution==&lt;br /&gt;
&lt;br /&gt;
This sample demonstrates two different techniques for executing test classes.&lt;br /&gt;
&lt;br /&gt;
===Command Line Execution===&lt;br /&gt;
&lt;br /&gt;
Command line execution for test classes is done using the [[Test_Runners#TestUnitRun.pl|TestUnitRun utility]].  Here are several examples of specific syntax to execute test classes.  All of these commands can be invoked from a standard [http://en.wikipedia.org/wiki/Command_Prompt_(Windows) command shell] (or other shell of your choosing) and the arguments shown assume that the commands are executed with the sample&#039;s directory as the starting directory. You must have your TestClass.exe application running in order for the runner to be able to initiate a connection to the target simulator. In addition, you should verify that your %STRIDE_DIR%\bin\transport.cfg file is using the TCP transport to connect to port 8000 (these are the default settings when the product is installed).&lt;br /&gt;
&lt;br /&gt;
====Simple execution of all test units====&lt;br /&gt;
&lt;br /&gt;
The following command executes all of the test units found in the STRIDE database you have previously generated.  For the purpose of this sample, since there is only one database, the -d parameter is not strictly needed, but it is shown here for completeness.&lt;br /&gt;
&lt;br /&gt;
  TestUnitRun.pl -d TestClass.sidb&lt;br /&gt;
&lt;br /&gt;
This command executes all Test Units found in the database in descending alpha-numeric sort order.  Any Test Class initialization arguments are given default values (typically zero or NULL).&lt;br /&gt;
&lt;br /&gt;
When you run this command, you should see console output like:&lt;br /&gt;
&lt;br /&gt;
  Attempting connection using [Sockets (S2)] transport ...&lt;br /&gt;
  Connected to device.&lt;br /&gt;
  Initializing STRIDE database objects...&lt;br /&gt;
  Done.&lt;br /&gt;
  Running Test Basic::Constructors...&lt;br /&gt;
  Running Test Basic::Exceptions...&lt;br /&gt;
  Running Test Basic::Fixtures...&lt;br /&gt;
  Running Test Basic::Simple...&lt;br /&gt;
  Running Test RuntimeServices::Dynamic...&lt;br /&gt;
  Running Test RuntimeServices::Override... &lt;br /&gt;
  Running Test RuntimeServices::Simple...&lt;br /&gt;
  Running Test RuntimeServices::VarComment...&lt;br /&gt;
  Running Test srTest::Dynamic...&lt;br /&gt;
  Running Test srTest::Simple...&lt;br /&gt;
  Disconnected from device.&lt;br /&gt;
  Test Results saved to C:\STRIDE\Samples\TestUnits\TestClass\TestClass.xml&lt;br /&gt;
  Test Report saved to C:\STRIDE\Samples\TestUnits\TestClass\TestClass.html&lt;br /&gt;
  ***************************************************************************&lt;br /&gt;
  Results Summary&lt;br /&gt;
  ***************************************************************************&lt;br /&gt;
    Passed:              26&lt;br /&gt;
    Failed:              12&lt;br /&gt;
    In Progress:          2&lt;br /&gt;
    Not Applicable:       2&lt;br /&gt;
    ...in 12 suites.&lt;br /&gt;
  ***************************************************************************&lt;br /&gt;
&lt;br /&gt;
====Execution based on an order file====&lt;br /&gt;
&lt;br /&gt;
TestUnitRun can optionally base its execution on simple text file input. A simple order file, &#039;&#039;RunSimple.txt&#039;&#039;, is provided which specifies a subset of all the Test Classes in this sample. This order file also shows how to create subsuites in the final output by using the special &#039;&#039;&#039;{suitepath}&#039;&#039;&#039; syntax, as described in [[Test_Runners#Usage|the usage section]].&lt;br /&gt;
&lt;br /&gt;
  TestUnitRun.pl -d TestClass.sidb -o RunSimple.txt&lt;br /&gt;
&lt;br /&gt;
...and will produce this output:&lt;br /&gt;
&lt;br /&gt;
  Attempting connection using [Sockets (S2)] transport ...&lt;br /&gt;
  Connected to device.&lt;br /&gt;
  Initializing STRIDE database objects...&lt;br /&gt;
  Done.&lt;br /&gt;
  Running Test Basic::Simple...&lt;br /&gt;
  Running Test RuntimeServices::Simple...&lt;br /&gt;
  Running Test srTest::Simple...&lt;br /&gt;
  Disconnected from device.&lt;br /&gt;
  Test Results saved to C:\STRIDE\Samples\TestUnits\TestClass\TestClass.xml&lt;br /&gt;
  Test Report saved to C:\STRIDE\Samples\TestUnits\TestClass\TestClass.html&lt;br /&gt;
  ***************************************************************************&lt;br /&gt;
  Results Summary&lt;br /&gt;
  ***************************************************************************&lt;br /&gt;
    Passed:              13&lt;br /&gt;
    Failed:               6&lt;br /&gt;
    In Progress:          2&lt;br /&gt;
    Not Applicable:       2&lt;br /&gt;
    ...in 6 suites.&lt;br /&gt;
  ***************************************************************************&lt;br /&gt;
&lt;br /&gt;
====Execution based on filesystem order====&lt;br /&gt;
&lt;br /&gt;
TestUnitRun can also try to infer execution order and suite hierarchy from filesystem organization.  If you have organized your test class source files (only the files that contain the scl_test_class pragma matter here) in a filesystem hierarchy that you want to mimic in your tests, you can specify a root of a directory tree that contains the relevant test class source.  TestUnitRun will walk the directory structure and determine order and hierarchy of tests based on the directory structure.  To see an example of this in action, you can execute this command with the sample:&lt;br /&gt;
&lt;br /&gt;
  TestUnitRun.pl -d TestClass.sidb -f Tests&lt;br /&gt;
&lt;br /&gt;
This will cause the runner to examine the Tests subdirectory structure and build a hierarchy of tests based on that directory tree.  Subdirectories will map to suites in the final report.  Here is the output for this example:&lt;br /&gt;
 &lt;br /&gt;
  Attempting connection using [Sockets (S2)] transport ...&lt;br /&gt;
  Connected to device.&lt;br /&gt;
  Initializing STRIDE database objects...&lt;br /&gt;
  Done.&lt;br /&gt;
  Running Test Basic::Simple...&lt;br /&gt;
  Running Test Basic::Fixtures...&lt;br /&gt;
  Running Test Basic::Exceptions...&lt;br /&gt;
  Running Test Basic::Constructors...&lt;br /&gt;
  Running Test RuntimeServices::Simple...&lt;br /&gt;
  Running Test RuntimeServices::Dynamic...&lt;br /&gt;
  Running Test RuntimeServices::Override...&lt;br /&gt;
  Running Test RuntimeServices::VarComment...&lt;br /&gt;
  Running Test srTest::Simple...&lt;br /&gt;
  Running Test srTest::Dynamic...&lt;br /&gt;
  Disconnected from device.&lt;br /&gt;
  Test Results saved to C:\STRIDE\Samples\TestUnits\TestClass\TestClass.xml&lt;br /&gt;
  Test Report saved to C:\STRIDE\Samples\TestUnits\TestClass\TestClass.html&lt;br /&gt;
  ***************************************************************************&lt;br /&gt;
  Results Summary&lt;br /&gt;
  ***************************************************************************&lt;br /&gt;
    Passed:              26&lt;br /&gt;
    Failed:              12&lt;br /&gt;
    In Progress:          2&lt;br /&gt;
    Not Applicable:       2&lt;br /&gt;
    ...in 15 suites.&lt;br /&gt;
  ***************************************************************************&lt;br /&gt;
&lt;br /&gt;
===Workspace-based Execution===&lt;br /&gt;
&lt;br /&gt;
TestClass.ssw, a workspace in the TestClass directory, demonstrates the use of script execution with Studio to manage test order and hierarchy.  This workspace was created using [[WorkspaceSetup.pl]].  The setup and teardown folders provide basic infrastructure scripts that start/stop the simulator application (TestClass.exe) and to manage traceviews used for [[Runtime_Reference#Logging_Services|srPrint]] message collection.  The scripts that drive the testing are in the workspace &#039;&#039;&#039;test&#039;&#039;&#039; folder. What follows is a brief description for each.&lt;br /&gt;
&lt;br /&gt;
====RunAll====&lt;br /&gt;
&lt;br /&gt;
This folder contains a script, All.js, that iterates through the entire collection of test units and executes them one at a time. The order of execution will be in ascending alpabetical order (by name) since the [[AutoScript#ascript.TestUnits|ArrangeBy]] collection method was called.&lt;br /&gt;
&lt;br /&gt;
====CallConstructor====&lt;br /&gt;
&lt;br /&gt;
This folder contains a simple script example that shows how to invoke test classes with constructor arguments.  In this example, the Basic::Constructors test class is executed twice with different initialization (constructor) arguments both times.&lt;br /&gt;
&lt;br /&gt;
====Run Individual====&lt;br /&gt;
&lt;br /&gt;
This folder shows how to use individual scripts to execute test classes. Each script has the following form:&lt;br /&gt;
&lt;br /&gt;
  ascript.TestUnits.Item(&#039;&#039;&#039;TEST_CLASS_NAME&#039;&#039;&#039;).Run();&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;TEST_Class_NAME&#039;&#039;&#039; is the name of the scl_test_class test to be run.  The order and hierarchy of each item may be changed via the Studio tree control by moving the item within the scripts and/or folders. The sample contains individual scripts for a few of the sample scl_test_class tests - you are free to move, add, or delete any items as you experiment with the workspace.&lt;br /&gt;
&lt;br /&gt;
[[Category: Samples]]&lt;/div&gt;</summary>
		<author><name>Robg</name></author>
	</entry>
	<entry>
		<id>https://www.stridewiki.com/index.php?title=Test_Macros_Sample&amp;diff=8850</id>
		<title>Test Macros Sample</title>
		<link rel="alternate" type="text/html" href="https://www.stridewiki.com/index.php?title=Test_Macros_Sample&amp;diff=8850"/>
		<updated>2009-01-12T16:36:29Z</updated>

		<summary type="html">&lt;p&gt;Robg: /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
The Test Macros Samples are part of the [[Test_Unit_Samples|STRIDE Test Unit Samples]]. The following content relates to the sample files and workspaces installed in &#039;&#039;%STRIDE_DIR%\Samples\TestUnits\TestClassMacros&#039;&#039;.  This sample consists of a [http://en.wikipedia.org/wiki/Microsoft_Visual_Studio Visual Studio] workspace for building a [[Windows_Off-Target_Apps|Windows Off-Target App]], sample test class macros source code,  and a STRIDE workspace for doing more advanced test class execution.&lt;br /&gt;
&lt;br /&gt;
==Getting Started==&lt;br /&gt;
&lt;br /&gt;
To begin, open the Visual Studio Solution file in the sample directory.  This solution (and corresponding project) were created for Visual Studio 2005.  If you have a later version of Visual Studio installed, you should be able to open this solution and it will be automatically upgraded if necessary.  If you do not currently have any version of Visual Studio, it is recommended that you install the current free version of [http://en.wikipedia.org/wiki/Visual_Studio_Express Visual Studio Express].&lt;br /&gt;
&lt;br /&gt;
Once you have successfully opened the solution, rebuild it.  The build process has custom STRIDE build rules integrated and will produce a STRIDE database, intercept module source files, and a Windows Off-Target App that incorporates the test class source.&lt;br /&gt;
&lt;br /&gt;
Once the build is complete, perform the following steps to run the test classes in the workspace:&lt;br /&gt;
&lt;br /&gt;
# launch the Windows Off-Target App, TestClass.exe.  This will run in a standard console window.&lt;br /&gt;
# open a command prompt window and change to this sample&#039;s directory.&lt;br /&gt;
# at the command prompt, run the command &amp;lt;tt&amp;gt;&#039;&#039;&#039;TestUnitRun.pl -v&#039;&#039;&#039;&amp;lt;/tt&amp;gt;.  This will execute all of the test units in the workspace and open a browser to display the results.&lt;br /&gt;
# quit the TestClass.exe application by typing &#039;q&#039; in its console window.&lt;br /&gt;
&lt;br /&gt;
==Sample Test Classes==&lt;br /&gt;
&lt;br /&gt;
Now that you have built the Windows Off-Target App and executed the test classes it contains, you can take time to peruse the test class source and the corresponding results that each produces.  This section provides a brief description for each.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;NOTE:&#039;&#039; each of the example test classes is grouped in namespace corresponding to its top-level category (e.g. &#039;&#039;Basic&#039;&#039; or &#039;&#039;Runtime Services&#039;&#039;).  This is something shown for organizational purposes only -- it is &#039;&#039;&#039;not&#039;&#039;&#039; a general requirement that test classes be placed into namespaces.   &lt;br /&gt;
&lt;br /&gt;
===Basic Examples===&lt;br /&gt;
&lt;br /&gt;
These examples cover the simplest, easiest way to code a STRIDE test class. These examples use simple [http://en.wikipedia.org/wiki/Plain_Old_Data_Structures POD] return types to indicate status and do not annotate the tests with any rich information (such as comments).&lt;br /&gt;
&lt;br /&gt;
====01_01_Basic_Simple====&lt;br /&gt;
&lt;br /&gt;
This example demonstrates passing and failing tests using the four primary POD types that infer status from (int, bool, short, and char).&lt;br /&gt;
&lt;br /&gt;
====01_02_Basic_Fixtures====&lt;br /&gt;
&lt;br /&gt;
This example demonstrates how to use [[Test_Units#Pragmas_for_Test_Units|setup and teardown]] fixtures.  The setup and teardown methods are called immediately before and after the execution of each test method, respectively.&lt;br /&gt;
&lt;br /&gt;
====01_03_Basic_Exceptions====&lt;br /&gt;
&lt;br /&gt;
This example demonstrates how exceptions thrown from a test method are caught by the intercept module and noted in the results.  Any exception that is caught by the harness is assumed to indicate failure.&lt;br /&gt;
&lt;br /&gt;
====01_04_Basic_Constructors====&lt;br /&gt;
&lt;br /&gt;
This example demonstrates how test classes may have non-trivial constructors.  These arguments can be passed using the [[AutoScript#ascript.TestUnits|ascript]] scripting model for test units.&lt;br /&gt;
&lt;br /&gt;
===Runtime Services Examples===&lt;br /&gt;
&lt;br /&gt;
These examples cover basic usage of the Runtime Test Services API (as declared in srtest.h).&lt;br /&gt;
&lt;br /&gt;
====02_01_RuntimeServices_Simple====&lt;br /&gt;
&lt;br /&gt;
This example demonstrates how to use [[Test_Units#srTestCaseSetStatus|srTestCaseSetStatus]] to set status, [[Test_Units#srTestCaseAddComment|srTestCaseAddComment]] to add a comment, and srTEST_ADD_COMMENT_WITH_LOCATION to add a comment that automatically includes line and file information. &lt;br /&gt;
&lt;br /&gt;
====02_02_RuntimeServices_Dynamic====&lt;br /&gt;
&lt;br /&gt;
This example demonstrates how to use [[Test_Units#srTestSuiteAddSuite|srTestSuiteAddSuite]], [[Test_Units#srTestSuiteAddTest|srTestSuiteAddTest]], [[Test_Units#srTestSuiteAddAnnotation|srTestSuiteAddAnnotation]], and [[Test_Units#srTestAnnotationAddComment|srTestAnnotationAddComment]] for dynamic suite, test, and annotation creation in the context of a single test method.&lt;br /&gt;
&lt;br /&gt;
====02_03_RuntimeServices_Override====&lt;br /&gt;
&lt;br /&gt;
This example demonstrates how to use [[Test_Units#srTestCaseSetStatus|srTestCaseSetStatus]] to override the status that would otherwise be inferred from the return value.&lt;br /&gt;
&lt;br /&gt;
====02_04_RuntimeServices_VarComment====&lt;br /&gt;
&lt;br /&gt;
This example demonstrates the use of [http://en.wikipedia.org/wiki/Printf printf] style format strings with [[Test_Units#srTestCaseAddComment|srTestCaseAddComment]].&lt;br /&gt;
&lt;br /&gt;
===srTest Examples===&lt;br /&gt;
&lt;br /&gt;
These examples show to how to use the [[Test_Units#C.2B.2B_Test_Classes|stride::srTest]] base class for your test classes.  When you publicly inherit from srTest, you get access to default testCase and testSuite members and their associated methods.&lt;br /&gt;
&lt;br /&gt;
====03_01_srTest_Simple====&lt;br /&gt;
&lt;br /&gt;
This example demonstrates the use of [[Test_Units#SetStatus|testCase.setStatus]] to set the status for test cases.&lt;br /&gt;
&lt;br /&gt;
====03_02_srTest_Dynamic====&lt;br /&gt;
&lt;br /&gt;
This example demonstrates how to use [[Test_Units#AddSuite|testSuite.AddSuite]], [[Test_Units#AddTest|testSuite.AddTest]], [[Test_Units#AddAnnotation|testSuite.AddAnnotation]], and [[Test_Units#AddAnnotation.AddComment|testSuite.AddAnnotation.AddComment]] for dynamic suite, test case, and annotation creation within the context of one test method.&lt;br /&gt;
&lt;br /&gt;
==Test Class Execution==&lt;br /&gt;
&lt;br /&gt;
This sample demonstrates two different techniques for executing test classes.&lt;br /&gt;
&lt;br /&gt;
===Command Line Execution===&lt;br /&gt;
&lt;br /&gt;
Command line execution for test classes is done using the [[Test_Runners#TestUnitRun.pl|TestUnitRun utility]].  Here are several examples of specific syntax to execute test classes.  All of these commands can be invoked from a standard [http://en.wikipedia.org/wiki/Command_Prompt_(Windows) command shell] (or other shell of your choosing) and the arguments shown assume that the commands are executed with the sample&#039;s directory as the starting directory. You must have your TestClass.exe application running in order for the runner to be able to initiate a connection to the target simulator. In addition, you should verify that your %STRIDE_DIR%\bin\transport.cfg file is using the TCP transport to connect to port 8000 (these are the default settings when the product is installed).&lt;br /&gt;
&lt;br /&gt;
====Simple execution of all test units====&lt;br /&gt;
&lt;br /&gt;
The following command executes all of the test units found in the STRIDE database you have previously generated.  For the purpose of this sample, since there is only one database, the -d parameter is not strictly needed, but it is shown here for completeness.&lt;br /&gt;
&lt;br /&gt;
  TestUnitRun.pl -d TestClass.sidb&lt;br /&gt;
&lt;br /&gt;
This command executes all Test Units found in the database in descending alpha-numeric sort order.  Any Test Class initialization arguments are given default values (typically zero or NULL).&lt;br /&gt;
&lt;br /&gt;
When you run this command, you should see console output like:&lt;br /&gt;
&lt;br /&gt;
  Attempting connection using [Sockets (S2)] transport ...&lt;br /&gt;
  Connected to device.&lt;br /&gt;
  Initializing STRIDE database objects...&lt;br /&gt;
  Done.&lt;br /&gt;
  Running Test Basic::Constructors...&lt;br /&gt;
  Running Test Basic::Exceptions...&lt;br /&gt;
  Running Test Basic::Fixtures...&lt;br /&gt;
  Running Test Basic::Simple...&lt;br /&gt;
  Running Test RuntimeServices::Dynamic...&lt;br /&gt;
  Running Test RuntimeServices::Override... &lt;br /&gt;
  Running Test RuntimeServices::Simple...&lt;br /&gt;
  Running Test RuntimeServices::VarComment...&lt;br /&gt;
  Running Test srTest::Dynamic...&lt;br /&gt;
  Running Test srTest::Simple...&lt;br /&gt;
  Disconnected from device.&lt;br /&gt;
  Test Results saved to C:\STRIDE\Samples\TestUnits\TestClass\TestClass.xml&lt;br /&gt;
  Test Report saved to C:\STRIDE\Samples\TestUnits\TestClass\TestClass.html&lt;br /&gt;
  ***************************************************************************&lt;br /&gt;
  Results Summary&lt;br /&gt;
  ***************************************************************************&lt;br /&gt;
    Passed:              26&lt;br /&gt;
    Failed:              12&lt;br /&gt;
    In Progress:          2&lt;br /&gt;
    Not Applicable:       2&lt;br /&gt;
    ...in 12 suites.&lt;br /&gt;
  ***************************************************************************&lt;br /&gt;
&lt;br /&gt;
====Execution based on an order file====&lt;br /&gt;
&lt;br /&gt;
TestUnitRun can optionally base its execution on simple text file input. A simple order file, &#039;&#039;RunSimple.txt&#039;&#039;, is provided which specifies a subset of all the Test Classes in this sample. This order file also shows how to create subsuites in the final output by using the special &#039;&#039;&#039;{suitepath}&#039;&#039;&#039; syntax, as described in [[Test_Runners#Usage|the usage section]].&lt;br /&gt;
&lt;br /&gt;
  TestUnitRun.pl -d TestClass.sidb -o RunSimple.txt&lt;br /&gt;
&lt;br /&gt;
...and will produce this output:&lt;br /&gt;
&lt;br /&gt;
  Attempting connection using [Sockets (S2)] transport ...&lt;br /&gt;
  Connected to device.&lt;br /&gt;
  Initializing STRIDE database objects...&lt;br /&gt;
  Done.&lt;br /&gt;
  Running Test Basic::Simple...&lt;br /&gt;
  Running Test RuntimeServices::Simple...&lt;br /&gt;
  Running Test srTest::Simple...&lt;br /&gt;
  Disconnected from device.&lt;br /&gt;
  Test Results saved to C:\STRIDE\Samples\TestUnits\TestClass\TestClass.xml&lt;br /&gt;
  Test Report saved to C:\STRIDE\Samples\TestUnits\TestClass\TestClass.html&lt;br /&gt;
  ***************************************************************************&lt;br /&gt;
  Results Summary&lt;br /&gt;
  ***************************************************************************&lt;br /&gt;
    Passed:              13&lt;br /&gt;
    Failed:               6&lt;br /&gt;
    In Progress:          2&lt;br /&gt;
    Not Applicable:       2&lt;br /&gt;
    ...in 6 suites.&lt;br /&gt;
  ***************************************************************************&lt;br /&gt;
&lt;br /&gt;
====Execution based on filesystem order====&lt;br /&gt;
&lt;br /&gt;
TestUnitRun can also try to infer execution order and suite hierarchy from filesystem organization.  If you have organized your test class source files (only the files that contain the scl_test_class pragma matter here) in a filesystem hierarchy that you want to mimic in your tests, you can specify a root of a directory tree that contains the relevant test class source.  TestUnitRun will walk the directory structure and determine order and hierarchy of tests based on the directory structure.  To see an example of this in action, you can execute this command with the sample:&lt;br /&gt;
&lt;br /&gt;
  TestUnitRun.pl -d TestClass.sidb -f Tests&lt;br /&gt;
&lt;br /&gt;
This will cause the runner to examine the Tests subdirectory structure and build a hierarchy of tests based on that directory tree.  Subdirectories will map to suites in the final report.  Here is the output for this example:&lt;br /&gt;
 &lt;br /&gt;
  Attempting connection using [Sockets (S2)] transport ...&lt;br /&gt;
  Connected to device.&lt;br /&gt;
  Initializing STRIDE database objects...&lt;br /&gt;
  Done.&lt;br /&gt;
  Running Test Basic::Simple...&lt;br /&gt;
  Running Test Basic::Fixtures...&lt;br /&gt;
  Running Test Basic::Exceptions...&lt;br /&gt;
  Running Test Basic::Constructors...&lt;br /&gt;
  Running Test RuntimeServices::Simple...&lt;br /&gt;
  Running Test RuntimeServices::Dynamic...&lt;br /&gt;
  Running Test RuntimeServices::Override...&lt;br /&gt;
  Running Test RuntimeServices::VarComment...&lt;br /&gt;
  Running Test srTest::Simple...&lt;br /&gt;
  Running Test srTest::Dynamic...&lt;br /&gt;
  Disconnected from device.&lt;br /&gt;
  Test Results saved to C:\STRIDE\Samples\TestUnits\TestClass\TestClass.xml&lt;br /&gt;
  Test Report saved to C:\STRIDE\Samples\TestUnits\TestClass\TestClass.html&lt;br /&gt;
  ***************************************************************************&lt;br /&gt;
  Results Summary&lt;br /&gt;
  ***************************************************************************&lt;br /&gt;
    Passed:              26&lt;br /&gt;
    Failed:              12&lt;br /&gt;
    In Progress:          2&lt;br /&gt;
    Not Applicable:       2&lt;br /&gt;
    ...in 15 suites.&lt;br /&gt;
  ***************************************************************************&lt;br /&gt;
&lt;br /&gt;
===Workspace-based Execution===&lt;br /&gt;
&lt;br /&gt;
TestClass.ssw, a workspace in the TestClass directory, demonstrates the use of script execution with Studio to manage test order and hierarchy.  This workspace was created using [[WorkspaceSetup.pl]].  The setup and teardown folders provide basic infrastructure scripts that start/stop the simulator application (TestClass.exe) and to manage traceviews used for [[Runtime_Reference#Logging_Services|srPrint]] message collection.  The scripts that drive the testing are in the workspace &#039;&#039;&#039;test&#039;&#039;&#039; folder. What follows is a brief description for each.&lt;br /&gt;
&lt;br /&gt;
====RunAll====&lt;br /&gt;
&lt;br /&gt;
This folder contains a script, All.js, that iterates through the entire collection of test units and executes them one at a time. The order of execution will be in ascending alpabetical order (by name) since the [[AutoScript#ascript.TestUnits|ArrangeBy]] collection method was called.&lt;br /&gt;
&lt;br /&gt;
====CallConstructor====&lt;br /&gt;
&lt;br /&gt;
This folder contains a simple script example that shows how to invoke test classes with constructor arguments.  In this example, the Basic::Constructors test class is executed twice with different initialization (constructor) arguments both times.&lt;br /&gt;
&lt;br /&gt;
====Run Individual====&lt;br /&gt;
&lt;br /&gt;
This folder shows how to use individual scripts to execute test classes. Each script has the following form:&lt;br /&gt;
&lt;br /&gt;
  ascript.TestUnits.Item(&#039;&#039;&#039;TEST_CLASS_NAME&#039;&#039;&#039;).Run();&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;TEST_Class_NAME&#039;&#039;&#039; is the name of the scl_test_class test to be run.  The order and hierarchy of each item may be changed via the Studio tree control by moving the item within the scripts and/or folders. The sample contains individual scripts for a few of the sample scl_test_class tests - you are free to move, add, or delete any items as you experiment with the workspace.&lt;br /&gt;
&lt;br /&gt;
[[Category: Samples]]&lt;/div&gt;</summary>
		<author><name>Robg</name></author>
	</entry>
	<entry>
		<id>https://www.stridewiki.com/index.php?title=Test_Macros_Sample&amp;diff=8849</id>
		<title>Test Macros Sample</title>
		<link rel="alternate" type="text/html" href="https://www.stridewiki.com/index.php?title=Test_Macros_Sample&amp;diff=8849"/>
		<updated>2009-01-12T16:35:55Z</updated>

		<summary type="html">&lt;p&gt;Robg: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
The Test Macros Samples are part of the [[Test_Unit_Samples|STRIDE Test Unit Samples]]. The following content relates to the sample files and workspaces installed in &#039;&#039;%STRIDE_DIR%\Samples\TestUnits\TestClassMacros&#039;&#039;.  This sample consists of a [http://en.wikipedia.org/wiki/Microsoft_Visual_Studio Visual Studio] workspace for building a [[Windows_Off-Target_Apps|Windows Off-Target App]], sample [[Test Units|test class]] source code,  and a STRIDE workspace for doing more advanced test class execution.&lt;br /&gt;
&lt;br /&gt;
==Getting Started==&lt;br /&gt;
&lt;br /&gt;
To begin, open the Visual Studio Solution file in the sample directory.  This solution (and corresponding project) were created for Visual Studio 2005.  If you have a later version of Visual Studio installed, you should be able to open this solution and it will be automatically upgraded if necessary.  If you do not currently have any version of Visual Studio, it is recommended that you install the current free version of [http://en.wikipedia.org/wiki/Visual_Studio_Express Visual Studio Express].&lt;br /&gt;
&lt;br /&gt;
Once you have successfully opened the solution, rebuild it.  The build process has custom STRIDE build rules integrated and will produce a STRIDE database, intercept module source files, and a Windows Off-Target App that incorporates the test class source.&lt;br /&gt;
&lt;br /&gt;
Once the build is complete, perform the following steps to run the test classes in the workspace:&lt;br /&gt;
&lt;br /&gt;
# launch the Windows Off-Target App, TestClass.exe.  This will run in a standard console window.&lt;br /&gt;
# open a command prompt window and change to this sample&#039;s directory.&lt;br /&gt;
# at the command prompt, run the command &amp;lt;tt&amp;gt;&#039;&#039;&#039;TestUnitRun.pl -v&#039;&#039;&#039;&amp;lt;/tt&amp;gt;.  This will execute all of the test units in the workspace and open a browser to display the results.&lt;br /&gt;
# quit the TestClass.exe application by typing &#039;q&#039; in its console window.&lt;br /&gt;
&lt;br /&gt;
==Sample Test Classes==&lt;br /&gt;
&lt;br /&gt;
Now that you have built the Windows Off-Target App and executed the test classes it contains, you can take time to peruse the test class source and the corresponding results that each produces.  This section provides a brief description for each.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;NOTE:&#039;&#039; each of the example test classes is grouped in namespace corresponding to its top-level category (e.g. &#039;&#039;Basic&#039;&#039; or &#039;&#039;Runtime Services&#039;&#039;).  This is something shown for organizational purposes only -- it is &#039;&#039;&#039;not&#039;&#039;&#039; a general requirement that test classes be placed into namespaces.   &lt;br /&gt;
&lt;br /&gt;
===Basic Examples===&lt;br /&gt;
&lt;br /&gt;
These examples cover the simplest, easiest way to code a STRIDE test class. These examples use simple [http://en.wikipedia.org/wiki/Plain_Old_Data_Structures POD] return types to indicate status and do not annotate the tests with any rich information (such as comments).&lt;br /&gt;
&lt;br /&gt;
====01_01_Basic_Simple====&lt;br /&gt;
&lt;br /&gt;
This example demonstrates passing and failing tests using the four primary POD types that infer status from (int, bool, short, and char).&lt;br /&gt;
&lt;br /&gt;
====01_02_Basic_Fixtures====&lt;br /&gt;
&lt;br /&gt;
This example demonstrates how to use [[Test_Units#Pragmas_for_Test_Units|setup and teardown]] fixtures.  The setup and teardown methods are called immediately before and after the execution of each test method, respectively.&lt;br /&gt;
&lt;br /&gt;
====01_03_Basic_Exceptions====&lt;br /&gt;
&lt;br /&gt;
This example demonstrates how exceptions thrown from a test method are caught by the intercept module and noted in the results.  Any exception that is caught by the harness is assumed to indicate failure.&lt;br /&gt;
&lt;br /&gt;
====01_04_Basic_Constructors====&lt;br /&gt;
&lt;br /&gt;
This example demonstrates how test classes may have non-trivial constructors.  These arguments can be passed using the [[AutoScript#ascript.TestUnits|ascript]] scripting model for test units.&lt;br /&gt;
&lt;br /&gt;
===Runtime Services Examples===&lt;br /&gt;
&lt;br /&gt;
These examples cover basic usage of the Runtime Test Services API (as declared in srtest.h).&lt;br /&gt;
&lt;br /&gt;
====02_01_RuntimeServices_Simple====&lt;br /&gt;
&lt;br /&gt;
This example demonstrates how to use [[Test_Units#srTestCaseSetStatus|srTestCaseSetStatus]] to set status, [[Test_Units#srTestCaseAddComment|srTestCaseAddComment]] to add a comment, and srTEST_ADD_COMMENT_WITH_LOCATION to add a comment that automatically includes line and file information. &lt;br /&gt;
&lt;br /&gt;
====02_02_RuntimeServices_Dynamic====&lt;br /&gt;
&lt;br /&gt;
This example demonstrates how to use [[Test_Units#srTestSuiteAddSuite|srTestSuiteAddSuite]], [[Test_Units#srTestSuiteAddTest|srTestSuiteAddTest]], [[Test_Units#srTestSuiteAddAnnotation|srTestSuiteAddAnnotation]], and [[Test_Units#srTestAnnotationAddComment|srTestAnnotationAddComment]] for dynamic suite, test, and annotation creation in the context of a single test method.&lt;br /&gt;
&lt;br /&gt;
====02_03_RuntimeServices_Override====&lt;br /&gt;
&lt;br /&gt;
This example demonstrates how to use [[Test_Units#srTestCaseSetStatus|srTestCaseSetStatus]] to override the status that would otherwise be inferred from the return value.&lt;br /&gt;
&lt;br /&gt;
====02_04_RuntimeServices_VarComment====&lt;br /&gt;
&lt;br /&gt;
This example demonstrates the use of [http://en.wikipedia.org/wiki/Printf printf] style format strings with [[Test_Units#srTestCaseAddComment|srTestCaseAddComment]].&lt;br /&gt;
&lt;br /&gt;
===srTest Examples===&lt;br /&gt;
&lt;br /&gt;
These examples show to how to use the [[Test_Units#C.2B.2B_Test_Classes|stride::srTest]] base class for your test classes.  When you publicly inherit from srTest, you get access to default testCase and testSuite members and their associated methods.&lt;br /&gt;
&lt;br /&gt;
====03_01_srTest_Simple====&lt;br /&gt;
&lt;br /&gt;
This example demonstrates the use of [[Test_Units#SetStatus|testCase.setStatus]] to set the status for test cases.&lt;br /&gt;
&lt;br /&gt;
====03_02_srTest_Dynamic====&lt;br /&gt;
&lt;br /&gt;
This example demonstrates how to use [[Test_Units#AddSuite|testSuite.AddSuite]], [[Test_Units#AddTest|testSuite.AddTest]], [[Test_Units#AddAnnotation|testSuite.AddAnnotation]], and [[Test_Units#AddAnnotation.AddComment|testSuite.AddAnnotation.AddComment]] for dynamic suite, test case, and annotation creation within the context of one test method.&lt;br /&gt;
&lt;br /&gt;
==Test Class Execution==&lt;br /&gt;
&lt;br /&gt;
This sample demonstrates two different techniques for executing test classes.&lt;br /&gt;
&lt;br /&gt;
===Command Line Execution===&lt;br /&gt;
&lt;br /&gt;
Command line execution for test classes is done using the [[Test_Runners#TestUnitRun.pl|TestUnitRun utility]].  Here are several examples of specific syntax to execute test classes.  All of these commands can be invoked from a standard [http://en.wikipedia.org/wiki/Command_Prompt_(Windows) command shell] (or other shell of your choosing) and the arguments shown assume that the commands are executed with the sample&#039;s directory as the starting directory. You must have your TestClass.exe application running in order for the runner to be able to initiate a connection to the target simulator. In addition, you should verify that your %STRIDE_DIR%\bin\transport.cfg file is using the TCP transport to connect to port 8000 (these are the default settings when the product is installed).&lt;br /&gt;
&lt;br /&gt;
====Simple execution of all test units====&lt;br /&gt;
&lt;br /&gt;
The following command executes all of the test units found in the STRIDE database you have previously generated.  For the purpose of this sample, since there is only one database, the -d parameter is not strictly needed, but it is shown here for completeness.&lt;br /&gt;
&lt;br /&gt;
  TestUnitRun.pl -d TestClass.sidb&lt;br /&gt;
&lt;br /&gt;
This command executes all Test Units found in the database in descending alpha-numeric sort order.  Any Test Class initialization arguments are given default values (typically zero or NULL).&lt;br /&gt;
&lt;br /&gt;
When you run this command, you should see console output like:&lt;br /&gt;
&lt;br /&gt;
  Attempting connection using [Sockets (S2)] transport ...&lt;br /&gt;
  Connected to device.&lt;br /&gt;
  Initializing STRIDE database objects...&lt;br /&gt;
  Done.&lt;br /&gt;
  Running Test Basic::Constructors...&lt;br /&gt;
  Running Test Basic::Exceptions...&lt;br /&gt;
  Running Test Basic::Fixtures...&lt;br /&gt;
  Running Test Basic::Simple...&lt;br /&gt;
  Running Test RuntimeServices::Dynamic...&lt;br /&gt;
  Running Test RuntimeServices::Override... &lt;br /&gt;
  Running Test RuntimeServices::Simple...&lt;br /&gt;
  Running Test RuntimeServices::VarComment...&lt;br /&gt;
  Running Test srTest::Dynamic...&lt;br /&gt;
  Running Test srTest::Simple...&lt;br /&gt;
  Disconnected from device.&lt;br /&gt;
  Test Results saved to C:\STRIDE\Samples\TestUnits\TestClass\TestClass.xml&lt;br /&gt;
  Test Report saved to C:\STRIDE\Samples\TestUnits\TestClass\TestClass.html&lt;br /&gt;
  ***************************************************************************&lt;br /&gt;
  Results Summary&lt;br /&gt;
  ***************************************************************************&lt;br /&gt;
    Passed:              26&lt;br /&gt;
    Failed:              12&lt;br /&gt;
    In Progress:          2&lt;br /&gt;
    Not Applicable:       2&lt;br /&gt;
    ...in 12 suites.&lt;br /&gt;
  ***************************************************************************&lt;br /&gt;
&lt;br /&gt;
====Execution based on an order file====&lt;br /&gt;
&lt;br /&gt;
TestUnitRun can optionally base its execution on simple text file input. A simple order file, &#039;&#039;RunSimple.txt&#039;&#039;, is provided which specifies a subset of all the Test Classes in this sample. This order file also shows how to create subsuites in the final output by using the special &#039;&#039;&#039;{suitepath}&#039;&#039;&#039; syntax, as described in [[Test_Runners#Usage|the usage section]].&lt;br /&gt;
&lt;br /&gt;
  TestUnitRun.pl -d TestClass.sidb -o RunSimple.txt&lt;br /&gt;
&lt;br /&gt;
...and will produce this output:&lt;br /&gt;
&lt;br /&gt;
  Attempting connection using [Sockets (S2)] transport ...&lt;br /&gt;
  Connected to device.&lt;br /&gt;
  Initializing STRIDE database objects...&lt;br /&gt;
  Done.&lt;br /&gt;
  Running Test Basic::Simple...&lt;br /&gt;
  Running Test RuntimeServices::Simple...&lt;br /&gt;
  Running Test srTest::Simple...&lt;br /&gt;
  Disconnected from device.&lt;br /&gt;
  Test Results saved to C:\STRIDE\Samples\TestUnits\TestClass\TestClass.xml&lt;br /&gt;
  Test Report saved to C:\STRIDE\Samples\TestUnits\TestClass\TestClass.html&lt;br /&gt;
  ***************************************************************************&lt;br /&gt;
  Results Summary&lt;br /&gt;
  ***************************************************************************&lt;br /&gt;
    Passed:              13&lt;br /&gt;
    Failed:               6&lt;br /&gt;
    In Progress:          2&lt;br /&gt;
    Not Applicable:       2&lt;br /&gt;
    ...in 6 suites.&lt;br /&gt;
  ***************************************************************************&lt;br /&gt;
&lt;br /&gt;
====Execution based on filesystem order====&lt;br /&gt;
&lt;br /&gt;
TestUnitRun can also try to infer execution order and suite hierarchy from filesystem organization.  If you have organized your test class source files (only the files that contain the scl_test_class pragma matter here) in a filesystem hierarchy that you want to mimic in your tests, you can specify a root of a directory tree that contains the relevant test class source.  TestUnitRun will walk the directory structure and determine order and hierarchy of tests based on the directory structure.  To see an example of this in action, you can execute this command with the sample:&lt;br /&gt;
&lt;br /&gt;
  TestUnitRun.pl -d TestClass.sidb -f Tests&lt;br /&gt;
&lt;br /&gt;
This will cause the runner to examine the Tests subdirectory structure and build a hierarchy of tests based on that directory tree.  Subdirectories will map to suites in the final report.  Here is the output for this example:&lt;br /&gt;
 &lt;br /&gt;
  Attempting connection using [Sockets (S2)] transport ...&lt;br /&gt;
  Connected to device.&lt;br /&gt;
  Initializing STRIDE database objects...&lt;br /&gt;
  Done.&lt;br /&gt;
  Running Test Basic::Simple...&lt;br /&gt;
  Running Test Basic::Fixtures...&lt;br /&gt;
  Running Test Basic::Exceptions...&lt;br /&gt;
  Running Test Basic::Constructors...&lt;br /&gt;
  Running Test RuntimeServices::Simple...&lt;br /&gt;
  Running Test RuntimeServices::Dynamic...&lt;br /&gt;
  Running Test RuntimeServices::Override...&lt;br /&gt;
  Running Test RuntimeServices::VarComment...&lt;br /&gt;
  Running Test srTest::Simple...&lt;br /&gt;
  Running Test srTest::Dynamic...&lt;br /&gt;
  Disconnected from device.&lt;br /&gt;
  Test Results saved to C:\STRIDE\Samples\TestUnits\TestClass\TestClass.xml&lt;br /&gt;
  Test Report saved to C:\STRIDE\Samples\TestUnits\TestClass\TestClass.html&lt;br /&gt;
  ***************************************************************************&lt;br /&gt;
  Results Summary&lt;br /&gt;
  ***************************************************************************&lt;br /&gt;
    Passed:              26&lt;br /&gt;
    Failed:              12&lt;br /&gt;
    In Progress:          2&lt;br /&gt;
    Not Applicable:       2&lt;br /&gt;
    ...in 15 suites.&lt;br /&gt;
  ***************************************************************************&lt;br /&gt;
&lt;br /&gt;
===Workspace-based Execution===&lt;br /&gt;
&lt;br /&gt;
TestClass.ssw, a workspace in the TestClass directory, demonstrates the use of script execution with Studio to manage test order and hierarchy.  This workspace was created using [[WorkspaceSetup.pl]].  The setup and teardown folders provide basic infrastructure scripts that start/stop the simulator application (TestClass.exe) and to manage traceviews used for [[Runtime_Reference#Logging_Services|srPrint]] message collection.  The scripts that drive the testing are in the workspace &#039;&#039;&#039;test&#039;&#039;&#039; folder. What follows is a brief description for each.&lt;br /&gt;
&lt;br /&gt;
====RunAll====&lt;br /&gt;
&lt;br /&gt;
This folder contains a script, All.js, that iterates through the entire collection of test units and executes them one at a time. The order of execution will be in ascending alpabetical order (by name) since the [[AutoScript#ascript.TestUnits|ArrangeBy]] collection method was called.&lt;br /&gt;
&lt;br /&gt;
====CallConstructor====&lt;br /&gt;
&lt;br /&gt;
This folder contains a simple script example that shows how to invoke test classes with constructor arguments.  In this example, the Basic::Constructors test class is executed twice with different initialization (constructor) arguments both times.&lt;br /&gt;
&lt;br /&gt;
====Run Individual====&lt;br /&gt;
&lt;br /&gt;
This folder shows how to use individual scripts to execute test classes. Each script has the following form:&lt;br /&gt;
&lt;br /&gt;
  ascript.TestUnits.Item(&#039;&#039;&#039;TEST_CLASS_NAME&#039;&#039;&#039;).Run();&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;TEST_Class_NAME&#039;&#039;&#039; is the name of the scl_test_class test to be run.  The order and hierarchy of each item may be changed via the Studio tree control by moving the item within the scripts and/or folders. The sample contains individual scripts for a few of the sample scl_test_class tests - you are free to move, add, or delete any items as you experiment with the workspace.&lt;br /&gt;
&lt;br /&gt;
[[Category: Samples]]&lt;/div&gt;</summary>
		<author><name>Robg</name></author>
	</entry>
	<entry>
		<id>https://www.stridewiki.com/index.php?title=Test_Macros_Sample&amp;diff=8848</id>
		<title>Test Macros Sample</title>
		<link rel="alternate" type="text/html" href="https://www.stridewiki.com/index.php?title=Test_Macros_Sample&amp;diff=8848"/>
		<updated>2009-01-12T16:34:44Z</updated>

		<summary type="html">&lt;p&gt;Robg: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
The Test Class Samples are part of the [[Test_Unit_Samples|STRIDE Test Unit Samples]]. The following content relates to the sample files and workspaces installed in &#039;&#039;%STRIDE_DIR%\Samples\TestUnits\TestClass&#039;&#039;.  This sample consists of a [http://en.wikipedia.org/wiki/Microsoft_Visual_Studio Visual Studio] workspace for building a [[Windows_Off-Target_Apps|Windows Off-Target App]], sample [[Test Units|test class]] source code,  and a STRIDE workspace for doing more advanced test class execution.&lt;br /&gt;
&lt;br /&gt;
==Getting Started==&lt;br /&gt;
&lt;br /&gt;
To begin, open the Visual Studio Solution file in the sample directory.  This solution (and corresponding project) were created for Visual Studio 2005.  If you have a later version of Visual Studio installed, you should be able to open this solution and it will be automatically upgraded if necessary.  If you do not currently have any version of Visual Studio, it is recommended that you install the current free version of [http://en.wikipedia.org/wiki/Visual_Studio_Express Visual Studio Express].&lt;br /&gt;
&lt;br /&gt;
Once you have successfully opened the solution, rebuild it.  The build process has custom STRIDE build rules integrated and will produce a STRIDE database, intercept module source files, and a Windows Off-Target App that incorporates the test class source.&lt;br /&gt;
&lt;br /&gt;
Once the build is complete, perform the following steps to run the test classes in the workspace:&lt;br /&gt;
&lt;br /&gt;
# launch the Windows Off-Target App, TestClass.exe.  This will run in a standard console window.&lt;br /&gt;
# open a command prompt window and change to this sample&#039;s directory.&lt;br /&gt;
# at the command prompt, run the command &amp;lt;tt&amp;gt;&#039;&#039;&#039;TestUnitRun.pl -v&#039;&#039;&#039;&amp;lt;/tt&amp;gt;.  This will execute all of the test units in the workspace and open a browser to display the results.&lt;br /&gt;
# quit the TestClass.exe application by typing &#039;q&#039; in its console window.&lt;br /&gt;
&lt;br /&gt;
==Sample Test Classes==&lt;br /&gt;
&lt;br /&gt;
Now that you have built the Windows Off-Target App and executed the test classes it contains, you can take time to peruse the test class source and the corresponding results that each produces.  This section provides a brief description for each.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;NOTE:&#039;&#039; each of the example test classes is grouped in namespace corresponding to its top-level category (e.g. &#039;&#039;Basic&#039;&#039; or &#039;&#039;Runtime Services&#039;&#039;).  This is something shown for organizational purposes only -- it is &#039;&#039;&#039;not&#039;&#039;&#039; a general requirement that test classes be placed into namespaces.   &lt;br /&gt;
&lt;br /&gt;
===Basic Examples===&lt;br /&gt;
&lt;br /&gt;
These examples cover the simplest, easiest way to code a STRIDE test class. These examples use simple [http://en.wikipedia.org/wiki/Plain_Old_Data_Structures POD] return types to indicate status and do not annotate the tests with any rich information (such as comments).&lt;br /&gt;
&lt;br /&gt;
====01_01_Basic_Simple====&lt;br /&gt;
&lt;br /&gt;
This example demonstrates passing and failing tests using the four primary POD types that infer status from (int, bool, short, and char).&lt;br /&gt;
&lt;br /&gt;
====01_02_Basic_Fixtures====&lt;br /&gt;
&lt;br /&gt;
This example demonstrates how to use [[Test_Units#Pragmas_for_Test_Units|setup and teardown]] fixtures.  The setup and teardown methods are called immediately before and after the execution of each test method, respectively.&lt;br /&gt;
&lt;br /&gt;
====01_03_Basic_Exceptions====&lt;br /&gt;
&lt;br /&gt;
This example demonstrates how exceptions thrown from a test method are caught by the intercept module and noted in the results.  Any exception that is caught by the harness is assumed to indicate failure.&lt;br /&gt;
&lt;br /&gt;
====01_04_Basic_Constructors====&lt;br /&gt;
&lt;br /&gt;
This example demonstrates how test classes may have non-trivial constructors.  These arguments can be passed using the [[AutoScript#ascript.TestUnits|ascript]] scripting model for test units.&lt;br /&gt;
&lt;br /&gt;
===Runtime Services Examples===&lt;br /&gt;
&lt;br /&gt;
These examples cover basic usage of the Runtime Test Services API (as declared in srtest.h).&lt;br /&gt;
&lt;br /&gt;
====02_01_RuntimeServices_Simple====&lt;br /&gt;
&lt;br /&gt;
This example demonstrates how to use [[Test_Units#srTestCaseSetStatus|srTestCaseSetStatus]] to set status, [[Test_Units#srTestCaseAddComment|srTestCaseAddComment]] to add a comment, and srTEST_ADD_COMMENT_WITH_LOCATION to add a comment that automatically includes line and file information. &lt;br /&gt;
&lt;br /&gt;
====02_02_RuntimeServices_Dynamic====&lt;br /&gt;
&lt;br /&gt;
This example demonstrates how to use [[Test_Units#srTestSuiteAddSuite|srTestSuiteAddSuite]], [[Test_Units#srTestSuiteAddTest|srTestSuiteAddTest]], [[Test_Units#srTestSuiteAddAnnotation|srTestSuiteAddAnnotation]], and [[Test_Units#srTestAnnotationAddComment|srTestAnnotationAddComment]] for dynamic suite, test, and annotation creation in the context of a single test method.&lt;br /&gt;
&lt;br /&gt;
====02_03_RuntimeServices_Override====&lt;br /&gt;
&lt;br /&gt;
This example demonstrates how to use [[Test_Units#srTestCaseSetStatus|srTestCaseSetStatus]] to override the status that would otherwise be inferred from the return value.&lt;br /&gt;
&lt;br /&gt;
====02_04_RuntimeServices_VarComment====&lt;br /&gt;
&lt;br /&gt;
This example demonstrates the use of [http://en.wikipedia.org/wiki/Printf printf] style format strings with [[Test_Units#srTestCaseAddComment|srTestCaseAddComment]].&lt;br /&gt;
&lt;br /&gt;
===srTest Examples===&lt;br /&gt;
&lt;br /&gt;
These examples show to how to use the [[Test_Units#C.2B.2B_Test_Classes|stride::srTest]] base class for your test classes.  When you publicly inherit from srTest, you get access to default testCase and testSuite members and their associated methods.&lt;br /&gt;
&lt;br /&gt;
====03_01_srTest_Simple====&lt;br /&gt;
&lt;br /&gt;
This example demonstrates the use of [[Test_Units#SetStatus|testCase.setStatus]] to set the status for test cases.&lt;br /&gt;
&lt;br /&gt;
====03_02_srTest_Dynamic====&lt;br /&gt;
&lt;br /&gt;
This example demonstrates how to use [[Test_Units#AddSuite|testSuite.AddSuite]], [[Test_Units#AddTest|testSuite.AddTest]], [[Test_Units#AddAnnotation|testSuite.AddAnnotation]], and [[Test_Units#AddAnnotation.AddComment|testSuite.AddAnnotation.AddComment]] for dynamic suite, test case, and annotation creation within the context of one test method.&lt;br /&gt;
&lt;br /&gt;
==Test Class Execution==&lt;br /&gt;
&lt;br /&gt;
This sample demonstrates two different techniques for executing test classes.&lt;br /&gt;
&lt;br /&gt;
===Command Line Execution===&lt;br /&gt;
&lt;br /&gt;
Command line execution for test classes is done using the [[Test_Runners#TestUnitRun.pl|TestUnitRun utility]].  Here are several examples of specific syntax to execute test classes.  All of these commands can be invoked from a standard [http://en.wikipedia.org/wiki/Command_Prompt_(Windows) command shell] (or other shell of your choosing) and the arguments shown assume that the commands are executed with the sample&#039;s directory as the starting directory. You must have your TestClass.exe application running in order for the runner to be able to initiate a connection to the target simulator. In addition, you should verify that your %STRIDE_DIR%\bin\transport.cfg file is using the TCP transport to connect to port 8000 (these are the default settings when the product is installed).&lt;br /&gt;
&lt;br /&gt;
====Simple execution of all test units====&lt;br /&gt;
&lt;br /&gt;
The following command executes all of the test units found in the STRIDE database you have previously generated.  For the purpose of this sample, since there is only one database, the -d parameter is not strictly needed, but it is shown here for completeness.&lt;br /&gt;
&lt;br /&gt;
  TestUnitRun.pl -d TestClass.sidb&lt;br /&gt;
&lt;br /&gt;
This command executes all Test Units found in the database in descending alpha-numeric sort order.  Any Test Class initialization arguments are given default values (typically zero or NULL).&lt;br /&gt;
&lt;br /&gt;
When you run this command, you should see console output like:&lt;br /&gt;
&lt;br /&gt;
  Attempting connection using [Sockets (S2)] transport ...&lt;br /&gt;
  Connected to device.&lt;br /&gt;
  Initializing STRIDE database objects...&lt;br /&gt;
  Done.&lt;br /&gt;
  Running Test Basic::Constructors...&lt;br /&gt;
  Running Test Basic::Exceptions...&lt;br /&gt;
  Running Test Basic::Fixtures...&lt;br /&gt;
  Running Test Basic::Simple...&lt;br /&gt;
  Running Test RuntimeServices::Dynamic...&lt;br /&gt;
  Running Test RuntimeServices::Override... &lt;br /&gt;
  Running Test RuntimeServices::Simple...&lt;br /&gt;
  Running Test RuntimeServices::VarComment...&lt;br /&gt;
  Running Test srTest::Dynamic...&lt;br /&gt;
  Running Test srTest::Simple...&lt;br /&gt;
  Disconnected from device.&lt;br /&gt;
  Test Results saved to C:\STRIDE\Samples\TestUnits\TestClass\TestClass.xml&lt;br /&gt;
  Test Report saved to C:\STRIDE\Samples\TestUnits\TestClass\TestClass.html&lt;br /&gt;
  ***************************************************************************&lt;br /&gt;
  Results Summary&lt;br /&gt;
  ***************************************************************************&lt;br /&gt;
    Passed:              26&lt;br /&gt;
    Failed:              12&lt;br /&gt;
    In Progress:          2&lt;br /&gt;
    Not Applicable:       2&lt;br /&gt;
    ...in 12 suites.&lt;br /&gt;
  ***************************************************************************&lt;br /&gt;
&lt;br /&gt;
====Execution based on an order file====&lt;br /&gt;
&lt;br /&gt;
TestUnitRun can optionally base its execution on simple text file input. A simple order file, &#039;&#039;RunSimple.txt&#039;&#039;, is provided which specifies a subset of all the Test Classes in this sample. This order file also shows how to create subsuites in the final output by using the special &#039;&#039;&#039;{suitepath}&#039;&#039;&#039; syntax, as described in [[Test_Runners#Usage|the usage section]].&lt;br /&gt;
&lt;br /&gt;
  TestUnitRun.pl -d TestClass.sidb -o RunSimple.txt&lt;br /&gt;
&lt;br /&gt;
...and will produce this output:&lt;br /&gt;
&lt;br /&gt;
  Attempting connection using [Sockets (S2)] transport ...&lt;br /&gt;
  Connected to device.&lt;br /&gt;
  Initializing STRIDE database objects...&lt;br /&gt;
  Done.&lt;br /&gt;
  Running Test Basic::Simple...&lt;br /&gt;
  Running Test RuntimeServices::Simple...&lt;br /&gt;
  Running Test srTest::Simple...&lt;br /&gt;
  Disconnected from device.&lt;br /&gt;
  Test Results saved to C:\STRIDE\Samples\TestUnits\TestClass\TestClass.xml&lt;br /&gt;
  Test Report saved to C:\STRIDE\Samples\TestUnits\TestClass\TestClass.html&lt;br /&gt;
  ***************************************************************************&lt;br /&gt;
  Results Summary&lt;br /&gt;
  ***************************************************************************&lt;br /&gt;
    Passed:              13&lt;br /&gt;
    Failed:               6&lt;br /&gt;
    In Progress:          2&lt;br /&gt;
    Not Applicable:       2&lt;br /&gt;
    ...in 6 suites.&lt;br /&gt;
  ***************************************************************************&lt;br /&gt;
&lt;br /&gt;
====Execution based on filesystem order====&lt;br /&gt;
&lt;br /&gt;
TestUnitRun can also try to infer execution order and suite hierarchy from filesystem organization.  If you have organized your test class source files (only the files that contain the scl_test_class pragma matter here) in a filesystem hierarchy that you want to mimic in your tests, you can specify a root of a directory tree that contains the relevant test class source.  TestUnitRun will walk the directory structure and determine order and hierarchy of tests based on the directory structure.  To see an example of this in action, you can execute this command with the sample:&lt;br /&gt;
&lt;br /&gt;
  TestUnitRun.pl -d TestClass.sidb -f Tests&lt;br /&gt;
&lt;br /&gt;
This will cause the runner to examine the Tests subdirectory structure and build a hierarchy of tests based on that directory tree.  Subdirectories will map to suites in the final report.  Here is the output for this example:&lt;br /&gt;
 &lt;br /&gt;
  Attempting connection using [Sockets (S2)] transport ...&lt;br /&gt;
  Connected to device.&lt;br /&gt;
  Initializing STRIDE database objects...&lt;br /&gt;
  Done.&lt;br /&gt;
  Running Test Basic::Simple...&lt;br /&gt;
  Running Test Basic::Fixtures...&lt;br /&gt;
  Running Test Basic::Exceptions...&lt;br /&gt;
  Running Test Basic::Constructors...&lt;br /&gt;
  Running Test RuntimeServices::Simple...&lt;br /&gt;
  Running Test RuntimeServices::Dynamic...&lt;br /&gt;
  Running Test RuntimeServices::Override...&lt;br /&gt;
  Running Test RuntimeServices::VarComment...&lt;br /&gt;
  Running Test srTest::Simple...&lt;br /&gt;
  Running Test srTest::Dynamic...&lt;br /&gt;
  Disconnected from device.&lt;br /&gt;
  Test Results saved to C:\STRIDE\Samples\TestUnits\TestClass\TestClass.xml&lt;br /&gt;
  Test Report saved to C:\STRIDE\Samples\TestUnits\TestClass\TestClass.html&lt;br /&gt;
  ***************************************************************************&lt;br /&gt;
  Results Summary&lt;br /&gt;
  ***************************************************************************&lt;br /&gt;
    Passed:              26&lt;br /&gt;
    Failed:              12&lt;br /&gt;
    In Progress:          2&lt;br /&gt;
    Not Applicable:       2&lt;br /&gt;
    ...in 15 suites.&lt;br /&gt;
  ***************************************************************************&lt;br /&gt;
&lt;br /&gt;
===Workspace-based Execution===&lt;br /&gt;
&lt;br /&gt;
TestClass.ssw, a workspace in the TestClass directory, demonstrates the use of script execution with Studio to manage test order and hierarchy.  This workspace was created using [[WorkspaceSetup.pl]].  The setup and teardown folders provide basic infrastructure scripts that start/stop the simulator application (TestClass.exe) and to manage traceviews used for [[Runtime_Reference#Logging_Services|srPrint]] message collection.  The scripts that drive the testing are in the workspace &#039;&#039;&#039;test&#039;&#039;&#039; folder. What follows is a brief description for each.&lt;br /&gt;
&lt;br /&gt;
====RunAll====&lt;br /&gt;
&lt;br /&gt;
This folder contains a script, All.js, that iterates through the entire collection of test units and executes them one at a time. The order of execution will be in ascending alpabetical order (by name) since the [[AutoScript#ascript.TestUnits|ArrangeBy]] collection method was called.&lt;br /&gt;
&lt;br /&gt;
====CallConstructor====&lt;br /&gt;
&lt;br /&gt;
This folder contains a simple script example that shows how to invoke test classes with constructor arguments.  In this example, the Basic::Constructors test class is executed twice with different initialization (constructor) arguments both times.&lt;br /&gt;
&lt;br /&gt;
====Run Individual====&lt;br /&gt;
&lt;br /&gt;
This folder shows how to use individual scripts to execute test classes. Each script has the following form:&lt;br /&gt;
&lt;br /&gt;
  ascript.TestUnits.Item(&#039;&#039;&#039;TEST_CLASS_NAME&#039;&#039;&#039;).Run();&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;TEST_Class_NAME&#039;&#039;&#039; is the name of the scl_test_class test to be run.  The order and hierarchy of each item may be changed via the Studio tree control by moving the item within the scripts and/or folders. The sample contains individual scripts for a few of the sample scl_test_class tests - you are free to move, add, or delete any items as you experiment with the workspace.&lt;br /&gt;
&lt;br /&gt;
[[Category: Samples]]&lt;/div&gt;</summary>
		<author><name>Robg</name></author>
	</entry>
	<entry>
		<id>https://www.stridewiki.com/index.php?title=Test_Macros_Sample&amp;diff=8847</id>
		<title>Test Macros Sample</title>
		<link rel="alternate" type="text/html" href="https://www.stridewiki.com/index.php?title=Test_Macros_Sample&amp;diff=8847"/>
		<updated>2009-01-12T16:34:20Z</updated>

		<summary type="html">&lt;p&gt;Robg: New page: Put here&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Put here&lt;/div&gt;</summary>
		<author><name>Robg</name></author>
	</entry>
	<entry>
		<id>https://www.stridewiki.com/index.php?title=Main_Page&amp;diff=8843</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://www.stridewiki.com/index.php?title=Main_Page&amp;diff=8843"/>
		<updated>2009-01-09T17:35:51Z</updated>

		<summary type="html">&lt;p&gt;Robg: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Welcome to the S2 Technologies™ &#039;&#039;&#039;STRIDE&#039;&#039;&#039;™&#039;&#039;&#039; 3.0 Support Wiki&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
All contributions are welcome and encouraged. Please read &#039;&#039;&#039;[[Help:How to add a topic|How to add a topic]]&#039;&#039;&#039; and &#039;&#039;&#039;[[Help:Contents|Help]]&#039;&#039;&#039; pages for guidelines and instructions on editing. You must &#039;&#039;&#039;[[Special:Userlogin|log in or create an account]]&#039;&#039;&#039; before you can edit a page. &lt;br /&gt;
&lt;br /&gt;
Please select a topic or category heading below, or enter a search string in the Search field to the left. &lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;FCK__ShowTableBorders&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;FCK__ShowTableBorders&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | &lt;br /&gt;
{| class=&amp;quot;FCK__ShowTableBorders&amp;quot; style=&amp;quot;border-right: rgb(187,204,204) 1px solid; border-top: rgb(187,204,204) 1px solid; vertical-align: top; border-left: rgb(187,204,204) 1px solid; border-bottom: rgb(187,204,204) 1px solid&amp;quot; cellspacing=&amp;quot;5&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;border-right: rgb(163,176,191) 1px solid; padding-right: 0.4em; border-top: rgb(163,176,191) 1px solid; padding-left: 0.4em; font-weight: bold; font-size: 120%; background: rgb(206,223,242) 0% 50%; padding-bottom: 0.2em; margin: 0pt; border-left: rgb(163,176,191) 1px solid; color: rgb(0,0,0); padding-top: 0.2em; border-bottom: rgb(163,176,191) 1px solid; text-align: left; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial&amp;quot; | [[:Category:Installation|Installation]]&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &lt;br /&gt;
! style=&amp;quot;border-right: rgb(163,176,191) 1px solid; padding-right: 0.4em; border-top: rgb(163,176,191) 1px solid; padding-left: 0.4em; font-weight: bold; font-size: 120%; background: rgb(206,223,242) 0% 50%; padding-bottom: 0.2em; margin: 0pt; border-left: rgb(163,176,191) 1px solid; color: rgb(0,0,0); padding-top: 0.2em; border-bottom: rgb(163,176,191) 1px solid; text-align: left; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial&amp;quot; | [[:Category:Reference|Reference]]&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &lt;br /&gt;
! style=&amp;quot;border-right: rgb(163,176,191) 1px solid; padding-right: 0.4em; border-top: rgb(163,176,191) 1px solid; padding-left: 0.4em; font-weight: bold; font-size: 120%; background: rgb(206,223,242) 0% 50%; padding-bottom: 0.2em; margin: 0pt; border-left: rgb(163,176,191) 1px solid; color: rgb(0,0,0); padding-top: 0.2em; border-bottom: rgb(163,176,191) 1px solid; text-align: left; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial&amp;quot; | [[:Category:Samples|Samples]] &amp;lt;!--&lt;br /&gt;
Deploying&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | &lt;br /&gt;
*[[Desktop_Installation|Desktop Installation]] &lt;br /&gt;
*[[Build_Integration|Build Integration]] &lt;br /&gt;
*[[Target_Integration|Target Integration]] &lt;br /&gt;
*[[Verifying Installation|Verification]]&amp;lt;u&amp;gt;&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Reference&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | &lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[Reference Overview|Overview]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[Runtime Reference|Runtime]]&amp;lt;/li&amp;gt; &lt;br /&gt;
&amp;lt;li&amp;gt;[[Build Tools|Build Tools]]&amp;lt;/li&amp;gt; &lt;br /&gt;
&amp;lt;li&amp;gt;[[SCL_Pragmas|SCL Pragmas]]&amp;lt;/li&amp;gt; &lt;br /&gt;
&amp;lt;li&amp;gt;[[Intercept Module|Intercept Module]]&amp;lt;/li&amp;gt; &lt;br /&gt;
&amp;lt;li&amp;gt;[[AutoScript|AutoScript]]&amp;lt;/li&amp;gt; &lt;br /&gt;
&amp;lt;li&amp;gt;[[Reporter|Reporter]]&amp;lt;/li&amp;gt; &lt;br /&gt;
&amp;lt;li&amp;gt;[[STRIDE_Studio|Studio]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[Test Macros|Test Macros]]&amp;lt;/li&amp;gt;  &lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;categorytree mode=pages depth=0&amp;gt;SDKs&amp;lt;/categorytree&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;categorytree mode=pages depth=0&amp;gt;Utilities&amp;lt;/categorytree&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Samples&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | &lt;br /&gt;
*[[Samples Overview]]&lt;br /&gt;
*[[Install_Test_Sample|Install Test]]&lt;br /&gt;
*[[Hello_Stride_Sample|Hello Stride]]&lt;br /&gt;
*[[Test_Unit_Samples|Test Units]]&lt;br /&gt;
*[[Test_Script_Samples|Test Scripts]] &lt;br /&gt;
*[[SCL_Samples|SCL]]&lt;br /&gt;
*[[Intercept_Module_Sample|Intercept Module]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;border-right: rgb(163,176,191) 1px solid; padding-right: 0.4em; border-top: rgb(163,176,191) 1px solid; padding-left: 0.4em; font-weight: bold; font-size: 120%; background: rgb(206,223,242) 0% 50%; padding-bottom: 0.2em; margin: 0pt; border-left: rgb(163,176,191) 1px solid; color: rgb(0,0,0); padding-top: 0.2em; border-bottom: rgb(163,176,191) 1px solid; text-align: left; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial&amp;quot; | [[:Category:Practice|Practice]] &lt;br /&gt;
! style=&amp;quot;border-right: rgb(163,176,191) 1px solid; padding-right: 0.4em; border-top: rgb(163,176,191) 1px solid; padding-left: 0.4em; font-weight: bold; font-size: 120%; background: rgb(206,223,242) 0% 50%; padding-bottom: 0.2em; margin: 0pt; border-left: rgb(163,176,191) 1px solid; color: rgb(0,0,0); padding-top: 0.2em; border-bottom: rgb(163,176,191) 1px solid; text-align: left; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial&amp;quot; | [[:Category:Application Notes|Notes]] &lt;br /&gt;
! style=&amp;quot;border-right: rgb(163,176,191) 1px solid; padding-right: 0.4em; border-top: rgb(163,176,191) 1px solid; padding-left: 0.4em; font-weight: bold; font-size: 120%; background: rgb(206,223,242) 0% 50%; padding-bottom: 0.2em; margin: 0pt; border-left: rgb(163,176,191) 1px solid; color: rgb(0,0,0); padding-top: 0.2em; border-bottom: rgb(163,176,191) 1px solid; text-align: left; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial&amp;quot; | [[:Category:Release Notes|Release Notes]]&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | &lt;br /&gt;
&amp;lt;ul&amp;gt; &lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;categorytree mode=&amp;quot;all&amp;quot; depth=0&amp;gt;Documentation&amp;lt;/categorytree&amp;gt;&amp;lt;/li&amp;gt; &lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;categorytree mode=&amp;quot;all&amp;quot; depth=0&amp;gt;Script Writing&amp;lt;/categorytree&amp;gt;&amp;lt;/li&amp;gt; &lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;categorytree mode=&amp;quot;all&amp;quot; depth=0&amp;gt;Project Organization&amp;lt;/categorytree&amp;gt;&amp;lt;/li&amp;gt; &lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Notes&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | &lt;br /&gt;
&amp;lt;categorytree mode=&amp;quot;all&amp;quot; hideroot=&amp;quot;on&amp;quot;&amp;gt;Application Notes&amp;lt;/categorytree&amp;gt; &amp;lt;!--&lt;br /&gt;
Release Notes&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | &lt;br /&gt;
*[[STRIDE 2.1.00xx|STRIDE 2.1.00xx (D Street)]] &lt;br /&gt;
*[[STRIDE 3.0.01xx|STRIDE 3.0.01xx (StoneSteps)]]&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Robg</name></author>
	</entry>
	<entry>
		<id>https://www.stridewiki.com/index.php?title=Error_compiling_standard_libaries&amp;diff=8511</id>
		<title>Error compiling standard libaries</title>
		<link rel="alternate" type="text/html" href="https://www.stridewiki.com/index.php?title=Error_compiling_standard_libaries&amp;diff=8511"/>
		<updated>2008-12-09T16:34:22Z</updated>

		<summary type="html">&lt;p&gt;Robg: New page: ecause the STRIDE C/C++ compiler (s2scompile) is a program analysis  and instrumentation tool, it does not include its own copy of the  standard C and C++ library header files. Rather, the...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;ecause the STRIDE C/C++ compiler (s2scompile) is a program analysis &lt;br /&gt;
and instrumentation tool, it does not include its own copy of the &lt;br /&gt;
standard C and C++ library header files. Rather, the recommended use&lt;br /&gt;
is to configure the STRIDE compiler to use the same header files &lt;br /&gt;
as the target compilation system. Normally this works fine without&lt;br /&gt;
adjustment. However, from time to time the target compiler may have&lt;br /&gt;
certain macros specially predefined that require adjustment&lt;br /&gt;
within STRIDE.&lt;br /&gt;
&lt;br /&gt;
If you encounter syntax errors when compiling the systems standard &lt;br /&gt;
library header files, the issue is typically that one or more macros&lt;br /&gt;
is built into the target compiler and the STRIDE environment needs to&lt;br /&gt;
be adjusted to also include the macro. Typically this requires the user&lt;br /&gt;
to put one or more defines (-D options) on the STRIDE compiler &lt;br /&gt;
commandline. &lt;br /&gt;
&lt;br /&gt;
As an example, in one case, compilation of the local stdlib.h file&lt;br /&gt;
yielded the following error message: &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;C:/Apps/QDSP6/release_1.0.00/tools/dinkumware/include/common/stdlib.h&amp;quot;, line&lt;br /&gt;
  161: error: linkage specification is incompatible with previous &amp;quot;atexit&amp;quot;&lt;br /&gt;
  (declared at line 151)&lt;br /&gt;
&lt;br /&gt;
Examination of the stdlib.h file and included filed contents revealed that the &lt;br /&gt;
following macro definition needed to be added to the STRIDE compile commandline. &lt;br /&gt;
&lt;br /&gt;
  -D_HAS_STRICT_LINKAGE=0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Troubleshooting]]&lt;br /&gt;
[[Category:Compiler]]&lt;/div&gt;</summary>
		<author><name>Robg</name></author>
	</entry>
	<entry>
		<id>https://www.stridewiki.com/index.php?title=Studio:Scl_struct_sized&amp;diff=8264</id>
		<title>Studio:Scl struct sized</title>
		<link rel="alternate" type="text/html" href="https://www.stridewiki.com/index.php?title=Studio:Scl_struct_sized&amp;diff=8264"/>
		<updated>2008-11-18T19:34:29Z</updated>

		<summary type="html">&lt;p&gt;Robg: /* Example 2 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= The scl_struct_sized pragma =&lt;br /&gt;
&lt;br /&gt;
The scl_struct_sized pragma is used to identify a sized structure. A sized structure is a C programming convention for representing a structure whose size is variable and defined by one of the members of the structure.  This pragma is infrequently used, but must be used, whenever the programmer defined size does not match the C language size of the structure (as calculated by the sizeof macro).&lt;br /&gt;
&lt;br /&gt;
= STRIDE Version Support=&lt;br /&gt;
Available in STRIDE 3.0.0103 (StoneSteps Tower 3) and later versions&lt;br /&gt;
== Syntax ==&lt;br /&gt;
 #pragma scl_struct_sized(type-name, size-field)&lt;br /&gt;
 &lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; style=&amp;quot;align:left;&amp;quot;  &lt;br /&gt;
| width=&amp;quot;100&amp;quot; | &#039;&#039;&#039;Parameters&#039;&#039;&#039;&lt;br /&gt;
| width=&amp;quot;100&amp;quot; | &#039;&#039;&#039;Type&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;type-name&#039;&#039;&lt;br /&gt;
| Structure Type&lt;br /&gt;
| Identifies a structure type or structure instance whose runtime size is not the same as its C language size and contains a field whose value is the runtime size.&lt;br /&gt;
The following restrictions apply:&lt;br /&gt;
* The structure type may not be pointed to by a sized pointer.&lt;br /&gt;
* The structure type may not be a member of any other structure or union.&lt;br /&gt;
* The structure type may not be passed as a function parameter (but a pointer to it is allowed).&lt;br /&gt;
* The structure type may reside only within IN or INOUT memory blocks.&lt;br /&gt;
* If the last member of the structure is an array, the array&#039;s size is calculated based upon max-size - (size of struct&#039;s other members).&lt;br /&gt;
* If the last member of the structure is an array, the array&#039;s element type may not contain a sized structure or a conformant array (see [[scl_conform]]).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;size-field&#039;&#039;&lt;br /&gt;
| Member&lt;br /&gt;
| Identifies a field within the sized structure whose value determines the actual runtime size of the structure. The following restrictions apply:&lt;br /&gt;
* The type of the size-field must be an integral type (int, short, char).&lt;br /&gt;
* The value (at runtime) is expected to be greater than the type size of the structure (as determined by the sizeof macro).&lt;br /&gt;
* The size-field must reside within the same payload block as the sized structure.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
=== Example 1 ===&lt;br /&gt;
This example shows the declaration for a simple sized struct.&lt;br /&gt;
&amp;lt;source lang=c&amp;gt;&lt;br /&gt;
typedef struct {&lt;br /&gt;
    int size;&lt;br /&gt;
    int someJunk;&lt;br /&gt;
    int moreJunk;&lt;br /&gt;
} SimpleSizedStruct;&lt;br /&gt;
&lt;br /&gt;
extern void f(SimpleSizedStruct* ps);&lt;br /&gt;
&lt;br /&gt;
#ifdef _SCL&lt;br /&gt;
#pragma scl_function(f)&lt;br /&gt;
#pragma scl_struct_sized(*f.ps, size);&lt;br /&gt;
#endif&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Example 2 ===&lt;br /&gt;
This example shows the declaration of a sized struct containing a variable length array whose actual length is proportional to the value of the size field. In this case the array bound is declared as 1, but by convention is really controlled by the value of the size field. &lt;br /&gt;
&amp;lt;source lang=c&amp;gt;&lt;br /&gt;
&lt;br /&gt;
typedef struct {&lt;br /&gt;
    int size;&lt;br /&gt;
    int someJunk;&lt;br /&gt;
    int ary[1];  // variable length array whose length depends on the size&lt;br /&gt;
} ConformantArraySizedStruct;&lt;br /&gt;
&lt;br /&gt;
extern void f(ConformantArraySizedStruct* ps);&lt;br /&gt;
&lt;br /&gt;
#ifdef _SCL&lt;br /&gt;
#pragma scl_function(f)&lt;br /&gt;
#pragma scl_struct_sized(*f.ps, size);&lt;br /&gt;
#endif&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* For additional information on scl_string, including constraints, refer to the section on scl_struct_sized in the [[Media:s2sSCLReferenceGuide.pdf|SCL Reference Guide]].&lt;br /&gt;
&lt;br /&gt;
[[Category: SCL]]&lt;/div&gt;</summary>
		<author><name>Robg</name></author>
	</entry>
	<entry>
		<id>https://www.stridewiki.com/index.php?title=Studio:Scl_brew_class&amp;diff=8258</id>
		<title>Studio:Scl brew class</title>
		<link rel="alternate" type="text/html" href="https://www.stridewiki.com/index.php?title=Studio:Scl_brew_class&amp;diff=8258"/>
		<updated>2008-11-05T19:26:33Z</updated>

		<summary type="html">&lt;p&gt;Robg: /* Example */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= The scl_brew_class pragma=&lt;br /&gt;
The scl_brew_class pragma is for Brew API developers who simulate C++ classes and virtual functions within ANSI C by following a fixed set of conventions. The conventions are used to create classes referred to as &amp;quot;Brew Classes.&amp;quot;  A Brew class is formed from a C structure type that is used to represent the C++ virtual function table. The structure must contain members which are of the type pointer to function. Furthermore, these members must point to a function type whose first parameter is a pointer to this same structure type. &lt;br /&gt;
&lt;br /&gt;
The C-based class must adhere to the following rules:&lt;br /&gt;
* The class is structured using a C structure typedef&lt;br /&gt;
* Function pointers are used to define the class methods&lt;br /&gt;
* Each class method is required to have a parameter, which is used to pass in a reference to the object upon which the method will act&lt;br /&gt;
* There must be at least one SCL-compliant function that references the class typedef.&lt;br /&gt;
&lt;br /&gt;
== Syntax ==&lt;br /&gt;
 #pragma scl_brew_class(structure-name)&lt;br /&gt;
&lt;br /&gt;
 #pragma scl_brew_class(structure-name, field-name 1 .. n)&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; style=&amp;quot;align:left;&amp;quot;  &lt;br /&gt;
| &#039;&#039;&#039;Parameters&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Type&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;structure-name&#039;&#039;&lt;br /&gt;
| Type&lt;br /&gt;
| Name of the structure that defines the C-based class&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;field-name 1 .. n&#039;&#039;&lt;br /&gt;
| Member&lt;br /&gt;
| Name of the field that defines one or more methods&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
The method names are automatically generated based on the class name and field name as follows:&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;class-name&amp;gt;_&amp;lt;field-name&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For additional information on scl_brew_class, including constraints, refer to the section on scl_brew_class in the [[Media:s2sSCLReferenceGuide.pdf|SCL Reference Guide]].&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&amp;lt;source lang=c&amp;gt;&lt;br /&gt;
// Const defining a maximum string length //&lt;br /&gt;
#define MAX_STR_SIZE 64&lt;br /&gt;
&lt;br /&gt;
// Structure type used to define a C-based class. Each //&lt;br /&gt;
// method is defined as a pointer to a function whose  //&lt;br /&gt;
// first parameter is a pointer to the structure type. //&lt;br /&gt;
typedef struct _myObj MyObj;&lt;br /&gt;
struct _myObj&lt;br /&gt;
{&lt;br /&gt;
  int   ( *method1 )(MyObj * t, int x, int y);&lt;br /&gt;
  void  ( *method2 )(MyObj * t, char * str);&lt;br /&gt;
  char* ( *method3 )(MyObj * t);&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
// createMyObj - Interface used to instantiate the C-based object.     //&lt;br /&gt;
// *ppObj will be declared as opaque to obtain the object&#039;s address.   //&lt;br /&gt;
// The object&#039;s address can then be passed in as the first             //&lt;br /&gt;
// parameter for each of the method calls.                             //&lt;br /&gt;
void createMyObj (MyObj ** ppObj);&lt;br /&gt;
static  MyObj * bindMyObj(void * pObj)&lt;br /&gt;
{&lt;br /&gt;
  return (MyObj *) pObj;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
#ifdef _SCL&lt;br /&gt;
// Use the scl_function pragma to associate an object with the        //&lt;br /&gt;
// interface.                                                         //&lt;br /&gt;
// Use the scl_ptr pragma to define the parameter ppObj as an OUT     //&lt;br /&gt;
// pointer.                                                           //&lt;br /&gt;
// Use the scl_ptr_opaque pragma to opaque the child pointer to the   //&lt;br /&gt;
// object.                                                            //&lt;br /&gt;
#pragma scl_function(createMyObj)&lt;br /&gt;
#pragma scl_ptr(createMyObj, ppObj, &amp;quot;OUT&amp;quot;, &amp;quot;PRIVATE&amp;quot;)&lt;br /&gt;
#pragma scl_ptr_opaque(createMyObj, *ppObj)&lt;br /&gt;
// Use the scl_function pragma to associate an object with the interface //&lt;br /&gt;
#pragma scl_function(bindMyObj)&lt;br /&gt;
#pragma scl_brew_class(MyObj)&lt;br /&gt;
// Use the scl_string pragma to declare the char pointers as ASCII strings. //&lt;br /&gt;
// The method names are derived from &amp;lt;class-name&amp;gt;, &amp;lt;field-name&amp;gt;             //&lt;br /&gt;
#pragma scl_string(MyObj_method2, str, MAX_STR_SIZE)&lt;br /&gt;
#pragma scl_string(MyObj_method3(), MAX_STR_SIZE)&lt;br /&gt;
#endif //_SCL//&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category: SCL]]&lt;/div&gt;</summary>
		<author><name>Robg</name></author>
	</entry>
	<entry>
		<id>https://www.stridewiki.com/index.php?title=Scl_test_teardown&amp;diff=8257</id>
		<title>Scl test teardown</title>
		<link rel="alternate" type="text/html" href="https://www.stridewiki.com/index.php?title=Scl_test_teardown&amp;diff=8257"/>
		<updated>2008-11-05T19:06:00Z</updated>

		<summary type="html">&lt;p&gt;Robg: /* Example */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= The scl_test_teardown pragma =&lt;br /&gt;
&lt;br /&gt;
The scl_test_teardown pragma declares a member method to be a teardown fixture for an existing test unit. The teardown method will be called after the execution of each test method.&lt;br /&gt;
&lt;br /&gt;
== Syntax ==&lt;br /&gt;
&lt;br /&gt;
 #pragma scl_test_teardown(test-unit-name, function-name)&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; style=&amp;quot;align:left;&amp;quot;  &lt;br /&gt;
| &#039;&#039;&#039;Parameters&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Type&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;test-unit-name&#039;&#039;&lt;br /&gt;
| String&lt;br /&gt;
| Name of a captured test unit.&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;function-name&#039;&#039;&lt;br /&gt;
| String&lt;br /&gt;
| Name of a member function of the test unit to be used as a teardown fixture. &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
* This pragma identifies the teardown fixture of an existing test unit, i.e. either a class with [[scl_test_class]] applied to it, or a function name with scl_test_flist applied to it.&lt;br /&gt;
* There may be only one teardown fixture per test unit.&lt;br /&gt;
* The test unit name must match the class-name parameter of an [[scl_test_class|scl_test_class pragma]], or the test-unit-name parameter of an [[scl_test_flist|scl_test_flist pragma]] that has already been declared.&lt;br /&gt;
* This pragma can only work in STRIDE version 2.1 or later.&lt;br /&gt;
* The host PC must also have a recent distribution of ActiveState Perl installed.&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&amp;lt;source lang=cpp&amp;gt;&lt;br /&gt;
#include &amp;lt;srtest.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
class RuntimeServices_fixtures {&lt;br /&gt;
public:&lt;br /&gt;
  void setup (void) &lt;br /&gt;
  {&lt;br /&gt;
    srTestCaseAddComment(srTEST_CASE_DEFAULT, srNULL, &amp;quot;setup called&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  void teardown (void) &lt;br /&gt;
  {&lt;br /&gt;
    srTestCaseAddComment(srTEST_CASE_DEFAULT, srNULL, &amp;quot;teardown called&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  void tc_ExpectPass(void) &lt;br /&gt;
  {&lt;br /&gt;
    srTestCaseAddComment(srTEST_CASE_DEFAULT, srNULL, &amp;quot;this test should pass&amp;quot;);&lt;br /&gt;
    srTestCaseSetStatus(srTEST_CASE_DEFAULT, srTEST_PASS, 0); &lt;br /&gt;
  }&lt;br /&gt;
  void tc_ExpectFail(void) &lt;br /&gt;
  {&lt;br /&gt;
    srTestCaseAddComment(srTEST_CASE_DEFAULT, srNULL, &amp;quot;this test should fail&amp;quot;);&lt;br /&gt;
    srTestCaseSetStatus(srTEST_CASE_DEFAULT, srTEST_FAIL, 0); &lt;br /&gt;
  }&lt;br /&gt;
};&lt;br /&gt;
    &lt;br /&gt;
#ifdef _SCL&lt;br /&gt;
#pragma scl_test_class(RuntimeServices_fixtures)&lt;br /&gt;
#pragma scl_test_setup(RuntimeServices_fixtures, setup)&lt;br /&gt;
#pragma scl_test_teardown(RuntimeServices_fixtures, teardown)&lt;br /&gt;
#endif&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* Refer to the [[Test Units]] page for more information on capturing and qualifying test classes.&lt;br /&gt;
&lt;br /&gt;
[[Category: Test Units]]&lt;br /&gt;
[[Category: SCL]]&lt;/div&gt;</summary>
		<author><name>Robg</name></author>
	</entry>
	<entry>
		<id>https://www.stridewiki.com/index.php?title=Scl_test_setup&amp;diff=8256</id>
		<title>Scl test setup</title>
		<link rel="alternate" type="text/html" href="https://www.stridewiki.com/index.php?title=Scl_test_setup&amp;diff=8256"/>
		<updated>2008-11-05T19:05:20Z</updated>

		<summary type="html">&lt;p&gt;Robg: /* Example */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= The scl_test_setup pragma =&lt;br /&gt;
&lt;br /&gt;
The scl_test_setup pragma declares a member method to be a setup fixture for an existing test unit. The setup method will be called before the execution of each test method.&lt;br /&gt;
&lt;br /&gt;
== Syntax ==&lt;br /&gt;
&lt;br /&gt;
 #pragma scl_test_setup(test-unit-name, function-name)&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; style=&amp;quot;align:left;&amp;quot;  &lt;br /&gt;
| &#039;&#039;&#039;Parameters&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Type&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;test-unit-name&#039;&#039;&lt;br /&gt;
| String&lt;br /&gt;
| Name of a captured test unit.&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;function-name&#039;&#039;&lt;br /&gt;
| String&lt;br /&gt;
| Name of a member function of the test unit to be used as a setup fixture. &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
* This pragma identifies the setup fixture of an existing test unit, i.e. either a class with [[scl_test_class]] applied to it, or a function name with scl_test_flist applied to it.&lt;br /&gt;
* There may be only one setup fixture per test unit.&lt;br /&gt;
* The test unit name must match the class-name parameter of an [[scl_test_class|scl_test_class pragma]], or the test-unit-name parameter of an [[scl_test_flist|scl_test_flist pragma]] that has already been declared.&lt;br /&gt;
* This pragma can only work in STRIDE version 2.1 or later.&lt;br /&gt;
* The host PC must also have a recent distribution of ActiveState Perl installed.&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&amp;lt;source lang=cpp&amp;gt;&lt;br /&gt;
#include &amp;lt;srtest.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
class RuntimeServices_fixtures {&lt;br /&gt;
public:&lt;br /&gt;
  void setup (void) &lt;br /&gt;
  {&lt;br /&gt;
    srTestCaseAddComment(srTEST_CASE_DEFAULT, srNULL, &amp;quot;setup called&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  void teardown (void) &lt;br /&gt;
  {&lt;br /&gt;
    srTestCaseAddComment(srTEST_CASE_DEFAULT, srNULL, &amp;quot;teardown called&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  void tc_ExpectPass(void) &lt;br /&gt;
  {&lt;br /&gt;
    srTestCaseAddComment(srTEST_CASE_DEFAULT, srNULL, &amp;quot;this test should pass&amp;quot;);&lt;br /&gt;
    srTestCaseSetStatus(srTEST_CASE_DEFAULT, srTEST_PASS, 0); &lt;br /&gt;
  }&lt;br /&gt;
  void tc_ExpectFail(void) &lt;br /&gt;
  {&lt;br /&gt;
    srTestCaseAddComment(srTEST_CASE_DEFAULT, srNULL, &amp;quot;this test should fail&amp;quot;);&lt;br /&gt;
    srTestCaseSetStatus(srTEST_CASE_DEFAULT, srTEST_FAIL, 0); &lt;br /&gt;
  }&lt;br /&gt;
};&lt;br /&gt;
    &lt;br /&gt;
#ifdef _SCL&lt;br /&gt;
#pragma scl_test_class(RuntimeServices_fixtures)&lt;br /&gt;
#pragma scl_test_setup(RuntimeServices_fixtures, setup)&lt;br /&gt;
#pragma scl_test_teardown(RuntimeServices_fixtures, teardown)&lt;br /&gt;
#endif&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* Refer to the [[Test Units]] page for more information on capturing and qualifying test classes.&lt;br /&gt;
&lt;br /&gt;
[[Category: Test Units]]&lt;br /&gt;
[[Category: SCL]]&lt;/div&gt;</summary>
		<author><name>Robg</name></author>
	</entry>
	<entry>
		<id>https://www.stridewiki.com/index.php?title=Studio:Scl_struct_sized&amp;diff=8255</id>
		<title>Studio:Scl struct sized</title>
		<link rel="alternate" type="text/html" href="https://www.stridewiki.com/index.php?title=Studio:Scl_struct_sized&amp;diff=8255"/>
		<updated>2008-11-05T18:56:16Z</updated>

		<summary type="html">&lt;p&gt;Robg: /* Example 2 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= The scl_struct_sized pragma =&lt;br /&gt;
&lt;br /&gt;
The scl_struct_sized pragma is used to identify a sized structure. A sized structure is a C programming convention for representing a structure whose size is variable and defined by one of the members of the structure.  This pragma is infrequently used, but must be used, whenever the programmer defined size does not match the C language size of the structure (as calculated by the sizeof macro).&lt;br /&gt;
&lt;br /&gt;
= STRIDE Version Support=&lt;br /&gt;
Available in STRIDE 3.0.0103 (StoneSteps Tower 3) and later versions&lt;br /&gt;
== Syntax ==&lt;br /&gt;
 #pragma scl_struct_sized(type-name, size-field)&lt;br /&gt;
 &lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; style=&amp;quot;align:left;&amp;quot;  &lt;br /&gt;
| width=&amp;quot;100&amp;quot; | &#039;&#039;&#039;Parameters&#039;&#039;&#039;&lt;br /&gt;
| width=&amp;quot;100&amp;quot; | &#039;&#039;&#039;Type&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;type-name&#039;&#039;&lt;br /&gt;
| Structure Type&lt;br /&gt;
| Identifies a structure type or structure instance whose runtime size is not the same as its C language size and contains a field whose value is the runtime size.&lt;br /&gt;
The following restrictions apply:&lt;br /&gt;
* The structure type may not be pointed to by a sized pointer.&lt;br /&gt;
* The structure type may not be a member of any other structure or union.&lt;br /&gt;
* The structure type may not be passed as a function parameter (but a pointer to it is allowed).&lt;br /&gt;
* The structure type may reside only within IN or INOUT memory blocks.&lt;br /&gt;
* If the last member of the structure is an array, the array&#039;s size is calculated based upon max-size - (size of struct&#039;s other members).&lt;br /&gt;
* If the last member of the structure is an array, the array&#039;s element type may not contain a sized structure or a conformant array (see [[scl_conform]]).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;size-field&#039;&#039;&lt;br /&gt;
| Member&lt;br /&gt;
| Identifies a field within the sized structure whose value determines the actual runtime size of the structure. The following restrictions apply:&lt;br /&gt;
* The type of the size-field must be an integral type (int, short, char).&lt;br /&gt;
* The value (at runtime) is expected to be greater than the type size of the structure (as determined by the sizeof macro).&lt;br /&gt;
* The size-field must reside within the same payload block as the sized structure.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
=== Example 1 ===&lt;br /&gt;
This example shows the declaration for a simple sized struct.&lt;br /&gt;
&amp;lt;source lang=c&amp;gt;&lt;br /&gt;
typedef struct {&lt;br /&gt;
    int size;&lt;br /&gt;
    int someJunk;&lt;br /&gt;
    int moreJunk;&lt;br /&gt;
} SimpleSizedStruct;&lt;br /&gt;
&lt;br /&gt;
extern void f(SimpleSizedStruct* ps);&lt;br /&gt;
&lt;br /&gt;
#ifdef _SCL&lt;br /&gt;
#pragma scl_function(f)&lt;br /&gt;
#pragma scl_struct_sized(*f.ps, size);&lt;br /&gt;
#endif&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Example 2 ===&lt;br /&gt;
This example shows the declaration of a sized struct containing a variable length array whose actual length is proportional to the value of the size field. In this case the array bound is defined as zero but another commonly used bound is 1. (An array bound of zero is not officially ANSI C, and is usually supported only under specific compiler option.)&lt;br /&gt;
&amp;lt;source lang=c&amp;gt;&lt;br /&gt;
&lt;br /&gt;
typedef struct {&lt;br /&gt;
    int size;&lt;br /&gt;
    int someJunk;&lt;br /&gt;
    int ary[0];  // variable length array whose length depends on the size&lt;br /&gt;
} ConformantArraySizedStruct;&lt;br /&gt;
&lt;br /&gt;
extern void f(ConformantArraySizedStruct* ps);&lt;br /&gt;
&lt;br /&gt;
#ifdef _SCL&lt;br /&gt;
#pragma scl_function(f)&lt;br /&gt;
#pragma scl_struct_sized(*f.ps, size);&lt;br /&gt;
#endif&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* For additional information on scl_string, including constraints, refer to the section on scl_struct_sized in the [[Media:s2sSCLReferenceGuide.pdf|SCL Reference Guide]].&lt;br /&gt;
&lt;br /&gt;
[[Category: SCL]]&lt;/div&gt;</summary>
		<author><name>Robg</name></author>
	</entry>
	<entry>
		<id>https://www.stridewiki.com/index.php?title=Studio:Scl_struct_sized&amp;diff=8254</id>
		<title>Studio:Scl struct sized</title>
		<link rel="alternate" type="text/html" href="https://www.stridewiki.com/index.php?title=Studio:Scl_struct_sized&amp;diff=8254"/>
		<updated>2008-11-05T18:54:43Z</updated>

		<summary type="html">&lt;p&gt;Robg: /* Example 2 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= The scl_struct_sized pragma =&lt;br /&gt;
&lt;br /&gt;
The scl_struct_sized pragma is used to identify a sized structure. A sized structure is a C programming convention for representing a structure whose size is variable and defined by one of the members of the structure.  This pragma is infrequently used, but must be used, whenever the programmer defined size does not match the C language size of the structure (as calculated by the sizeof macro).&lt;br /&gt;
&lt;br /&gt;
= STRIDE Version Support=&lt;br /&gt;
Available in STRIDE 3.0.0103 (StoneSteps Tower 3) and later versions&lt;br /&gt;
== Syntax ==&lt;br /&gt;
 #pragma scl_struct_sized(type-name, size-field)&lt;br /&gt;
 &lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; style=&amp;quot;align:left;&amp;quot;  &lt;br /&gt;
| width=&amp;quot;100&amp;quot; | &#039;&#039;&#039;Parameters&#039;&#039;&#039;&lt;br /&gt;
| width=&amp;quot;100&amp;quot; | &#039;&#039;&#039;Type&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;type-name&#039;&#039;&lt;br /&gt;
| Structure Type&lt;br /&gt;
| Identifies a structure type or structure instance whose runtime size is not the same as its C language size and contains a field whose value is the runtime size.&lt;br /&gt;
The following restrictions apply:&lt;br /&gt;
* The structure type may not be pointed to by a sized pointer.&lt;br /&gt;
* The structure type may not be a member of any other structure or union.&lt;br /&gt;
* The structure type may not be passed as a function parameter (but a pointer to it is allowed).&lt;br /&gt;
* The structure type may reside only within IN or INOUT memory blocks.&lt;br /&gt;
* If the last member of the structure is an array, the array&#039;s size is calculated based upon max-size - (size of struct&#039;s other members).&lt;br /&gt;
* If the last member of the structure is an array, the array&#039;s element type may not contain a sized structure or a conformant array (see [[scl_conform]]).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;size-field&#039;&#039;&lt;br /&gt;
| Member&lt;br /&gt;
| Identifies a field within the sized structure whose value determines the actual runtime size of the structure. The following restrictions apply:&lt;br /&gt;
* The type of the size-field must be an integral type (int, short, char).&lt;br /&gt;
* The value (at runtime) is expected to be greater than the type size of the structure (as determined by the sizeof macro).&lt;br /&gt;
* The size-field must reside within the same payload block as the sized structure.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
=== Example 1 ===&lt;br /&gt;
This example shows the declaration for a simple sized struct.&lt;br /&gt;
&amp;lt;source lang=c&amp;gt;&lt;br /&gt;
typedef struct {&lt;br /&gt;
    int size;&lt;br /&gt;
    int someJunk;&lt;br /&gt;
    int moreJunk;&lt;br /&gt;
} SimpleSizedStruct;&lt;br /&gt;
&lt;br /&gt;
extern void f(SimpleSizedStruct* ps);&lt;br /&gt;
&lt;br /&gt;
#ifdef _SCL&lt;br /&gt;
#pragma scl_function(f)&lt;br /&gt;
#pragma scl_struct_sized(*f.ps, size);&lt;br /&gt;
#endif&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Example 2 ===&lt;br /&gt;
This example shows the declaration of a sized struct containing a variable length array whose actual length is proportional to the value of the size field. In this case the array bound is defined as zero but another commonly used bound is 1. (An array bound of zero is not officially ANSI C, and is usually supported only under specific compiler option.)&lt;br /&gt;
&amp;lt;source lang=c&amp;gt;&lt;br /&gt;
&lt;br /&gt;
typedef struct {&lt;br /&gt;
    int size;&lt;br /&gt;
    int someJunk;&lt;br /&gt;
    int ary[0];  // variable length array whose length depends on the size&lt;br /&gt;
} ConformantArraySizedStruct;&lt;br /&gt;
&lt;br /&gt;
extern void f(SimpleSizedStruct* ps);&lt;br /&gt;
&lt;br /&gt;
#ifdef _SCL&lt;br /&gt;
#pragma scl_function(f)&lt;br /&gt;
#pragma scl_struct_sized(*f.ps, size);&lt;br /&gt;
#endif&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* For additional information on scl_string, including constraints, refer to the section on scl_struct_sized in the [[Media:s2sSCLReferenceGuide.pdf|SCL Reference Guide]].&lt;br /&gt;
&lt;br /&gt;
[[Category: SCL]]&lt;/div&gt;</summary>
		<author><name>Robg</name></author>
	</entry>
	<entry>
		<id>https://www.stridewiki.com/index.php?title=Studio:Scl_struct_sized&amp;diff=8253</id>
		<title>Studio:Scl struct sized</title>
		<link rel="alternate" type="text/html" href="https://www.stridewiki.com/index.php?title=Studio:Scl_struct_sized&amp;diff=8253"/>
		<updated>2008-11-05T18:54:12Z</updated>

		<summary type="html">&lt;p&gt;Robg: /* Example 1 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= The scl_struct_sized pragma =&lt;br /&gt;
&lt;br /&gt;
The scl_struct_sized pragma is used to identify a sized structure. A sized structure is a C programming convention for representing a structure whose size is variable and defined by one of the members of the structure.  This pragma is infrequently used, but must be used, whenever the programmer defined size does not match the C language size of the structure (as calculated by the sizeof macro).&lt;br /&gt;
&lt;br /&gt;
= STRIDE Version Support=&lt;br /&gt;
Available in STRIDE 3.0.0103 (StoneSteps Tower 3) and later versions&lt;br /&gt;
== Syntax ==&lt;br /&gt;
 #pragma scl_struct_sized(type-name, size-field)&lt;br /&gt;
 &lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; style=&amp;quot;align:left;&amp;quot;  &lt;br /&gt;
| width=&amp;quot;100&amp;quot; | &#039;&#039;&#039;Parameters&#039;&#039;&#039;&lt;br /&gt;
| width=&amp;quot;100&amp;quot; | &#039;&#039;&#039;Type&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;type-name&#039;&#039;&lt;br /&gt;
| Structure Type&lt;br /&gt;
| Identifies a structure type or structure instance whose runtime size is not the same as its C language size and contains a field whose value is the runtime size.&lt;br /&gt;
The following restrictions apply:&lt;br /&gt;
* The structure type may not be pointed to by a sized pointer.&lt;br /&gt;
* The structure type may not be a member of any other structure or union.&lt;br /&gt;
* The structure type may not be passed as a function parameter (but a pointer to it is allowed).&lt;br /&gt;
* The structure type may reside only within IN or INOUT memory blocks.&lt;br /&gt;
* If the last member of the structure is an array, the array&#039;s size is calculated based upon max-size - (size of struct&#039;s other members).&lt;br /&gt;
* If the last member of the structure is an array, the array&#039;s element type may not contain a sized structure or a conformant array (see [[scl_conform]]).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;size-field&#039;&#039;&lt;br /&gt;
| Member&lt;br /&gt;
| Identifies a field within the sized structure whose value determines the actual runtime size of the structure. The following restrictions apply:&lt;br /&gt;
* The type of the size-field must be an integral type (int, short, char).&lt;br /&gt;
* The value (at runtime) is expected to be greater than the type size of the structure (as determined by the sizeof macro).&lt;br /&gt;
* The size-field must reside within the same payload block as the sized structure.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
=== Example 1 ===&lt;br /&gt;
This example shows the declaration for a simple sized struct.&lt;br /&gt;
&amp;lt;source lang=c&amp;gt;&lt;br /&gt;
typedef struct {&lt;br /&gt;
    int size;&lt;br /&gt;
    int someJunk;&lt;br /&gt;
    int moreJunk;&lt;br /&gt;
} SimpleSizedStruct;&lt;br /&gt;
&lt;br /&gt;
extern void f(SimpleSizedStruct* ps);&lt;br /&gt;
&lt;br /&gt;
#ifdef _SCL&lt;br /&gt;
#pragma scl_function(f)&lt;br /&gt;
#pragma scl_struct_sized(*f.ps, size);&lt;br /&gt;
#endif&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Example 2 ===&lt;br /&gt;
This example shows the declaration of a sized struct containing a variable length array whose actual length is proportional to the value of the size field. In this case the array bound is defined as zero but another commonly used bound is 1. (An array bound of zero is not officially ANSI C, and is usually supported only under specific compiler option.)&lt;br /&gt;
&amp;lt;source lang=c&amp;gt;&lt;br /&gt;
&lt;br /&gt;
typedef struct {&lt;br /&gt;
    int size;&lt;br /&gt;
    int someJunk;&lt;br /&gt;
    int ary[0];  // variable length array whose length depends on the size&lt;br /&gt;
} ConformantArraySizedStruct;&lt;br /&gt;
&lt;br /&gt;
extern void f(SimpleSizedStruct* ps);&lt;br /&gt;
#pragma scl_function(f)&lt;br /&gt;
#pragma scl_struct_sized(*f.ps, size);&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* For additional information on scl_string, including constraints, refer to the section on scl_struct_sized in the [[Media:s2sSCLReferenceGuide.pdf|SCL Reference Guide]].&lt;br /&gt;
&lt;br /&gt;
[[Category: SCL]]&lt;/div&gt;</summary>
		<author><name>Robg</name></author>
	</entry>
	<entry>
		<id>https://www.stridewiki.com/index.php?title=Studio:Scl_struct_sized&amp;diff=8252</id>
		<title>Studio:Scl struct sized</title>
		<link rel="alternate" type="text/html" href="https://www.stridewiki.com/index.php?title=Studio:Scl_struct_sized&amp;diff=8252"/>
		<updated>2008-11-05T18:47:37Z</updated>

		<summary type="html">&lt;p&gt;Robg: /* Example 2 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= The scl_struct_sized pragma =&lt;br /&gt;
&lt;br /&gt;
The scl_struct_sized pragma is used to identify a sized structure. A sized structure is a C programming convention for representing a structure whose size is variable and defined by one of the members of the structure.  This pragma is infrequently used, but must be used, whenever the programmer defined size does not match the C language size of the structure (as calculated by the sizeof macro).&lt;br /&gt;
&lt;br /&gt;
= STRIDE Version Support=&lt;br /&gt;
Available in STRIDE 3.0.0103 (StoneSteps Tower 3) and later versions&lt;br /&gt;
== Syntax ==&lt;br /&gt;
 #pragma scl_struct_sized(type-name, size-field)&lt;br /&gt;
 &lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; style=&amp;quot;align:left;&amp;quot;  &lt;br /&gt;
| width=&amp;quot;100&amp;quot; | &#039;&#039;&#039;Parameters&#039;&#039;&#039;&lt;br /&gt;
| width=&amp;quot;100&amp;quot; | &#039;&#039;&#039;Type&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;type-name&#039;&#039;&lt;br /&gt;
| Structure Type&lt;br /&gt;
| Identifies a structure type or structure instance whose runtime size is not the same as its C language size and contains a field whose value is the runtime size.&lt;br /&gt;
The following restrictions apply:&lt;br /&gt;
* The structure type may not be pointed to by a sized pointer.&lt;br /&gt;
* The structure type may not be a member of any other structure or union.&lt;br /&gt;
* The structure type may not be passed as a function parameter (but a pointer to it is allowed).&lt;br /&gt;
* The structure type may reside only within IN or INOUT memory blocks.&lt;br /&gt;
* If the last member of the structure is an array, the array&#039;s size is calculated based upon max-size - (size of struct&#039;s other members).&lt;br /&gt;
* If the last member of the structure is an array, the array&#039;s element type may not contain a sized structure or a conformant array (see [[scl_conform]]).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;size-field&#039;&#039;&lt;br /&gt;
| Member&lt;br /&gt;
| Identifies a field within the sized structure whose value determines the actual runtime size of the structure. The following restrictions apply:&lt;br /&gt;
* The type of the size-field must be an integral type (int, short, char).&lt;br /&gt;
* The value (at runtime) is expected to be greater than the type size of the structure (as determined by the sizeof macro).&lt;br /&gt;
* The size-field must reside within the same payload block as the sized structure.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
=== Example 1 ===&lt;br /&gt;
This example shows the declaration for a simple sized struct.&lt;br /&gt;
&amp;lt;source lang=c&amp;gt;&lt;br /&gt;
typedef struct {&lt;br /&gt;
    int size;&lt;br /&gt;
    int someJunk;&lt;br /&gt;
    int moreJunk;&lt;br /&gt;
} SimpleSizedStruct;&lt;br /&gt;
&lt;br /&gt;
extern void f(SimpleSizedStruct* ps);&lt;br /&gt;
#pragma scl_function(f)&lt;br /&gt;
#pragma scl_struct_sized(*f.ps, size);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Example 2 ===&lt;br /&gt;
This example shows the declaration of a sized struct containing a variable length array whose actual length is proportional to the value of the size field. In this case the array bound is defined as zero but another commonly used bound is 1. (An array bound of zero is not officially ANSI C, and is usually supported only under specific compiler option.)&lt;br /&gt;
&amp;lt;source lang=c&amp;gt;&lt;br /&gt;
&lt;br /&gt;
typedef struct {&lt;br /&gt;
    int size;&lt;br /&gt;
    int someJunk;&lt;br /&gt;
    int ary[0];  // variable length array whose length depends on the size&lt;br /&gt;
} ConformantArraySizedStruct;&lt;br /&gt;
&lt;br /&gt;
extern void f(SimpleSizedStruct* ps);&lt;br /&gt;
#pragma scl_function(f)&lt;br /&gt;
#pragma scl_struct_sized(*f.ps, size);&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* For additional information on scl_string, including constraints, refer to the section on scl_struct_sized in the [[Media:s2sSCLReferenceGuide.pdf|SCL Reference Guide]].&lt;br /&gt;
&lt;br /&gt;
[[Category: SCL]]&lt;/div&gt;</summary>
		<author><name>Robg</name></author>
	</entry>
	<entry>
		<id>https://www.stridewiki.com/index.php?title=Studio:Scl_struct_sized&amp;diff=8251</id>
		<title>Studio:Scl struct sized</title>
		<link rel="alternate" type="text/html" href="https://www.stridewiki.com/index.php?title=Studio:Scl_struct_sized&amp;diff=8251"/>
		<updated>2008-11-05T18:46:54Z</updated>

		<summary type="html">&lt;p&gt;Robg: /* Example 2 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= The scl_struct_sized pragma =&lt;br /&gt;
&lt;br /&gt;
The scl_struct_sized pragma is used to identify a sized structure. A sized structure is a C programming convention for representing a structure whose size is variable and defined by one of the members of the structure.  This pragma is infrequently used, but must be used, whenever the programmer defined size does not match the C language size of the structure (as calculated by the sizeof macro).&lt;br /&gt;
&lt;br /&gt;
= STRIDE Version Support=&lt;br /&gt;
Available in STRIDE 3.0.0103 (StoneSteps Tower 3) and later versions&lt;br /&gt;
== Syntax ==&lt;br /&gt;
 #pragma scl_struct_sized(type-name, size-field)&lt;br /&gt;
 &lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; style=&amp;quot;align:left;&amp;quot;  &lt;br /&gt;
| width=&amp;quot;100&amp;quot; | &#039;&#039;&#039;Parameters&#039;&#039;&#039;&lt;br /&gt;
| width=&amp;quot;100&amp;quot; | &#039;&#039;&#039;Type&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;type-name&#039;&#039;&lt;br /&gt;
| Structure Type&lt;br /&gt;
| Identifies a structure type or structure instance whose runtime size is not the same as its C language size and contains a field whose value is the runtime size.&lt;br /&gt;
The following restrictions apply:&lt;br /&gt;
* The structure type may not be pointed to by a sized pointer.&lt;br /&gt;
* The structure type may not be a member of any other structure or union.&lt;br /&gt;
* The structure type may not be passed as a function parameter (but a pointer to it is allowed).&lt;br /&gt;
* The structure type may reside only within IN or INOUT memory blocks.&lt;br /&gt;
* If the last member of the structure is an array, the array&#039;s size is calculated based upon max-size - (size of struct&#039;s other members).&lt;br /&gt;
* If the last member of the structure is an array, the array&#039;s element type may not contain a sized structure or a conformant array (see [[scl_conform]]).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;size-field&#039;&#039;&lt;br /&gt;
| Member&lt;br /&gt;
| Identifies a field within the sized structure whose value determines the actual runtime size of the structure. The following restrictions apply:&lt;br /&gt;
* The type of the size-field must be an integral type (int, short, char).&lt;br /&gt;
* The value (at runtime) is expected to be greater than the type size of the structure (as determined by the sizeof macro).&lt;br /&gt;
* The size-field must reside within the same payload block as the sized structure.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
=== Example 1 ===&lt;br /&gt;
This example shows the declaration for a simple sized struct.&lt;br /&gt;
&amp;lt;source lang=c&amp;gt;&lt;br /&gt;
typedef struct {&lt;br /&gt;
    int size;&lt;br /&gt;
    int someJunk;&lt;br /&gt;
    int moreJunk;&lt;br /&gt;
} SimpleSizedStruct;&lt;br /&gt;
&lt;br /&gt;
extern void f(SimpleSizedStruct* ps);&lt;br /&gt;
#pragma scl_function(f)&lt;br /&gt;
#pragma scl_struct_sized(*f.ps, size);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Example 2 ===&lt;br /&gt;
This example shows the declaration of a sized struct containing a variable length array whose actual length is proportional to the value of the size field. In this case the array bound is defined as zero but another common bound by convention is 1. (An array bound of 0 is not offically ANSI C, and is usually supported only under specific compiler option.)&lt;br /&gt;
&amp;lt;source lang=c&amp;gt;&lt;br /&gt;
&lt;br /&gt;
typedef struct {&lt;br /&gt;
    int size;&lt;br /&gt;
    int someJunk;&lt;br /&gt;
    int ary[0];  // variable length array whose length depends on the size&lt;br /&gt;
} ConformantArraySizedStruct;&lt;br /&gt;
&lt;br /&gt;
extern void f(SimpleSizedStruct* ps);&lt;br /&gt;
#pragma scl_function(f)&lt;br /&gt;
#pragma scl_struct_sized(*f.ps, size);&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* For additional information on scl_string, including constraints, refer to the section on scl_struct_sized in the [[Media:s2sSCLReferenceGuide.pdf|SCL Reference Guide]].&lt;br /&gt;
&lt;br /&gt;
[[Category: SCL]]&lt;/div&gt;</summary>
		<author><name>Robg</name></author>
	</entry>
	<entry>
		<id>https://www.stridewiki.com/index.php?title=Studio:Scl_struct_sized&amp;diff=8250</id>
		<title>Studio:Scl struct sized</title>
		<link rel="alternate" type="text/html" href="https://www.stridewiki.com/index.php?title=Studio:Scl_struct_sized&amp;diff=8250"/>
		<updated>2008-11-05T18:45:05Z</updated>

		<summary type="html">&lt;p&gt;Robg: /* Example 2 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= The scl_struct_sized pragma =&lt;br /&gt;
&lt;br /&gt;
The scl_struct_sized pragma is used to identify a sized structure. A sized structure is a C programming convention for representing a structure whose size is variable and defined by one of the members of the structure.  This pragma is infrequently used, but must be used, whenever the programmer defined size does not match the C language size of the structure (as calculated by the sizeof macro).&lt;br /&gt;
&lt;br /&gt;
= STRIDE Version Support=&lt;br /&gt;
Available in STRIDE 3.0.0103 (StoneSteps Tower 3) and later versions&lt;br /&gt;
== Syntax ==&lt;br /&gt;
 #pragma scl_struct_sized(type-name, size-field)&lt;br /&gt;
 &lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; style=&amp;quot;align:left;&amp;quot;  &lt;br /&gt;
| width=&amp;quot;100&amp;quot; | &#039;&#039;&#039;Parameters&#039;&#039;&#039;&lt;br /&gt;
| width=&amp;quot;100&amp;quot; | &#039;&#039;&#039;Type&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;type-name&#039;&#039;&lt;br /&gt;
| Structure Type&lt;br /&gt;
| Identifies a structure type or structure instance whose runtime size is not the same as its C language size and contains a field whose value is the runtime size.&lt;br /&gt;
The following restrictions apply:&lt;br /&gt;
* The structure type may not be pointed to by a sized pointer.&lt;br /&gt;
* The structure type may not be a member of any other structure or union.&lt;br /&gt;
* The structure type may not be passed as a function parameter (but a pointer to it is allowed).&lt;br /&gt;
* The structure type may reside only within IN or INOUT memory blocks.&lt;br /&gt;
* If the last member of the structure is an array, the array&#039;s size is calculated based upon max-size - (size of struct&#039;s other members).&lt;br /&gt;
* If the last member of the structure is an array, the array&#039;s element type may not contain a sized structure or a conformant array (see [[scl_conform]]).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;size-field&#039;&#039;&lt;br /&gt;
| Member&lt;br /&gt;
| Identifies a field within the sized structure whose value determines the actual runtime size of the structure. The following restrictions apply:&lt;br /&gt;
* The type of the size-field must be an integral type (int, short, char).&lt;br /&gt;
* The value (at runtime) is expected to be greater than the type size of the structure (as determined by the sizeof macro).&lt;br /&gt;
* The size-field must reside within the same payload block as the sized structure.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
=== Example 1 ===&lt;br /&gt;
This example shows the declaration for a simple sized struct.&lt;br /&gt;
&amp;lt;source lang=c&amp;gt;&lt;br /&gt;
typedef struct {&lt;br /&gt;
    int size;&lt;br /&gt;
    int someJunk;&lt;br /&gt;
    int moreJunk;&lt;br /&gt;
} SimpleSizedStruct;&lt;br /&gt;
&lt;br /&gt;
extern void f(SimpleSizedStruct* ps);&lt;br /&gt;
#pragma scl_function(f)&lt;br /&gt;
#pragma scl_struct_sized(*f.ps, size);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Example 2 ===&lt;br /&gt;
This example shows the declaration of a sized struct containing a variable length array whose actual length is proportional to the value of the size field. &lt;br /&gt;
&amp;lt;source lang=c&amp;gt;&lt;br /&gt;
&lt;br /&gt;
typedef struct {&lt;br /&gt;
    int size;&lt;br /&gt;
    int someJunk;&lt;br /&gt;
    int ary[0];  // variable length array whose length depends on the size&lt;br /&gt;
} ConformantArraySizedStruct;&lt;br /&gt;
&lt;br /&gt;
extern void f(SimpleSizedStruct* ps);&lt;br /&gt;
#pragma scl_function(f)&lt;br /&gt;
#pragma scl_struct_sized(*f.ps, size);&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* For additional information on scl_string, including constraints, refer to the section on scl_struct_sized in the [[Media:s2sSCLReferenceGuide.pdf|SCL Reference Guide]].&lt;br /&gt;
&lt;br /&gt;
[[Category: SCL]]&lt;/div&gt;</summary>
		<author><name>Robg</name></author>
	</entry>
	<entry>
		<id>https://www.stridewiki.com/index.php?title=Studio:Scl_struct_sized&amp;diff=8249</id>
		<title>Studio:Scl struct sized</title>
		<link rel="alternate" type="text/html" href="https://www.stridewiki.com/index.php?title=Studio:Scl_struct_sized&amp;diff=8249"/>
		<updated>2008-11-05T18:39:58Z</updated>

		<summary type="html">&lt;p&gt;Robg: /* Syntax */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= The scl_struct_sized pragma =&lt;br /&gt;
&lt;br /&gt;
The scl_struct_sized pragma is used to identify a sized structure. A sized structure is a C programming convention for representing a structure whose size is variable and defined by one of the members of the structure.  This pragma is infrequently used, but must be used, whenever the programmer defined size does not match the C language size of the structure (as calculated by the sizeof macro).&lt;br /&gt;
&lt;br /&gt;
= STRIDE Version Support=&lt;br /&gt;
Available in STRIDE 3.0.0103 (StoneSteps Tower 3) and later versions&lt;br /&gt;
== Syntax ==&lt;br /&gt;
 #pragma scl_struct_sized(type-name, size-field)&lt;br /&gt;
 &lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; style=&amp;quot;align:left;&amp;quot;  &lt;br /&gt;
| width=&amp;quot;100&amp;quot; | &#039;&#039;&#039;Parameters&#039;&#039;&#039;&lt;br /&gt;
| width=&amp;quot;100&amp;quot; | &#039;&#039;&#039;Type&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;type-name&#039;&#039;&lt;br /&gt;
| Structure Type&lt;br /&gt;
| Identifies a structure type or structure instance whose runtime size is not the same as its C language size and contains a field whose value is the runtime size.&lt;br /&gt;
The following restrictions apply:&lt;br /&gt;
* The structure type may not be pointed to by a sized pointer.&lt;br /&gt;
* The structure type may not be a member of any other structure or union.&lt;br /&gt;
* The structure type may not be passed as a function parameter (but a pointer to it is allowed).&lt;br /&gt;
* The structure type may reside only within IN or INOUT memory blocks.&lt;br /&gt;
* If the last member of the structure is an array, the array&#039;s size is calculated based upon max-size - (size of struct&#039;s other members).&lt;br /&gt;
* If the last member of the structure is an array, the array&#039;s element type may not contain a sized structure or a conformant array (see [[scl_conform]]).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;size-field&#039;&#039;&lt;br /&gt;
| Member&lt;br /&gt;
| Identifies a field within the sized structure whose value determines the actual runtime size of the structure. The following restrictions apply:&lt;br /&gt;
* The type of the size-field must be an integral type (int, short, char).&lt;br /&gt;
* The value (at runtime) is expected to be greater than the type size of the structure (as determined by the sizeof macro).&lt;br /&gt;
* The size-field must reside within the same payload block as the sized structure.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
=== Example 1 ===&lt;br /&gt;
This example shows the declaration for a simple sized struct.&lt;br /&gt;
&amp;lt;source lang=c&amp;gt;&lt;br /&gt;
typedef struct {&lt;br /&gt;
    int size;&lt;br /&gt;
    int someJunk;&lt;br /&gt;
    int moreJunk;&lt;br /&gt;
} SimpleSizedStruct;&lt;br /&gt;
&lt;br /&gt;
extern void f(SimpleSizedStruct* ps);&lt;br /&gt;
#pragma scl_function(f)&lt;br /&gt;
#pragma scl_struct_sized(*f.ps, size);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Example 2 ===&lt;br /&gt;
This example shows the declaration of a sized struct with a conformant array.&lt;br /&gt;
&amp;lt;source lang=c&amp;gt;&lt;br /&gt;
#define SOME_BOUND 1&lt;br /&gt;
typedef struct {&lt;br /&gt;
    int size;&lt;br /&gt;
    int someJunk;&lt;br /&gt;
    int ary[SOME_BOUND];&lt;br /&gt;
} ConformantArraySizedStruct;&lt;br /&gt;
&lt;br /&gt;
extern void f(SimpleSizedStruct* ps);&lt;br /&gt;
#pragma scl_function(f)&lt;br /&gt;
#pragma scl_struct_sized(*f.ps, size);&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* For additional information on scl_string, including constraints, refer to the section on scl_struct_sized in the [[Media:s2sSCLReferenceGuide.pdf|SCL Reference Guide]].&lt;br /&gt;
&lt;br /&gt;
[[Category: SCL]]&lt;/div&gt;</summary>
		<author><name>Robg</name></author>
	</entry>
	<entry>
		<id>https://www.stridewiki.com/index.php?title=Studio:Scl_struct_sized&amp;diff=8248</id>
		<title>Studio:Scl struct sized</title>
		<link rel="alternate" type="text/html" href="https://www.stridewiki.com/index.php?title=Studio:Scl_struct_sized&amp;diff=8248"/>
		<updated>2008-11-05T18:39:33Z</updated>

		<summary type="html">&lt;p&gt;Robg: /* Syntax */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= The scl_struct_sized pragma =&lt;br /&gt;
&lt;br /&gt;
The scl_struct_sized pragma is used to identify a sized structure. A sized structure is a C programming convention for representing a structure whose size is variable and defined by one of the members of the structure.  This pragma is infrequently used, but must be used, whenever the programmer defined size does not match the C language size of the structure (as calculated by the sizeof macro).&lt;br /&gt;
&lt;br /&gt;
= STRIDE Version Support=&lt;br /&gt;
Available in STRIDE 3.0.0103 (StoneSteps Tower 3) and later versions&lt;br /&gt;
== Syntax ==&lt;br /&gt;
 #pragma scl_struct_sized(type-name, size-field)&lt;br /&gt;
 &lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; style=&amp;quot;align:left;&amp;quot;  &lt;br /&gt;
| width=&amp;quot;100&amp;quot; | &#039;&#039;&#039;Parameters&#039;&#039;&#039;&lt;br /&gt;
| width=&amp;quot;100&amp;quot; | &#039;&#039;&#039;Type&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;type-name&#039;&#039;&lt;br /&gt;
| Structure Type&lt;br /&gt;
| Identifies a structure type or structure instance whose runtime size is not the same as it C language size and contains a field whose value is the runtime size.&lt;br /&gt;
The following restrictions apply:&lt;br /&gt;
* The structure type may not be pointed to by a sized pointer.&lt;br /&gt;
* The structure type may not be a member of any other structure or union.&lt;br /&gt;
* The structure type may not be passed as a function parameter (but a pointer to it is allowed).&lt;br /&gt;
* The structure type may reside only within IN or INOUT memory blocks.&lt;br /&gt;
* If the last member of the structure is an array, the array&#039;s size is calculated based upon max-size - (size of struct&#039;s other members).&lt;br /&gt;
* If the last member of the structure is an array, the array&#039;s element type may not contain a sized structure or a conformant array (see [[scl_conform]]).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;size-field&#039;&#039;&lt;br /&gt;
| Member&lt;br /&gt;
| Identifies a field within the sized structure whose value determines the actual runtime size of the structure. The following restrictions apply:&lt;br /&gt;
* The type of the size-field must be an integral type (int, short, char).&lt;br /&gt;
* The value (at runtime) is expected to be greater than the type size of the structure (as determined by the sizeof macro).&lt;br /&gt;
* The size-field must reside within the same payload block as the sized structure.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
=== Example 1 ===&lt;br /&gt;
This example shows the declaration for a simple sized struct.&lt;br /&gt;
&amp;lt;source lang=c&amp;gt;&lt;br /&gt;
typedef struct {&lt;br /&gt;
    int size;&lt;br /&gt;
    int someJunk;&lt;br /&gt;
    int moreJunk;&lt;br /&gt;
} SimpleSizedStruct;&lt;br /&gt;
&lt;br /&gt;
extern void f(SimpleSizedStruct* ps);&lt;br /&gt;
#pragma scl_function(f)&lt;br /&gt;
#pragma scl_struct_sized(*f.ps, size);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Example 2 ===&lt;br /&gt;
This example shows the declaration of a sized struct with a conformant array.&lt;br /&gt;
&amp;lt;source lang=c&amp;gt;&lt;br /&gt;
#define SOME_BOUND 1&lt;br /&gt;
typedef struct {&lt;br /&gt;
    int size;&lt;br /&gt;
    int someJunk;&lt;br /&gt;
    int ary[SOME_BOUND];&lt;br /&gt;
} ConformantArraySizedStruct;&lt;br /&gt;
&lt;br /&gt;
extern void f(SimpleSizedStruct* ps);&lt;br /&gt;
#pragma scl_function(f)&lt;br /&gt;
#pragma scl_struct_sized(*f.ps, size);&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* For additional information on scl_string, including constraints, refer to the section on scl_struct_sized in the [[Media:s2sSCLReferenceGuide.pdf|SCL Reference Guide]].&lt;br /&gt;
&lt;br /&gt;
[[Category: SCL]]&lt;/div&gt;</summary>
		<author><name>Robg</name></author>
	</entry>
	<entry>
		<id>https://www.stridewiki.com/index.php?title=Studio:Scl_struct_sized&amp;diff=8247</id>
		<title>Studio:Scl struct sized</title>
		<link rel="alternate" type="text/html" href="https://www.stridewiki.com/index.php?title=Studio:Scl_struct_sized&amp;diff=8247"/>
		<updated>2008-11-05T18:37:56Z</updated>

		<summary type="html">&lt;p&gt;Robg: /* The scl_struct_sized pragma */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= The scl_struct_sized pragma =&lt;br /&gt;
&lt;br /&gt;
The scl_struct_sized pragma is used to identify a sized structure. A sized structure is a C programming convention for representing a structure whose size is variable and defined by one of the members of the structure.  This pragma is infrequently used, but must be used, whenever the programmer defined size does not match the C language size of the structure (as calculated by the sizeof macro).&lt;br /&gt;
&lt;br /&gt;
= STRIDE Version Support=&lt;br /&gt;
Available in STRIDE 3.0.0103 (StoneSteps Tower 3) and later versions&lt;br /&gt;
== Syntax ==&lt;br /&gt;
 #pragma scl_struct_sized(type-name, size-field)&lt;br /&gt;
 &lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; style=&amp;quot;align:left;&amp;quot;  &lt;br /&gt;
| width=&amp;quot;100&amp;quot; | &#039;&#039;&#039;Parameters&#039;&#039;&#039;&lt;br /&gt;
| width=&amp;quot;100&amp;quot; | &#039;&#039;&#039;Type&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;type-name&#039;&#039;&lt;br /&gt;
| Struct,&amp;lt;br&amp;gt;Pointer&lt;br /&gt;
| Identifies a structure type or structure instance whose runtime size is not the same as it C language size and contains a field whose value is the runtime size.&lt;br /&gt;
The following restrictions apply:&lt;br /&gt;
* The structure type may not be pointed to by a sized pointer.&lt;br /&gt;
* The structure type may not be a member of any other structure or union.&lt;br /&gt;
* The structure type may not be passed as a function parameter (but a pointer to it is allowed).&lt;br /&gt;
* The structure type may reside only within IN or INOUT memory blocks.&lt;br /&gt;
* If the last member of the structure is an array, the array&#039;s size is calculated based upon max-size - (size of struct&#039;s other members).&lt;br /&gt;
* If the last member of the structure is an array, the array&#039;s element type may not contain a sized structure or a conformant array (see [[scl_conform]]).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;size-field&#039;&#039;&lt;br /&gt;
| Member&lt;br /&gt;
| Identifies a field within the sized structure whose value determines the actual runtime size of the structure. The following restrictions apply:&lt;br /&gt;
* The type of the size-field must be an integral type (int, short, char).&lt;br /&gt;
* The value (at runtime) is expected to be greater than the type size of the structure (as determined by the sizeof macro).&lt;br /&gt;
* The size-field must reside within the same payload block as the sized structure.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
=== Example 1 ===&lt;br /&gt;
This example shows the declaration for a simple sized struct.&lt;br /&gt;
&amp;lt;source lang=c&amp;gt;&lt;br /&gt;
typedef struct {&lt;br /&gt;
    int size;&lt;br /&gt;
    int someJunk;&lt;br /&gt;
    int moreJunk;&lt;br /&gt;
} SimpleSizedStruct;&lt;br /&gt;
&lt;br /&gt;
extern void f(SimpleSizedStruct* ps);&lt;br /&gt;
#pragma scl_function(f)&lt;br /&gt;
#pragma scl_struct_sized(*f.ps, size);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Example 2 ===&lt;br /&gt;
This example shows the declaration of a sized struct with a conformant array.&lt;br /&gt;
&amp;lt;source lang=c&amp;gt;&lt;br /&gt;
#define SOME_BOUND 1&lt;br /&gt;
typedef struct {&lt;br /&gt;
    int size;&lt;br /&gt;
    int someJunk;&lt;br /&gt;
    int ary[SOME_BOUND];&lt;br /&gt;
} ConformantArraySizedStruct;&lt;br /&gt;
&lt;br /&gt;
extern void f(SimpleSizedStruct* ps);&lt;br /&gt;
#pragma scl_function(f)&lt;br /&gt;
#pragma scl_struct_sized(*f.ps, size);&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* For additional information on scl_string, including constraints, refer to the section on scl_struct_sized in the [[Media:s2sSCLReferenceGuide.pdf|SCL Reference Guide]].&lt;br /&gt;
&lt;br /&gt;
[[Category: SCL]]&lt;/div&gt;</summary>
		<author><name>Robg</name></author>
	</entry>
	<entry>
		<id>https://www.stridewiki.com/index.php?title=Studio:Scl_struct_sized&amp;diff=8246</id>
		<title>Studio:Scl struct sized</title>
		<link rel="alternate" type="text/html" href="https://www.stridewiki.com/index.php?title=Studio:Scl_struct_sized&amp;diff=8246"/>
		<updated>2008-11-05T18:36:41Z</updated>

		<summary type="html">&lt;p&gt;Robg: /* The scl_struct_sized pragma */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= The scl_struct_sized pragma =&lt;br /&gt;
&lt;br /&gt;
The scl_struct_sized pragma is used to identify a sized structure. A sized structure is a C programming convention for representing a structure whose size is variable and defined by one of the members of the structure. In other words the actual size of the structure is defined by programmer convention.  This pragma is infrequently used, but must be used, whenever the programmer defined size does not match the C language size (as calculated by the sizeof macro) of the structure.&lt;br /&gt;
&lt;br /&gt;
= STRIDE Version Support=&lt;br /&gt;
Available in STRIDE 3.0.0103 (StoneSteps Tower 3) and later versions&lt;br /&gt;
== Syntax ==&lt;br /&gt;
 #pragma scl_struct_sized(type-name, size-field)&lt;br /&gt;
 &lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; style=&amp;quot;align:left;&amp;quot;  &lt;br /&gt;
| width=&amp;quot;100&amp;quot; | &#039;&#039;&#039;Parameters&#039;&#039;&#039;&lt;br /&gt;
| width=&amp;quot;100&amp;quot; | &#039;&#039;&#039;Type&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;type-name&#039;&#039;&lt;br /&gt;
| Struct,&amp;lt;br&amp;gt;Pointer&lt;br /&gt;
| Identifies a structure type or structure instance whose runtime size is not the same as it C language size and contains a field whose value is the runtime size.&lt;br /&gt;
The following restrictions apply:&lt;br /&gt;
* The structure type may not be pointed to by a sized pointer.&lt;br /&gt;
* The structure type may not be a member of any other structure or union.&lt;br /&gt;
* The structure type may not be passed as a function parameter (but a pointer to it is allowed).&lt;br /&gt;
* The structure type may reside only within IN or INOUT memory blocks.&lt;br /&gt;
* If the last member of the structure is an array, the array&#039;s size is calculated based upon max-size - (size of struct&#039;s other members).&lt;br /&gt;
* If the last member of the structure is an array, the array&#039;s element type may not contain a sized structure or a conformant array (see [[scl_conform]]).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;size-field&#039;&#039;&lt;br /&gt;
| Member&lt;br /&gt;
| Identifies a field within the sized structure whose value determines the actual runtime size of the structure. The following restrictions apply:&lt;br /&gt;
* The type of the size-field must be an integral type (int, short, char).&lt;br /&gt;
* The value (at runtime) is expected to be greater than the type size of the structure (as determined by the sizeof macro).&lt;br /&gt;
* The size-field must reside within the same payload block as the sized structure.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
=== Example 1 ===&lt;br /&gt;
This example shows the declaration for a simple sized struct.&lt;br /&gt;
&amp;lt;source lang=c&amp;gt;&lt;br /&gt;
typedef struct {&lt;br /&gt;
    int size;&lt;br /&gt;
    int someJunk;&lt;br /&gt;
    int moreJunk;&lt;br /&gt;
} SimpleSizedStruct;&lt;br /&gt;
&lt;br /&gt;
extern void f(SimpleSizedStruct* ps);&lt;br /&gt;
#pragma scl_function(f)&lt;br /&gt;
#pragma scl_struct_sized(*f.ps, size);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Example 2 ===&lt;br /&gt;
This example shows the declaration of a sized struct with a conformant array.&lt;br /&gt;
&amp;lt;source lang=c&amp;gt;&lt;br /&gt;
#define SOME_BOUND 1&lt;br /&gt;
typedef struct {&lt;br /&gt;
    int size;&lt;br /&gt;
    int someJunk;&lt;br /&gt;
    int ary[SOME_BOUND];&lt;br /&gt;
} ConformantArraySizedStruct;&lt;br /&gt;
&lt;br /&gt;
extern void f(SimpleSizedStruct* ps);&lt;br /&gt;
#pragma scl_function(f)&lt;br /&gt;
#pragma scl_struct_sized(*f.ps, size);&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* For additional information on scl_string, including constraints, refer to the section on scl_struct_sized in the [[Media:s2sSCLReferenceGuide.pdf|SCL Reference Guide]].&lt;br /&gt;
&lt;br /&gt;
[[Category: SCL]]&lt;/div&gt;</summary>
		<author><name>Robg</name></author>
	</entry>
	<entry>
		<id>https://www.stridewiki.com/index.php?title=Studio:Scl_struct_sized&amp;diff=8245</id>
		<title>Studio:Scl struct sized</title>
		<link rel="alternate" type="text/html" href="https://www.stridewiki.com/index.php?title=Studio:Scl_struct_sized&amp;diff=8245"/>
		<updated>2008-11-05T18:35:53Z</updated>

		<summary type="html">&lt;p&gt;Robg: /* Syntax */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= The scl_struct_sized pragma =&lt;br /&gt;
&lt;br /&gt;
The scl_struct_sized pragma is used to identify a sized structure. A sized structure is a C programming pattern representing structure whose size is variable and defined by one of the members of the structure. In other words the actual size of the structure is defined by programmer convention.  This pragma is infrequently used, but must be used, whenever the programmer defined size does not match the C language size (as calculated by the sizeof macro) of the structure.&lt;br /&gt;
&lt;br /&gt;
= STRIDE Version Support=&lt;br /&gt;
Available in STRIDE 3.0.0103 (StoneSteps Tower 3) and later versions&lt;br /&gt;
== Syntax ==&lt;br /&gt;
 #pragma scl_struct_sized(type-name, size-field)&lt;br /&gt;
 &lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; style=&amp;quot;align:left;&amp;quot;  &lt;br /&gt;
| width=&amp;quot;100&amp;quot; | &#039;&#039;&#039;Parameters&#039;&#039;&#039;&lt;br /&gt;
| width=&amp;quot;100&amp;quot; | &#039;&#039;&#039;Type&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;type-name&#039;&#039;&lt;br /&gt;
| Struct,&amp;lt;br&amp;gt;Pointer&lt;br /&gt;
| Identifies a structure type or structure instance whose runtime size is not the same as it C language size and contains a field whose value is the runtime size.&lt;br /&gt;
The following restrictions apply:&lt;br /&gt;
* The structure type may not be pointed to by a sized pointer.&lt;br /&gt;
* The structure type may not be a member of any other structure or union.&lt;br /&gt;
* The structure type may not be passed as a function parameter (but a pointer to it is allowed).&lt;br /&gt;
* The structure type may reside only within IN or INOUT memory blocks.&lt;br /&gt;
* If the last member of the structure is an array, the array&#039;s size is calculated based upon max-size - (size of struct&#039;s other members).&lt;br /&gt;
* If the last member of the structure is an array, the array&#039;s element type may not contain a sized structure or a conformant array (see [[scl_conform]]).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;size-field&#039;&#039;&lt;br /&gt;
| Member&lt;br /&gt;
| Identifies a field within the sized structure whose value determines the actual runtime size of the structure. The following restrictions apply:&lt;br /&gt;
* The type of the size-field must be an integral type (int, short, char).&lt;br /&gt;
* The value (at runtime) is expected to be greater than the type size of the structure (as determined by the sizeof macro).&lt;br /&gt;
* The size-field must reside within the same payload block as the sized structure.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
=== Example 1 ===&lt;br /&gt;
This example shows the declaration for a simple sized struct.&lt;br /&gt;
&amp;lt;source lang=c&amp;gt;&lt;br /&gt;
typedef struct {&lt;br /&gt;
    int size;&lt;br /&gt;
    int someJunk;&lt;br /&gt;
    int moreJunk;&lt;br /&gt;
} SimpleSizedStruct;&lt;br /&gt;
&lt;br /&gt;
extern void f(SimpleSizedStruct* ps);&lt;br /&gt;
#pragma scl_function(f)&lt;br /&gt;
#pragma scl_struct_sized(*f.ps, size);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Example 2 ===&lt;br /&gt;
This example shows the declaration of a sized struct with a conformant array.&lt;br /&gt;
&amp;lt;source lang=c&amp;gt;&lt;br /&gt;
#define SOME_BOUND 1&lt;br /&gt;
typedef struct {&lt;br /&gt;
    int size;&lt;br /&gt;
    int someJunk;&lt;br /&gt;
    int ary[SOME_BOUND];&lt;br /&gt;
} ConformantArraySizedStruct;&lt;br /&gt;
&lt;br /&gt;
extern void f(SimpleSizedStruct* ps);&lt;br /&gt;
#pragma scl_function(f)&lt;br /&gt;
#pragma scl_struct_sized(*f.ps, size);&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* For additional information on scl_string, including constraints, refer to the section on scl_struct_sized in the [[Media:s2sSCLReferenceGuide.pdf|SCL Reference Guide]].&lt;br /&gt;
&lt;br /&gt;
[[Category: SCL]]&lt;/div&gt;</summary>
		<author><name>Robg</name></author>
	</entry>
	<entry>
		<id>https://www.stridewiki.com/index.php?title=Studio:Scl_struct_sized&amp;diff=8244</id>
		<title>Studio:Scl struct sized</title>
		<link rel="alternate" type="text/html" href="https://www.stridewiki.com/index.php?title=Studio:Scl_struct_sized&amp;diff=8244"/>
		<updated>2008-11-05T18:32:18Z</updated>

		<summary type="html">&lt;p&gt;Robg: /* Syntax */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= The scl_struct_sized pragma =&lt;br /&gt;
&lt;br /&gt;
The scl_struct_sized pragma is used to identify a sized structure. A sized structure is a C programming pattern representing structure whose size is variable and defined by one of the members of the structure. In other words the actual size of the structure is defined by programmer convention.  This pragma is infrequently used, but must be used, whenever the programmer defined size does not match the C language size (as calculated by the sizeof macro) of the structure.&lt;br /&gt;
&lt;br /&gt;
= STRIDE Version Support=&lt;br /&gt;
Available in STRIDE 3.0.0103 (StoneSteps Tower 3) and later versions&lt;br /&gt;
== Syntax ==&lt;br /&gt;
 #pragma scl_struct_sized(type-name, size-field)&lt;br /&gt;
 &lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; style=&amp;quot;align:left;&amp;quot;  &lt;br /&gt;
| width=&amp;quot;100&amp;quot; | &#039;&#039;&#039;Parameters&#039;&#039;&#039;&lt;br /&gt;
| width=&amp;quot;100&amp;quot; | &#039;&#039;&#039;Type&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;type-name&#039;&#039;&lt;br /&gt;
| Struct,&amp;lt;br&amp;gt;Pointer&lt;br /&gt;
| Identifies a structure type or structure instance whose runtime size is not the same as it C language size and contains a field whose value is the runtime size.&lt;br /&gt;
The following restrictions apply:&lt;br /&gt;
* The structure type may not be pointed to by a sized pointer.&lt;br /&gt;
* The structure type may not be a member of any other structure or union.&lt;br /&gt;
* The structure type may not be passed as a function parameter (but a pointer to it is allowed).&lt;br /&gt;
* The structure type may reside only within IN or INOUT memory blocks.&lt;br /&gt;
* If the last member of the structure is an array, the array&#039;s size is calculated based upon max-size - (size of struct&#039;s other members).&lt;br /&gt;
* If the last member of the structure is an array, the array&#039;s element type may not contain a sized structure or a conformant array (see [[scl_conform]]).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;size-field&#039;&#039;&lt;br /&gt;
| Integer&lt;br /&gt;
| Specifies the number of bytes to be allocated for the sized struct.&lt;br /&gt;
The following restrictions apply:&lt;br /&gt;
* The type of the size-field must be an integral type (int, short, char).&lt;br /&gt;
* The value (at runtime) is expected to be greater than the structure type size.&lt;br /&gt;
* The size-field must be in the same payload block as the type-name sized struct.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
=== Example 1 ===&lt;br /&gt;
This example shows the declaration for a simple sized struct.&lt;br /&gt;
&amp;lt;source lang=c&amp;gt;&lt;br /&gt;
typedef struct {&lt;br /&gt;
    int size;&lt;br /&gt;
    int someJunk;&lt;br /&gt;
    int moreJunk;&lt;br /&gt;
} SimpleSizedStruct;&lt;br /&gt;
&lt;br /&gt;
extern void f(SimpleSizedStruct* ps);&lt;br /&gt;
#pragma scl_function(f)&lt;br /&gt;
#pragma scl_struct_sized(*f.ps, size);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Example 2 ===&lt;br /&gt;
This example shows the declaration of a sized struct with a conformant array.&lt;br /&gt;
&amp;lt;source lang=c&amp;gt;&lt;br /&gt;
#define SOME_BOUND 1&lt;br /&gt;
typedef struct {&lt;br /&gt;
    int size;&lt;br /&gt;
    int someJunk;&lt;br /&gt;
    int ary[SOME_BOUND];&lt;br /&gt;
} ConformantArraySizedStruct;&lt;br /&gt;
&lt;br /&gt;
extern void f(SimpleSizedStruct* ps);&lt;br /&gt;
#pragma scl_function(f)&lt;br /&gt;
#pragma scl_struct_sized(*f.ps, size);&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* For additional information on scl_string, including constraints, refer to the section on scl_struct_sized in the [[Media:s2sSCLReferenceGuide.pdf|SCL Reference Guide]].&lt;br /&gt;
&lt;br /&gt;
[[Category: SCL]]&lt;/div&gt;</summary>
		<author><name>Robg</name></author>
	</entry>
	<entry>
		<id>https://www.stridewiki.com/index.php?title=Studio:Scl_struct_sized&amp;diff=8243</id>
		<title>Studio:Scl struct sized</title>
		<link rel="alternate" type="text/html" href="https://www.stridewiki.com/index.php?title=Studio:Scl_struct_sized&amp;diff=8243"/>
		<updated>2008-11-05T18:27:27Z</updated>

		<summary type="html">&lt;p&gt;Robg: /* Syntax */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= The scl_struct_sized pragma =&lt;br /&gt;
&lt;br /&gt;
The scl_struct_sized pragma is used to identify a sized structure. A sized structure is a C programming pattern representing structure whose size is variable and defined by one of the members of the structure. In other words the actual size of the structure is defined by programmer convention.  This pragma is infrequently used, but must be used, whenever the programmer defined size does not match the C language size (as calculated by the sizeof macro) of the structure.&lt;br /&gt;
&lt;br /&gt;
= STRIDE Version Support=&lt;br /&gt;
Available in STRIDE 3.0.0103 (StoneSteps Tower 3) and later versions&lt;br /&gt;
== Syntax ==&lt;br /&gt;
 #pragma scl_struct_sized(type-name, size-field)&lt;br /&gt;
 &lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; style=&amp;quot;align:left;&amp;quot;  &lt;br /&gt;
| width=&amp;quot;100&amp;quot; | &#039;&#039;&#039;Parameters&#039;&#039;&#039;&lt;br /&gt;
| width=&amp;quot;100&amp;quot; | &#039;&#039;&#039;Type&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;type-name&#039;&#039;&lt;br /&gt;
| Struct,&amp;lt;br&amp;gt;Pointer&lt;br /&gt;
| Specifies a structure type (or a pointer to such type) that is to be sized (allocated bytes beyond its type definition).&lt;br /&gt;
The following restrictions apply:&lt;br /&gt;
* The structure type may not be pointed to by a sized pointer.&lt;br /&gt;
* The structure type may not be a member of any other structure or union.&lt;br /&gt;
* The structure type may not be passed as a function parameter.&lt;br /&gt;
* The structure type may only reside in IN/INOUT memory blocks.&lt;br /&gt;
* If the last member of the structure is an array, the array&#039;s size is calculated based upon max-size - (size of struct&#039;s other members).&lt;br /&gt;
* If the last member of the structure is an array, the array&#039;s element type may not contain a sized structure or a conformant array (see [[scl_conform]]).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;size-field&#039;&#039;&lt;br /&gt;
| Integer&lt;br /&gt;
| Specifies the number of bytes to be allocated for the sized struct.&lt;br /&gt;
The following restrictions apply:&lt;br /&gt;
* The type of the size-field must be an integral type (int, short, char).&lt;br /&gt;
* The value (at runtime) is expected to be greater than the structure type size.&lt;br /&gt;
* The size-field must be in the same payload block as the type-name sized struct.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
=== Example 1 ===&lt;br /&gt;
This example shows the declaration for a simple sized struct.&lt;br /&gt;
&amp;lt;source lang=c&amp;gt;&lt;br /&gt;
typedef struct {&lt;br /&gt;
    int size;&lt;br /&gt;
    int someJunk;&lt;br /&gt;
    int moreJunk;&lt;br /&gt;
} SimpleSizedStruct;&lt;br /&gt;
&lt;br /&gt;
extern void f(SimpleSizedStruct* ps);&lt;br /&gt;
#pragma scl_function(f)&lt;br /&gt;
#pragma scl_struct_sized(*f.ps, size);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Example 2 ===&lt;br /&gt;
This example shows the declaration of a sized struct with a conformant array.&lt;br /&gt;
&amp;lt;source lang=c&amp;gt;&lt;br /&gt;
#define SOME_BOUND 1&lt;br /&gt;
typedef struct {&lt;br /&gt;
    int size;&lt;br /&gt;
    int someJunk;&lt;br /&gt;
    int ary[SOME_BOUND];&lt;br /&gt;
} ConformantArraySizedStruct;&lt;br /&gt;
&lt;br /&gt;
extern void f(SimpleSizedStruct* ps);&lt;br /&gt;
#pragma scl_function(f)&lt;br /&gt;
#pragma scl_struct_sized(*f.ps, size);&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* For additional information on scl_string, including constraints, refer to the section on scl_struct_sized in the [[Media:s2sSCLReferenceGuide.pdf|SCL Reference Guide]].&lt;br /&gt;
&lt;br /&gt;
[[Category: SCL]]&lt;/div&gt;</summary>
		<author><name>Robg</name></author>
	</entry>
	<entry>
		<id>https://www.stridewiki.com/index.php?title=Studio:Scl_struct_sized&amp;diff=8242</id>
		<title>Studio:Scl struct sized</title>
		<link rel="alternate" type="text/html" href="https://www.stridewiki.com/index.php?title=Studio:Scl_struct_sized&amp;diff=8242"/>
		<updated>2008-11-05T18:27:11Z</updated>

		<summary type="html">&lt;p&gt;Robg: /* Syntax */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= The scl_struct_sized pragma =&lt;br /&gt;
&lt;br /&gt;
The scl_struct_sized pragma is used to identify a sized structure. A sized structure is a C programming pattern representing structure whose size is variable and defined by one of the members of the structure. In other words the actual size of the structure is defined by programmer convention.  This pragma is infrequently used, but must be used, whenever the programmer defined size does not match the C language size (as calculated by the sizeof macro) of the structure.&lt;br /&gt;
&lt;br /&gt;
= STRIDE Version Support=&lt;br /&gt;
Available in STRIDE 3.0.0103 (StoneSteps Tower 3) and later versions&lt;br /&gt;
== Syntax ==&lt;br /&gt;
 #pragma scl_struct_sized(type-name, max-size)&lt;br /&gt;
 &lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; style=&amp;quot;align:left;&amp;quot;  &lt;br /&gt;
| width=&amp;quot;100&amp;quot; | &#039;&#039;&#039;Parameters&#039;&#039;&#039;&lt;br /&gt;
| width=&amp;quot;100&amp;quot; | &#039;&#039;&#039;Type&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;type-name&#039;&#039;&lt;br /&gt;
| Struct,&amp;lt;br&amp;gt;Pointer&lt;br /&gt;
| Specifies a structure type (or a pointer to such type) that is to be sized (allocated bytes beyond its type definition).&lt;br /&gt;
The following restrictions apply:&lt;br /&gt;
* The structure type may not be pointed to by a sized pointer.&lt;br /&gt;
* The structure type may not be a member of any other structure or union.&lt;br /&gt;
* The structure type may not be passed as a function parameter.&lt;br /&gt;
* The structure type may only reside in IN/INOUT memory blocks.&lt;br /&gt;
* If the last member of the structure is an array, the array&#039;s size is calculated based upon max-size - (size of struct&#039;s other members).&lt;br /&gt;
* If the last member of the structure is an array, the array&#039;s element type may not contain a sized structure or a conformant array (see [[scl_conform]]).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;size-field&#039;&#039;&lt;br /&gt;
| Integer&lt;br /&gt;
| Specifies the number of bytes to be allocated for the sized struct.&lt;br /&gt;
The following restrictions apply:&lt;br /&gt;
* The type of the size-field must be an integral type (int, short, char).&lt;br /&gt;
* The value (at runtime) is expected to be greater than the structure type size.&lt;br /&gt;
* The size-field must be in the same payload block as the type-name sized struct.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
=== Example 1 ===&lt;br /&gt;
This example shows the declaration for a simple sized struct.&lt;br /&gt;
&amp;lt;source lang=c&amp;gt;&lt;br /&gt;
typedef struct {&lt;br /&gt;
    int size;&lt;br /&gt;
    int someJunk;&lt;br /&gt;
    int moreJunk;&lt;br /&gt;
} SimpleSizedStruct;&lt;br /&gt;
&lt;br /&gt;
extern void f(SimpleSizedStruct* ps);&lt;br /&gt;
#pragma scl_function(f)&lt;br /&gt;
#pragma scl_struct_sized(*f.ps, size);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Example 2 ===&lt;br /&gt;
This example shows the declaration of a sized struct with a conformant array.&lt;br /&gt;
&amp;lt;source lang=c&amp;gt;&lt;br /&gt;
#define SOME_BOUND 1&lt;br /&gt;
typedef struct {&lt;br /&gt;
    int size;&lt;br /&gt;
    int someJunk;&lt;br /&gt;
    int ary[SOME_BOUND];&lt;br /&gt;
} ConformantArraySizedStruct;&lt;br /&gt;
&lt;br /&gt;
extern void f(SimpleSizedStruct* ps);&lt;br /&gt;
#pragma scl_function(f)&lt;br /&gt;
#pragma scl_struct_sized(*f.ps, size);&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* For additional information on scl_string, including constraints, refer to the section on scl_struct_sized in the [[Media:s2sSCLReferenceGuide.pdf|SCL Reference Guide]].&lt;br /&gt;
&lt;br /&gt;
[[Category: SCL]]&lt;/div&gt;</summary>
		<author><name>Robg</name></author>
	</entry>
	<entry>
		<id>https://www.stridewiki.com/index.php?title=Studio:Scl_struct_sized&amp;diff=8241</id>
		<title>Studio:Scl struct sized</title>
		<link rel="alternate" type="text/html" href="https://www.stridewiki.com/index.php?title=Studio:Scl_struct_sized&amp;diff=8241"/>
		<updated>2008-11-05T18:22:42Z</updated>

		<summary type="html">&lt;p&gt;Robg: /* Example 2 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= The scl_struct_sized pragma =&lt;br /&gt;
&lt;br /&gt;
The scl_struct_sized pragma is used to identify a sized structure. A sized structure is a C programming pattern representing structure whose size is variable and defined by one of the members of the structure. In other words the actual size of the structure is defined by programmer convention.  This pragma is infrequently used, but must be used, whenever the programmer defined size does not match the C language size (as calculated by the sizeof macro) of the structure.&lt;br /&gt;
&lt;br /&gt;
= STRIDE Version Support=&lt;br /&gt;
Available in STRIDE 3.0.0103 (StoneSteps Tower 3) and later versions&lt;br /&gt;
== Syntax ==&lt;br /&gt;
 #pragma scl_struct_sized(type-name, max-size)&lt;br /&gt;
 &lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; style=&amp;quot;align:left;&amp;quot;  &lt;br /&gt;
| width=&amp;quot;100&amp;quot; | &#039;&#039;&#039;Parameters&#039;&#039;&#039;&lt;br /&gt;
| width=&amp;quot;100&amp;quot; | &#039;&#039;&#039;Type&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;type-name&#039;&#039;&lt;br /&gt;
| Struct,&amp;lt;br&amp;gt;Pointer&lt;br /&gt;
| Specifies a structure type (or a pointer to such type) that is to be sized (allocated bytes beyond its type definition).&lt;br /&gt;
The following restrictions apply:&lt;br /&gt;
* The structure type may not be pointed to by a sized pointer.&lt;br /&gt;
* The structure type may not be a member of any other structure or union.&lt;br /&gt;
* The structure type may not be passed as a function parameter.&lt;br /&gt;
* The structure type may only reside in IN/INOUT memory blocks.&lt;br /&gt;
* If the last member of the structure is an array, the array&#039;s size is calculated based upon max-size - (size of struct&#039;s other members).&lt;br /&gt;
* If the last member of the structure is an array, the array&#039;s element type may not contain a sized structure or a conformant array (see [[scl_conform]]).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;max-size&#039;&#039;&lt;br /&gt;
| Integer&lt;br /&gt;
| Specifies the number of bytes to be allocated for the sized struct.&lt;br /&gt;
The following restrictions apply:&lt;br /&gt;
* The max-size type must be an integral type (int, short, char).&lt;br /&gt;
* The max-size value (at runtime) may not be less than the structure&#039;s type size.&lt;br /&gt;
* The max-size value (at runtime) may not exceed the maximum payload size.&lt;br /&gt;
* The max_size field must be in the same payload block as the type-name sized struct (i.e. no indirection &#039;*&#039; or &#039;-&amp;gt;&#039;).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
=== Example 1 ===&lt;br /&gt;
This example shows the declaration for a simple sized struct.&lt;br /&gt;
&amp;lt;source lang=c&amp;gt;&lt;br /&gt;
typedef struct {&lt;br /&gt;
    int size;&lt;br /&gt;
    int someJunk;&lt;br /&gt;
    int moreJunk;&lt;br /&gt;
} SimpleSizedStruct;&lt;br /&gt;
&lt;br /&gt;
extern void f(SimpleSizedStruct* ps);&lt;br /&gt;
#pragma scl_function(f)&lt;br /&gt;
#pragma scl_struct_sized(*f.ps, size);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Example 2 ===&lt;br /&gt;
This example shows the declaration of a sized struct with a conformant array.&lt;br /&gt;
&amp;lt;source lang=c&amp;gt;&lt;br /&gt;
#define SOME_BOUND 1&lt;br /&gt;
typedef struct {&lt;br /&gt;
    int size;&lt;br /&gt;
    int someJunk;&lt;br /&gt;
    int ary[SOME_BOUND];&lt;br /&gt;
} ConformantArraySizedStruct;&lt;br /&gt;
&lt;br /&gt;
extern void f(SimpleSizedStruct* ps);&lt;br /&gt;
#pragma scl_function(f)&lt;br /&gt;
#pragma scl_struct_sized(*f.ps, size);&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* For additional information on scl_string, including constraints, refer to the section on scl_struct_sized in the [[Media:s2sSCLReferenceGuide.pdf|SCL Reference Guide]].&lt;br /&gt;
&lt;br /&gt;
[[Category: SCL]]&lt;/div&gt;</summary>
		<author><name>Robg</name></author>
	</entry>
	<entry>
		<id>https://www.stridewiki.com/index.php?title=Studio:Scl_struct_sized&amp;diff=8240</id>
		<title>Studio:Scl struct sized</title>
		<link rel="alternate" type="text/html" href="https://www.stridewiki.com/index.php?title=Studio:Scl_struct_sized&amp;diff=8240"/>
		<updated>2008-11-05T18:22:18Z</updated>

		<summary type="html">&lt;p&gt;Robg: /* Example 1 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= The scl_struct_sized pragma =&lt;br /&gt;
&lt;br /&gt;
The scl_struct_sized pragma is used to identify a sized structure. A sized structure is a C programming pattern representing structure whose size is variable and defined by one of the members of the structure. In other words the actual size of the structure is defined by programmer convention.  This pragma is infrequently used, but must be used, whenever the programmer defined size does not match the C language size (as calculated by the sizeof macro) of the structure.&lt;br /&gt;
&lt;br /&gt;
= STRIDE Version Support=&lt;br /&gt;
Available in STRIDE 3.0.0103 (StoneSteps Tower 3) and later versions&lt;br /&gt;
== Syntax ==&lt;br /&gt;
 #pragma scl_struct_sized(type-name, max-size)&lt;br /&gt;
 &lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; style=&amp;quot;align:left;&amp;quot;  &lt;br /&gt;
| width=&amp;quot;100&amp;quot; | &#039;&#039;&#039;Parameters&#039;&#039;&#039;&lt;br /&gt;
| width=&amp;quot;100&amp;quot; | &#039;&#039;&#039;Type&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;type-name&#039;&#039;&lt;br /&gt;
| Struct,&amp;lt;br&amp;gt;Pointer&lt;br /&gt;
| Specifies a structure type (or a pointer to such type) that is to be sized (allocated bytes beyond its type definition).&lt;br /&gt;
The following restrictions apply:&lt;br /&gt;
* The structure type may not be pointed to by a sized pointer.&lt;br /&gt;
* The structure type may not be a member of any other structure or union.&lt;br /&gt;
* The structure type may not be passed as a function parameter.&lt;br /&gt;
* The structure type may only reside in IN/INOUT memory blocks.&lt;br /&gt;
* If the last member of the structure is an array, the array&#039;s size is calculated based upon max-size - (size of struct&#039;s other members).&lt;br /&gt;
* If the last member of the structure is an array, the array&#039;s element type may not contain a sized structure or a conformant array (see [[scl_conform]]).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;max-size&#039;&#039;&lt;br /&gt;
| Integer&lt;br /&gt;
| Specifies the number of bytes to be allocated for the sized struct.&lt;br /&gt;
The following restrictions apply:&lt;br /&gt;
* The max-size type must be an integral type (int, short, char).&lt;br /&gt;
* The max-size value (at runtime) may not be less than the structure&#039;s type size.&lt;br /&gt;
* The max-size value (at runtime) may not exceed the maximum payload size.&lt;br /&gt;
* The max_size field must be in the same payload block as the type-name sized struct (i.e. no indirection &#039;*&#039; or &#039;-&amp;gt;&#039;).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
=== Example 1 ===&lt;br /&gt;
This example shows the declaration for a simple sized struct.&lt;br /&gt;
&amp;lt;source lang=c&amp;gt;&lt;br /&gt;
typedef struct {&lt;br /&gt;
    int size;&lt;br /&gt;
    int someJunk;&lt;br /&gt;
    int moreJunk;&lt;br /&gt;
} SimpleSizedStruct;&lt;br /&gt;
&lt;br /&gt;
extern void f(SimpleSizedStruct* ps);&lt;br /&gt;
#pragma scl_function(f)&lt;br /&gt;
#pragma scl_struct_sized(*f.ps, size);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Example 2 ===&lt;br /&gt;
This example shows the declaration of a sized struct with a conformant array.&lt;br /&gt;
&amp;lt;source lang=c&amp;gt;&lt;br /&gt;
#define SOME_BOUND 1&lt;br /&gt;
typedef struct {&lt;br /&gt;
    int size;&lt;br /&gt;
    int someJunk;&lt;br /&gt;
    int ary[SOME_BOUND];&lt;br /&gt;
} ConformantArraySizedStruct;&lt;br /&gt;
&lt;br /&gt;
extern void f(SimpleSizedStruct* s);&lt;br /&gt;
#pragma scl_function(f)&lt;br /&gt;
#pragma scl_struct_sized(f.s, size);&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* For additional information on scl_string, including constraints, refer to the section on scl_struct_sized in the [[Media:s2sSCLReferenceGuide.pdf|SCL Reference Guide]].&lt;br /&gt;
&lt;br /&gt;
[[Category: SCL]]&lt;/div&gt;</summary>
		<author><name>Robg</name></author>
	</entry>
	<entry>
		<id>https://www.stridewiki.com/index.php?title=Studio:Scl_struct_sized&amp;diff=8239</id>
		<title>Studio:Scl struct sized</title>
		<link rel="alternate" type="text/html" href="https://www.stridewiki.com/index.php?title=Studio:Scl_struct_sized&amp;diff=8239"/>
		<updated>2008-11-05T18:21:49Z</updated>

		<summary type="html">&lt;p&gt;Robg: /* Example 2 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= The scl_struct_sized pragma =&lt;br /&gt;
&lt;br /&gt;
The scl_struct_sized pragma is used to identify a sized structure. A sized structure is a C programming pattern representing structure whose size is variable and defined by one of the members of the structure. In other words the actual size of the structure is defined by programmer convention.  This pragma is infrequently used, but must be used, whenever the programmer defined size does not match the C language size (as calculated by the sizeof macro) of the structure.&lt;br /&gt;
&lt;br /&gt;
= STRIDE Version Support=&lt;br /&gt;
Available in STRIDE 3.0.0103 (StoneSteps Tower 3) and later versions&lt;br /&gt;
== Syntax ==&lt;br /&gt;
 #pragma scl_struct_sized(type-name, max-size)&lt;br /&gt;
 &lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; style=&amp;quot;align:left;&amp;quot;  &lt;br /&gt;
| width=&amp;quot;100&amp;quot; | &#039;&#039;&#039;Parameters&#039;&#039;&#039;&lt;br /&gt;
| width=&amp;quot;100&amp;quot; | &#039;&#039;&#039;Type&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;type-name&#039;&#039;&lt;br /&gt;
| Struct,&amp;lt;br&amp;gt;Pointer&lt;br /&gt;
| Specifies a structure type (or a pointer to such type) that is to be sized (allocated bytes beyond its type definition).&lt;br /&gt;
The following restrictions apply:&lt;br /&gt;
* The structure type may not be pointed to by a sized pointer.&lt;br /&gt;
* The structure type may not be a member of any other structure or union.&lt;br /&gt;
* The structure type may not be passed as a function parameter.&lt;br /&gt;
* The structure type may only reside in IN/INOUT memory blocks.&lt;br /&gt;
* If the last member of the structure is an array, the array&#039;s size is calculated based upon max-size - (size of struct&#039;s other members).&lt;br /&gt;
* If the last member of the structure is an array, the array&#039;s element type may not contain a sized structure or a conformant array (see [[scl_conform]]).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;max-size&#039;&#039;&lt;br /&gt;
| Integer&lt;br /&gt;
| Specifies the number of bytes to be allocated for the sized struct.&lt;br /&gt;
The following restrictions apply:&lt;br /&gt;
* The max-size type must be an integral type (int, short, char).&lt;br /&gt;
* The max-size value (at runtime) may not be less than the structure&#039;s type size.&lt;br /&gt;
* The max-size value (at runtime) may not exceed the maximum payload size.&lt;br /&gt;
* The max_size field must be in the same payload block as the type-name sized struct (i.e. no indirection &#039;*&#039; or &#039;-&amp;gt;&#039;).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
=== Example 1 ===&lt;br /&gt;
This example shows the declaration for a simple sized struct.&lt;br /&gt;
&amp;lt;source lang=c&amp;gt;&lt;br /&gt;
typedef struct {&lt;br /&gt;
    int size;&lt;br /&gt;
    int someJunk;&lt;br /&gt;
    int moreJunk;&lt;br /&gt;
} SimpleSizedStruct;&lt;br /&gt;
&lt;br /&gt;
extern void f(SimpleSizedStruct* s);&lt;br /&gt;
#pragma scl_function(f)&lt;br /&gt;
#pragma scl_struct_sized(f.s, size);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Example 2 ===&lt;br /&gt;
This example shows the declaration of a sized struct with a conformant array.&lt;br /&gt;
&amp;lt;source lang=c&amp;gt;&lt;br /&gt;
#define SOME_BOUND 1&lt;br /&gt;
typedef struct {&lt;br /&gt;
    int size;&lt;br /&gt;
    int someJunk;&lt;br /&gt;
    int ary[SOME_BOUND];&lt;br /&gt;
} ConformantArraySizedStruct;&lt;br /&gt;
&lt;br /&gt;
extern void f(SimpleSizedStruct* s);&lt;br /&gt;
#pragma scl_function(f)&lt;br /&gt;
#pragma scl_struct_sized(f.s, size);&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* For additional information on scl_string, including constraints, refer to the section on scl_struct_sized in the [[Media:s2sSCLReferenceGuide.pdf|SCL Reference Guide]].&lt;br /&gt;
&lt;br /&gt;
[[Category: SCL]]&lt;/div&gt;</summary>
		<author><name>Robg</name></author>
	</entry>
	<entry>
		<id>https://www.stridewiki.com/index.php?title=Studio:Scl_struct_sized&amp;diff=8238</id>
		<title>Studio:Scl struct sized</title>
		<link rel="alternate" type="text/html" href="https://www.stridewiki.com/index.php?title=Studio:Scl_struct_sized&amp;diff=8238"/>
		<updated>2008-11-05T18:21:11Z</updated>

		<summary type="html">&lt;p&gt;Robg: /* Example 1 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= The scl_struct_sized pragma =&lt;br /&gt;
&lt;br /&gt;
The scl_struct_sized pragma is used to identify a sized structure. A sized structure is a C programming pattern representing structure whose size is variable and defined by one of the members of the structure. In other words the actual size of the structure is defined by programmer convention.  This pragma is infrequently used, but must be used, whenever the programmer defined size does not match the C language size (as calculated by the sizeof macro) of the structure.&lt;br /&gt;
&lt;br /&gt;
= STRIDE Version Support=&lt;br /&gt;
Available in STRIDE 3.0.0103 (StoneSteps Tower 3) and later versions&lt;br /&gt;
== Syntax ==&lt;br /&gt;
 #pragma scl_struct_sized(type-name, max-size)&lt;br /&gt;
 &lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; style=&amp;quot;align:left;&amp;quot;  &lt;br /&gt;
| width=&amp;quot;100&amp;quot; | &#039;&#039;&#039;Parameters&#039;&#039;&#039;&lt;br /&gt;
| width=&amp;quot;100&amp;quot; | &#039;&#039;&#039;Type&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;type-name&#039;&#039;&lt;br /&gt;
| Struct,&amp;lt;br&amp;gt;Pointer&lt;br /&gt;
| Specifies a structure type (or a pointer to such type) that is to be sized (allocated bytes beyond its type definition).&lt;br /&gt;
The following restrictions apply:&lt;br /&gt;
* The structure type may not be pointed to by a sized pointer.&lt;br /&gt;
* The structure type may not be a member of any other structure or union.&lt;br /&gt;
* The structure type may not be passed as a function parameter.&lt;br /&gt;
* The structure type may only reside in IN/INOUT memory blocks.&lt;br /&gt;
* If the last member of the structure is an array, the array&#039;s size is calculated based upon max-size - (size of struct&#039;s other members).&lt;br /&gt;
* If the last member of the structure is an array, the array&#039;s element type may not contain a sized structure or a conformant array (see [[scl_conform]]).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;max-size&#039;&#039;&lt;br /&gt;
| Integer&lt;br /&gt;
| Specifies the number of bytes to be allocated for the sized struct.&lt;br /&gt;
The following restrictions apply:&lt;br /&gt;
* The max-size type must be an integral type (int, short, char).&lt;br /&gt;
* The max-size value (at runtime) may not be less than the structure&#039;s type size.&lt;br /&gt;
* The max-size value (at runtime) may not exceed the maximum payload size.&lt;br /&gt;
* The max_size field must be in the same payload block as the type-name sized struct (i.e. no indirection &#039;*&#039; or &#039;-&amp;gt;&#039;).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
=== Example 1 ===&lt;br /&gt;
This example shows the declaration for a simple sized struct.&lt;br /&gt;
&amp;lt;source lang=c&amp;gt;&lt;br /&gt;
typedef struct {&lt;br /&gt;
    int size;&lt;br /&gt;
    int someJunk;&lt;br /&gt;
    int moreJunk;&lt;br /&gt;
} SimpleSizedStruct;&lt;br /&gt;
&lt;br /&gt;
extern void f(SimpleSizedStruct* s);&lt;br /&gt;
#pragma scl_function(f)&lt;br /&gt;
#pragma scl_struct_sized(f.s, size);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Example 2 ===&lt;br /&gt;
This example shows the declaration of a sized struct with a conformant array.&lt;br /&gt;
&amp;lt;source lang=c&amp;gt;&lt;br /&gt;
#define SOME_BOUND 1&lt;br /&gt;
typedef struct {&lt;br /&gt;
    int nSize;&lt;br /&gt;
    int nSomeJunk;&lt;br /&gt;
    int ary[SOME_BOUND];&lt;br /&gt;
} ConformantArraySizedStruct;&lt;br /&gt;
&lt;br /&gt;
extern void f(SimpleSizedStruct* s);&lt;br /&gt;
#pragma scl_function(f)&lt;br /&gt;
#pragma scl_struct_sized(f.s, nSize);&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* For additional information on scl_string, including constraints, refer to the section on scl_struct_sized in the [[Media:s2sSCLReferenceGuide.pdf|SCL Reference Guide]].&lt;br /&gt;
&lt;br /&gt;
[[Category: SCL]]&lt;/div&gt;</summary>
		<author><name>Robg</name></author>
	</entry>
	<entry>
		<id>https://www.stridewiki.com/index.php?title=Studio:Scl_struct_sized&amp;diff=8237</id>
		<title>Studio:Scl struct sized</title>
		<link rel="alternate" type="text/html" href="https://www.stridewiki.com/index.php?title=Studio:Scl_struct_sized&amp;diff=8237"/>
		<updated>2008-11-05T18:18:20Z</updated>

		<summary type="html">&lt;p&gt;Robg: /* The scl_struct_sized pragma */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= The scl_struct_sized pragma =&lt;br /&gt;
&lt;br /&gt;
The scl_struct_sized pragma is used to identify a sized structure. A sized structure is a C programming pattern representing structure whose size is variable and defined by one of the members of the structure. In other words the actual size of the structure is defined by programmer convention.  This pragma is infrequently used, but must be used, whenever the programmer defined size does not match the C language size (as calculated by the sizeof macro) of the structure.&lt;br /&gt;
&lt;br /&gt;
= STRIDE Version Support=&lt;br /&gt;
Available in STRIDE 3.0.0103 (StoneSteps Tower 3) and later versions&lt;br /&gt;
== Syntax ==&lt;br /&gt;
 #pragma scl_struct_sized(type-name, max-size)&lt;br /&gt;
 &lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; style=&amp;quot;align:left;&amp;quot;  &lt;br /&gt;
| width=&amp;quot;100&amp;quot; | &#039;&#039;&#039;Parameters&#039;&#039;&#039;&lt;br /&gt;
| width=&amp;quot;100&amp;quot; | &#039;&#039;&#039;Type&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;type-name&#039;&#039;&lt;br /&gt;
| Struct,&amp;lt;br&amp;gt;Pointer&lt;br /&gt;
| Specifies a structure type (or a pointer to such type) that is to be sized (allocated bytes beyond its type definition).&lt;br /&gt;
The following restrictions apply:&lt;br /&gt;
* The structure type may not be pointed to by a sized pointer.&lt;br /&gt;
* The structure type may not be a member of any other structure or union.&lt;br /&gt;
* The structure type may not be passed as a function parameter.&lt;br /&gt;
* The structure type may only reside in IN/INOUT memory blocks.&lt;br /&gt;
* If the last member of the structure is an array, the array&#039;s size is calculated based upon max-size - (size of struct&#039;s other members).&lt;br /&gt;
* If the last member of the structure is an array, the array&#039;s element type may not contain a sized structure or a conformant array (see [[scl_conform]]).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;max-size&#039;&#039;&lt;br /&gt;
| Integer&lt;br /&gt;
| Specifies the number of bytes to be allocated for the sized struct.&lt;br /&gt;
The following restrictions apply:&lt;br /&gt;
* The max-size type must be an integral type (int, short, char).&lt;br /&gt;
* The max-size value (at runtime) may not be less than the structure&#039;s type size.&lt;br /&gt;
* The max-size value (at runtime) may not exceed the maximum payload size.&lt;br /&gt;
* The max_size field must be in the same payload block as the type-name sized struct (i.e. no indirection &#039;*&#039; or &#039;-&amp;gt;&#039;).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
=== Example 1 ===&lt;br /&gt;
This example shows the declaration for a simple sized struct.&lt;br /&gt;
&amp;lt;source lang=c&amp;gt;&lt;br /&gt;
typedef struct {&lt;br /&gt;
    int nSize;&lt;br /&gt;
    int nSomeJunk;&lt;br /&gt;
    int nMoreJunk;&lt;br /&gt;
} SimpleSizedStruct;&lt;br /&gt;
&lt;br /&gt;
extern void f(SimpleSizedStruct* s);&lt;br /&gt;
#pragma scl_function(f)&lt;br /&gt;
#pragma scl_struct_sized(f.s, nSize);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Example 2 ===&lt;br /&gt;
This example shows the declaration of a sized struct with a conformant array.&lt;br /&gt;
&amp;lt;source lang=c&amp;gt;&lt;br /&gt;
#define SOME_BOUND 1&lt;br /&gt;
typedef struct {&lt;br /&gt;
    int nSize;&lt;br /&gt;
    int nSomeJunk;&lt;br /&gt;
    int ary[SOME_BOUND];&lt;br /&gt;
} ConformantArraySizedStruct;&lt;br /&gt;
&lt;br /&gt;
extern void f(SimpleSizedStruct* s);&lt;br /&gt;
#pragma scl_function(f)&lt;br /&gt;
#pragma scl_struct_sized(f.s, nSize);&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* For additional information on scl_string, including constraints, refer to the section on scl_struct_sized in the [[Media:s2sSCLReferenceGuide.pdf|SCL Reference Guide]].&lt;br /&gt;
&lt;br /&gt;
[[Category: SCL]]&lt;/div&gt;</summary>
		<author><name>Robg</name></author>
	</entry>
</feed>