<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Recent changes to Generics</title><link>https://sourceforge.net/p/asil/wiki/Generics/</link><description>Recent changes to Generics</description><atom:link href="https://sourceforge.net/p/asil/wiki/Generics/feed" rel="self"/><language>en</language><lastBuildDate>Sun, 16 Feb 2014 10:31:14 -0000</lastBuildDate><atom:link href="https://sourceforge.net/p/asil/wiki/Generics/feed" rel="self" type="application/rss+xml"/><item><title>Generics modified by Will Pittenger</title><link>https://sourceforge.net/p/asil/wiki/Generics/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v6
+++ v7
@@ -41,9 +41,10 @@

 A simple generic class
 ----------------------
-The class below takes two type parameters.  Notice the type parameters go between the [**class**] keyword and the class's identifier.  This will be explained with the talk on generic procedures.  These samples don't show interfaces, structures, unions, or type aliases; but the syntax is the same.
+The class below takes two type parameters.  Notice the type parameters go between the **[class](keywords-class)** keyword and the class's identifier.  This will be explained with the talk on generic procedures.  These samples don't show interfaces, structures, unions, or type aliases; but the syntax is the same.

 ~~~~
+:::text
 class &lt;a&gt; Name
   public function GoLeft a HowMuch
       returns b
@@ -52,9 +53,10 @@

 A generic class with restrictions on the type parameters
 --------------------------------------------------------
-If you need to ensure the passed type has some members, the [**where**] clause comes in handy.  This class requires a passed type to derive from X and implement IComparable.
+If you need to ensure the passed type has some members, the **[where](keywords-where)** clause comes in handy.  This class requires a passed type to derive from X and implement IComparable.

 ~~~~
+:::text
 class &lt;/a&gt;&lt;a&gt; Name
     where
       a
@@ -66,6 +68,7 @@
 This generic class takes type parameters with a different type of restriction.

 ~~~~
+:::text
 class &lt;/a&gt;&lt;a&gt; Class2
     where
       a = enum ' must be an enum
@@ -76,9 +79,10 @@

 Generic procedures
 ------------------
-Commands, functions, and complex structures can all be generic.  The code sample below shows samples of each.  The [**returns**] and [**where**] clauses for generic functions can occur in any order.  (Note: The samples only show prototypes.)
+Commands, functions, and complex structures can all be generic.  The code sample below shows samples of each.  The **[returns](keywords-returns)** and **[where](keywords-where)** clauses for generic functions can occur in any order.  (Note: The samples only show prototypes.)

 ~~~~
+:::text
 command &lt;/a&gt;&lt;a&gt; GenericCommand var a A
   where
     a = enum
@@ -101,6 +105,7 @@
 Expanding a generic class is similar to C++, C#, and Java.  Use the syntax shown below.

 ~~~~
+:::text
 var GenericClass name = new GenericClass
 ~~~~

@@ -109,6 +114,7 @@
 Now that ASIL is expecting type parameters, it can expect, and even require, them.  So use this syntax.

 ~~~~
+:::text
 GenericCommand myEnumInstance

 var String name 
@@ -123,6 +129,7 @@
 It is unknown how useful Contravariance is.  But Covariance can be used.  Both are shown here, but Contravariance might not survive.

 ~~~~
+:::text
 var GenericClass ' Covariance
 var GenericClass ' Contravariance
 ~~~~
&lt;/a&gt;&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Will Pittenger</dc:creator><pubDate>Sun, 16 Feb 2014 10:31:14 -0000</pubDate><guid>https://sourceforge.net97cc41db8848a3f7ebee43031812697e491331d2</guid></item><item><title>Generics modified by Will Pittenger</title><link>https://sourceforge.net/p/asil/wiki/Generics/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v5
+++ v6
@@ -4,7 +4,7 @@
 --------
 Generics in ASIL are closer to .NET generics most closely in usage than Java.  That's because Java generics are more like "pseudo-generics".  Java strips the type information out and converts the generics into their raw form.  This makes it impossible to access information about the type parameters at run time.  The syntax is loosely adapted from C#.

-Note: The names of your type parameters must be unique inside whatever is generic.  So if you have a generic class with a type paremter named "x", "x" can't be the name of any member.
+Note: The names of your type parameters must be unique inside whatever is generic.  So if you have a generic class with a type parameter named "x", "x" can't be the name of any member.

 What can and can't be generic
 -----------------------------
@@ -23,7 +23,7 @@
 Data member variable | ✗
 Destructors | ✗
 Function | ✓
-Global variable (DASIL) | ✗
+Global variable ([DASIL](Derivatives-DASIL)) | ✗
 Interface | ✓
 Local variable | ✗
 Operator | ✗
@@ -89,7 +89,7 @@
     c
       implements IComparable

-statement  GenericStatement var &amp; g G
+statement  GenericStatement var ref g G
   where
     g = struct
 ~~~~
@@ -114,7 +114,7 @@
 var String name 
 name = GenericFunction "test"

-GenericStatement var MyStruct myStructInstance
+GenericStatement var MyStruct myStructInstance
   ' Do something
 ~~~~

&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Will Pittenger</dc:creator><pubDate>Thu, 13 Feb 2014 22:51:39 -0000</pubDate><guid>https://sourceforge.net44a35c5f4219713f19bcfb0f4b8e5be586d2fdfd</guid></item><item><title>Generics modified by Will Pittenger</title><link>https://sourceforge.net/p/asil/wiki/Generics/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v4
+++ v5
@@ -12,6 +12,7 @@

 Identifier type | Yes or no
 ----------------|----------
+Bitfield | ✗
 Class | ✓
 Command | ✓
 Complex Statement | ✓
@@ -30,14 +31,17 @@
 Properties | ✗
 Structure | ✓
 Structure-based enum | ✓
+Type alias | ✓ (if based on a generic)
+Union with external controlling member | ✗
+Union with internal controlling member | ✓

 Types of generic type parameters
 --------------------------------
-ASIL generic type fall into several categories.  Those are primitives, enums, structs, struct-based enums, and classes.  [Delegates] and [Events] are considered to be instances of classes.
+ASIL generic type parameters fall into several categories.  Those are primitives, enums, structs, struct-based enums, and classes.  [Delegates] and [Events] are considered to be instances of classes.

 A simple generic class
 ----------------------
-The class below takes two type parameters.  Notice the type parameters go between the [**class**] keyword and the class's identifier.  This will be explained with the talk on generic procedures.  These samples don't show interfaces or structures, but the syntax is the same.
+The class below takes two type parameters.  Notice the type parameters go between the [**class**] keyword and the class's identifier.  This will be explained with the talk on generic procedures.  These samples don't show interfaces, structures, unions, or type aliases; but the syntax is the same.

 ~~~~
 class &lt;a&gt; Name
&lt;/a&gt;&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Will Pittenger</dc:creator><pubDate>Sun, 09 Feb 2014 13:10:39 -0000</pubDate><guid>https://sourceforge.net2c0d50a37e5000284b5de295735fb3a19e58c2b0</guid></item><item><title>Generics modified by Will Pittenger</title><link>https://sourceforge.net/p/asil/wiki/Generics/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v3
+++ v4
@@ -12,21 +12,24 @@

 Identifier type | Yes or no
 ----------------|----------
+Class | ✓
+Command | ✓
+Complex Statement | ✓
 Conditional variable | ✗
+Constant | ✗
+Constructors | ✗
+Creators | ✗
+Data member variable | ✗
+Destructors | ✗
+Function | ✓
+Global variable (DASIL) | ✗
+Interface | ✓
+Local variable | ✗
 Operator | ✗
-Constant | ✗
-Global variable (DASIL) | ✗
-Local variable | ✗
-Data member variable | ✗
 Primitive-based enum | ✗
 Properties | ✗
 Structure | ✓
-Class | ✓
-Interface | ✓
 Structure-based enum | ✓
-Command | ✓
-Function | ✓
-Complex Statement | ✓

 Types of generic type parameters
 --------------------------------
@@ -34,7 +37,7 @@

 A simple generic class
 ----------------------
-The class below takes two type parameters.  Notice the type parameters go between the [**class**] word and the class identifier.  This will be explained with the talk on generic procedures.  These samples don't show interfaces or structures, but the syntax is the same.
+The class below takes two type parameters.  Notice the type parameters go between the [**class**] keyword and the class's identifier.  This will be explained with the talk on generic procedures.  These samples don't show interfaces or structures, but the syntax is the same.

 ~~~~
 class &lt;a&gt; Name
&lt;/a&gt;&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Will Pittenger</dc:creator><pubDate>Sat, 08 Feb 2014 13:27:32 -0000</pubDate><guid>https://sourceforge.netf60c682e5a8e48caed276f9104b2730774c9f65f</guid></item><item><title>Generics modified by Will Pittenger</title><link>https://sourceforge.net/p/asil/wiki/Generics/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v2
+++ v3
@@ -87,7 +87,7 @@
     g = struct
 ~~~~

-Now you should be able to see why ASIL puts the declaration of type parameters before the name of what is being declared.  If the order were &lt;code&gt;command GenericCommand&amp;lt;a&amp;gt; var a A&lt;/code&gt;, would "&lt;a&gt;" be part of the syntax or the type parameters?
+Now you should be able to see why ASIL puts the declaration of type parameters before the name of what is being declared.  If the order were &lt;code&gt;command GenericCommand&amp;lt;a&amp;gt; var a A&lt;/code&gt;", would "&amp;lt;a&amp;gt;" be part of the syntax or the type parameters?

 Referencing a generic class
 ---------------------------
&lt;/a&gt;&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Will Pittenger</dc:creator><pubDate>Thu, 06 Feb 2014 20:22:22 -0000</pubDate><guid>https://sourceforge.net1ecd1429b23d2dceca25194bfd8f811f44c1686a</guid></item><item><title>Generics modified by Will Pittenger</title><link>https://sourceforge.net/p/asil/wiki/Generics/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v1
+++ v2
@@ -3,6 +3,8 @@
 Overview
 --------
 Generics in ASIL are closer to .NET generics most closely in usage than Java.  That's because Java generics are more like "pseudo-generics".  Java strips the type information out and converts the generics into their raw form.  This makes it impossible to access information about the type parameters at run time.  The syntax is loosely adapted from C#.
+
+Note: The names of your type parameters must be unique inside whatever is generic.  So if you have a generic class with a type paremter named "x", "x" can't be the name of any member.

 What can and can't be generic
 -----------------------------
@@ -32,7 +34,7 @@

 A simple generic class
 ----------------------
-The class below takes two type parameters.  Notice the type parameters go between the [**class**] word and the class identifier.  This will be explained with the talk on generic procedures.
+The class below takes two type parameters.  Notice the type parameters go between the [**class**] word and the class identifier.  This will be explained with the talk on generic procedures.  These samples don't show interfaces or structures, but the syntax is the same.

 ~~~~
 class &lt;a&gt; Name
@@ -65,3 +67,55 @@
       d = class ' Must be a class
 ~~~~

+Generic procedures
+------------------
+Commands, functions, and complex structures can all be generic.  The code sample below shows samples of each.  The [**returns**] and [**where**] clauses for generic functions can occur in any order.  (Note: The samples only show prototypes.)
+
+~~~~
+command &lt;/a&gt;&lt;a&gt; GenericCommand var a A
+  where
+    a = enum
+
+function  GenericFunction var c C
+  returns c
+  where
+    c
+      implements IComparable
+
+statement  GenericStatement var &amp; g G
+  where
+    g = struct
+~~~~
+
+Now you should be able to see why ASIL puts the declaration of type parameters before the name of what is being declared.  If the order were &lt;code&gt;command GenericCommand&amp;lt;a&amp;gt; var a A&lt;/code&gt;, would "&lt;/a&gt;&lt;a&gt;" be part of the syntax or the type parameters?
+
+Referencing a generic class
+---------------------------
+Expanding a generic class is similar to C++, C#, and Java.  Use the syntax shown below.
+
+~~~~
+var GenericClass name = new GenericClass
+~~~~
+
+Calling a generic procedure
+---------------------------
+Now that ASIL is expecting type parameters, it can expect, and even require, them.  So use this syntax.
+
+~~~~
+GenericCommand myEnumInstance
+
+var String name 
+name = GenericFunction "test"
+
+GenericStatement var MyStruct myStructInstance
+  ' Do something
+~~~~
+
+Covariance and Contravariance
+-----------------------------
+It is unknown how useful Contravariance is.  But Covariance can be used.  Both are shown here, but Contravariance might not survive.
+
+~~~~
+var GenericClass ' Covariance
+var GenericClass ' Contravariance
+~~~~
&lt;/a&gt;&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Will Pittenger</dc:creator><pubDate>Thu, 06 Feb 2014 20:19:52 -0000</pubDate><guid>https://sourceforge.net23b1f14aed43457a2668e5e6b834a44dc0f37b74</guid></item><item><title>Generics modified by Will Pittenger</title><link>https://sourceforge.net/p/asil/wiki/Generics/</link><description>&lt;div class="markdown_content"&gt;&lt;div class="toc"&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#overview"&gt;Overview&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#what-can-and-cant-be-generic"&gt;What can and can't be generic&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#types-of-generic-type-parameters"&gt;Types of generic type parameters&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#a-simple-generic-class"&gt;A simple generic class&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#a-generic-class-with-restrictions-on-the-type-parameters"&gt;A generic class with restrictions on the type parameters&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;h2 id="overview"&gt;Overview&lt;/h2&gt;
&lt;p&gt;Generics in ASIL are closer to .NET generics most closely in usage than Java.  That's because Java generics are more like "pseudo-generics".  Java strips the type information out and converts the generics into their raw form.  This makes it impossible to access information about the type parameters at run time.  The syntax is loosely adapted from C#.&lt;/p&gt;
&lt;h2 id="what-can-and-cant-be-generic"&gt;What can and can't be generic&lt;/h2&gt;
&lt;p&gt;The table below shows what can and can't be generic.  Note while the various types of variables and properties themselves can't be generic, they can be instances of generics.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Identifier type&lt;/th&gt;
&lt;th&gt;Yes or no&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Conditional variable&lt;/td&gt;
&lt;td&gt;✗&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Operator&lt;/td&gt;
&lt;td&gt;✗&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Constant&lt;/td&gt;
&lt;td&gt;✗&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Global variable (DASIL)&lt;/td&gt;
&lt;td&gt;✗&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Local variable&lt;/td&gt;
&lt;td&gt;✗&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Data member variable&lt;/td&gt;
&lt;td&gt;✗&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Primitive-based enum&lt;/td&gt;
&lt;td&gt;✗&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Properties&lt;/td&gt;
&lt;td&gt;✗&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Structure&lt;/td&gt;
&lt;td&gt;✓&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Class&lt;/td&gt;
&lt;td&gt;✓&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Interface&lt;/td&gt;
&lt;td&gt;✓&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Structure-based enum&lt;/td&gt;
&lt;td&gt;✓&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Command&lt;/td&gt;
&lt;td&gt;✓&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Function&lt;/td&gt;
&lt;td&gt;✓&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Complex Statement&lt;/td&gt;
&lt;td&gt;✓&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="types-of-generic-type-parameters"&gt;Types of generic type parameters&lt;/h2&gt;
&lt;p&gt;ASIL generic type fall into several categories.  Those are primitives, enums, structs, struct-based enums, and classes.  &lt;span&gt;[Delegates]&lt;/span&gt; and &lt;span&gt;[Events]&lt;/span&gt; are considered to be instances of classes.&lt;/p&gt;
&lt;h2 id="a-simple-generic-class"&gt;A simple generic class&lt;/h2&gt;
&lt;p&gt;The class below takes two type parameters.  Notice the type parameters go between the &lt;span&gt;[&lt;strong&gt;class&lt;/strong&gt;]&lt;/span&gt; word and the class identifier.  This will be explained with the talk on generic procedures.&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="kr"&gt;class&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;a&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;b&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;Name&lt;/span&gt;
  &lt;span class="kr"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nx"&gt;GoLeft&lt;/span&gt; &lt;span class="nx"&gt;a&lt;/span&gt; &lt;span class="nx"&gt;HowMuch&lt;/span&gt;
      &lt;span class="nx"&gt;returns&lt;/span&gt; &lt;span class="nx"&gt;b&lt;/span&gt;
    &lt;span class="err"&gt;'&lt;/span&gt; &lt;span class="nx"&gt;Do&lt;/span&gt; &lt;span class="nx"&gt;something&lt;/span&gt; &lt;span class="kd"&gt;with&lt;/span&gt; &lt;span class="nx"&gt;HowMuch&lt;/span&gt; &lt;span class="nx"&gt;and&lt;/span&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;a&lt;/span&gt; &lt;span class="nx"&gt;variable&lt;/span&gt; &lt;span class="nx"&gt;of&lt;/span&gt; &lt;span class="nx"&gt;type&lt;/span&gt; &lt;span class="nx"&gt;b&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;h2 id="a-generic-class-with-restrictions-on-the-type-parameters"&gt;A generic class with restrictions on the type parameters&lt;/h2&gt;
&lt;p&gt;If you need to ensure the passed type has some members, the &lt;span&gt;[&lt;strong&gt;where&lt;/strong&gt;]&lt;/span&gt; clause comes in handy.  This class requires a passed type to derive from X and implement IComparable.&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="nb"&gt;class&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;a&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;Name&lt;/span&gt;
    &lt;span class="k"&gt;where&lt;/span&gt;
      &lt;span class="nx"&gt;a&lt;/span&gt;
        &lt;span class="nx"&gt;inherits&lt;/span&gt; &lt;span class="nx"&gt;X&lt;/span&gt;
        &lt;span class="nx"&gt;implements&lt;/span&gt; &lt;span class="nx"&gt;IComparable&lt;/span&gt;
  &lt;span class="s1"&gt;' Make use of A&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;This generic class takes type parameters with a different type of restriction.&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="n"&gt;class&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;c&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;d&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;Class2&lt;/span&gt;
    &lt;span class="n"&gt;where&lt;/span&gt;
      &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;enum&lt;/span&gt; &lt;span class="err"&gt;'&lt;/span&gt; &lt;span class="n"&gt;must&lt;/span&gt; &lt;span class="n"&gt;be&lt;/span&gt; &lt;span class="n"&gt;an&lt;/span&gt; &lt;span class="k"&gt;enum&lt;/span&gt;
      &lt;span class="n"&gt;b&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;struct&lt;/span&gt; &lt;span class="k"&gt;enum&lt;/span&gt; &lt;span class="err"&gt;'&lt;/span&gt; &lt;span class="n"&gt;must&lt;/span&gt; &lt;span class="n"&gt;be&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="k"&gt;struct&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;based&lt;/span&gt; &lt;span class="k"&gt;enum&lt;/span&gt;
      &lt;span class="n"&gt;c&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;struct&lt;/span&gt; &lt;span class="err"&gt;'&lt;/span&gt; &lt;span class="n"&gt;must&lt;/span&gt; &lt;span class="n"&gt;be&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="k"&gt;struct&lt;/span&gt; &lt;span class="n"&gt;or&lt;/span&gt; &lt;span class="n"&gt;class&lt;/span&gt;
      &lt;span class="n"&gt;d&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;class&lt;/span&gt; &lt;span class="err"&gt;'&lt;/span&gt; &lt;span class="n"&gt;Must&lt;/span&gt; &lt;span class="n"&gt;be&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="n"&gt;class&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Will Pittenger</dc:creator><pubDate>Thu, 06 Feb 2014 18:58:00 -0000</pubDate><guid>https://sourceforge.netb2228ae043b2ebc367404c8272608346ca3d0515</guid></item></channel></rss>