<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.trainzsimulator.com/index.php?action=history&amp;feed=atom&amp;title=Class_Soup</id>
	<title>Class Soup - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.trainzsimulator.com/index.php?action=history&amp;feed=atom&amp;title=Class_Soup"/>
	<link rel="alternate" type="text/html" href="https://wiki.trainzsimulator.com/index.php?title=Class_Soup&amp;action=history"/>
	<updated>2026-11-05T12:59:10Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.46.2</generator>
	<entry>
		<id>https://wiki.trainzsimulator.com/index.php?title=Class_Soup&amp;diff=1850&amp;oldid=prev</id>
		<title>Pev: /* GetNamedTagAsInt */ error correction</title>
		<link rel="alternate" type="text/html" href="https://wiki.trainzsimulator.com/index.php?title=Class_Soup&amp;diff=1850&amp;oldid=prev"/>
		<updated>2011-05-03T10:49:08Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;GetNamedTagAsInt: &lt;/span&gt; error correction&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw-interface=&quot;&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 10:49, 3 May 2011&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l186&quot;&gt;Line 186:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 186:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;;Syntax&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;;Syntax&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  int count = soup.GetNamedTagAsInt(&amp;quot;count&amp;quot;);&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  int count = soup.GetNamedTagAsInt(&amp;quot;count&amp;quot;);&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  int count = soup.&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;GetNamedTagAsBool&lt;/del&gt;(&quot;count&quot;, 25);&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  int count = soup.&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;GetNamedTagAsInt&lt;/ins&gt;(&quot;count&quot;, 25);&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;;Notes&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;;Notes&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Pev</name></author>
	</entry>
	<entry>
		<id>https://wiki.trainzsimulator.com/index.php?title=Class_Soup&amp;diff=1117&amp;oldid=prev</id>
		<title>Windwalkr at 16:22, 9 February 2010</title>
		<link rel="alternate" type="text/html" href="https://wiki.trainzsimulator.com/index.php?title=Class_Soup&amp;diff=1117&amp;oldid=prev"/>
		<updated>2010-02-09T16:22:40Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw-interface=&quot;&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 16:22, 9 February 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*[[TrainzScript &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Langage &lt;/del&gt;Reference|API Hierarchy]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*[[TrainzScript &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Language &lt;/ins&gt;Reference|API Hierarchy]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;**[[Class GSObject|GSObject]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;**[[Class GSObject|GSObject]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;***Soup&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;***Soup&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Windwalkr</name></author>
	</entry>
	<entry>
		<id>https://wiki.trainzsimulator.com/index.php?title=Class_Soup&amp;diff=268&amp;oldid=prev</id>
		<title>Windwalkr: 1 revision</title>
		<link rel="alternate" type="text/html" href="https://wiki.trainzsimulator.com/index.php?title=Class_Soup&amp;diff=268&amp;oldid=prev"/>
		<updated>2010-02-03T13:58:40Z</updated>

		<summary type="html">&lt;p&gt;1 revision&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw-interface=&quot;&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 13:58, 3 February 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;en&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(No difference)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Windwalkr</name></author>
	</entry>
	<entry>
		<id>https://wiki.trainzsimulator.com/index.php?title=Class_Soup&amp;diff=267&amp;oldid=prev</id>
		<title>Andi06: format fixes</title>
		<link rel="alternate" type="text/html" href="https://wiki.trainzsimulator.com/index.php?title=Class_Soup&amp;diff=267&amp;oldid=prev"/>
		<updated>2009-04-24T01:25:52Z</updated>

		<summary type="html">&lt;p&gt;format fixes&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;*[[TrainzScript Langage Reference|API Hierarchy]]&lt;br /&gt;
**[[Class GSObject|GSObject]]&lt;br /&gt;
***Soup&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A Soup object is the script interface to data stored in the [[ACS Text Format]], such as [[config.txt file]]s. Soups are used in various places within Trainz as a way to load and save data, such as property settings. &lt;br /&gt;
*Soups can save items which can be represented as boolean values, floating point numbers, integers, strings, KUID references or nested SubSoups.&lt;br /&gt;
*All data items are saved in key-value pairs and saved information can be stored or retrieved by referring to the name (unique key) of the data item.&lt;br /&gt;
*Soups are used by calls to &amp;#039;&amp;#039;GetProperties()&amp;#039;&amp;#039; and &amp;#039;&amp;#039;SetProperties()&amp;#039;&amp;#039; as a mechanism for saving object data to the session and retrieving it on a subsequent load.&lt;br /&gt;
*It is possible in some cases to save data as one data type and retrieve it as another.&lt;br /&gt;
*Soups descend directly from GSObject enabling them to be passed as parameters to script libraries.&lt;br /&gt;
*A Soup object, with four simple tags and a nested SubSoup might be represented thus:&lt;br /&gt;
 forename   &amp;quot;Gordon&amp;quot;&lt;br /&gt;
 surname    &amp;quot;Bennett&amp;quot;&lt;br /&gt;
 married    0&lt;br /&gt;
 height     1.65 &lt;br /&gt;
 address {&lt;br /&gt;
    0       &amp;quot;1 High Street&amp;quot;&lt;br /&gt;
    1       &amp;quot;Southend&amp;quot;&lt;br /&gt;
    2       &amp;quot;Essex&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
*A new Soup can be created using Constructors.NewSoup() or as a result of method calls:&lt;br /&gt;
 Soup soup = Constructors.NewSoup();       // this soup will be empty&lt;br /&gt;
 Soup soup = GetAsset().GetConfigSoup();   // this will contain the contents of &amp;#039;&amp;#039;config.txt&amp;#039;&amp;#039; in &amp;#039;&amp;#039;Soup&amp;#039;&amp;#039; format.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Clear==&lt;br /&gt;
{{MethodHeader|public native void Clear(void)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*None&lt;br /&gt;
;Returned Value&lt;br /&gt;
*None&lt;br /&gt;
;Syntax&lt;br /&gt;
 soup.Clear();&lt;br /&gt;
;Notes&lt;br /&gt;
*Deletes all tags and values leaving an empty Soup.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Copy==&lt;br /&gt;
{{MethodHeader|public native void Copy(Soup value)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;value&amp;#039;&amp;#039;&amp;#039; = Soup to copy from.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*None&lt;br /&gt;
;Syntax&lt;br /&gt;
 Soup source;&lt;br /&gt;
 Soup destination;&lt;br /&gt;
 destination.Copy(source);&lt;br /&gt;
;Notes&lt;br /&gt;
*Clears &amp;#039;&amp;#039;destination&amp;#039;&amp;#039; and copies all tags from &amp;#039;&amp;#039;source&amp;#039;&amp;#039; creating a duplicate of the original Soup.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==CountTags==&lt;br /&gt;
{{MethodHeader|public native int CountTags(void)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*None&lt;br /&gt;
;Returned Value&lt;br /&gt;
*The total number of tags found at the highest level of the Soup being queried. Nested SubSoups are counted as one tag. &lt;br /&gt;
;Syntax&lt;br /&gt;
 int items = soup.CountTags();&lt;br /&gt;
;Notes&lt;br /&gt;
*Note that since a call to &amp;#039;&amp;#039;[[#GetNamedSoup|GetNamedSoup()]]&amp;#039;&amp;#039; will always return a valid Soup object, the use of CountTags() is in some circumstances, necessary to establish whether or not a Soup object actually contains data.&lt;br /&gt;
 GetAsset().GetConfigSoup().GetNamedSoup(&amp;quot;extensions&amp;quot;)                   // always returns true&lt;br /&gt;
 GetAsset().GetConfigSoup().GetNamedSoup(&amp;quot;extensions&amp;quot;).CountTags()       // returns true only if there is data present&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==GetIndexedTagName==&lt;br /&gt;
{{MethodHeader|public native string GetIndexedTagName(int index)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;index&amp;#039;&amp;#039;&amp;#039; = Integer denoting the tag to search for.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*The tag name of the index&amp;lt;sup&amp;gt;th&amp;lt;/sup&amp;gt; tag in the database.&lt;br /&gt;
*Index must be in the range 0 .. soup.CountTags() - 1 &lt;br /&gt;
;Syntax&lt;br /&gt;
 string tagname = soup.GetIndexedTagName(1);&lt;br /&gt;
;Notes&lt;br /&gt;
*Tag ordering is arbitrary; the Soup is neither guaranteed to be order-preserving nor sorted.&lt;br /&gt;
*Remember that the value returned may be a SubSoup.&lt;br /&gt;
 &amp;lt;font color=#808080&amp;gt;soup1: zero    &amp;quot;1 High Street&amp;quot;&lt;br /&gt;
        one     &amp;quot;Southend&amp;quot;&lt;br /&gt;
        two     &amp;quot;Essex&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 string result = soup1.GetNamedTag(soup1.GetIndexedTagName(1));   // returns &amp;quot;Southend&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
 soup1.GetIndexedTagName(1) would return &amp;quot;one&amp;quot;&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==GetIndexForNamedTag==&lt;br /&gt;
{{MethodHeader|public native int GetIndexForNamedTag(string name)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;name&amp;#039;&amp;#039;&amp;#039; = Tag name to search for.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*The zero based index of the position of the tag name at the highest level of the database.&lt;br /&gt;
*If the named tag is not present the method returns -1.&lt;br /&gt;
;Syntax&lt;br /&gt;
 int index = soup.GetIndexForNamedTag(&amp;quot;one&amp;quot;);&lt;br /&gt;
;Notes&lt;br /&gt;
 &amp;lt;font color=#808080&amp;gt;soup1:  zero    &amp;quot;1 High Street&amp;quot;&lt;br /&gt;
         one     &amp;quot;Southend&amp;quot;&lt;br /&gt;
         two     &amp;quot;Essex&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 string result = soup1.GetIndexForNamedTag(&amp;quot;one&amp;quot;);   // returns 1&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==GetNamedSoup==&lt;br /&gt;
{{MethodHeader|public native Soup GetNamedSoup(string name)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;name&amp;#039;&amp;#039;&amp;#039; = name of SubSoup to retrieve&lt;br /&gt;
;Returned Value&lt;br /&gt;
*The named SubSoup, which will be created if it does not exist&lt;br /&gt;
*This method always returns a Soup object&lt;br /&gt;
;Syntax&lt;br /&gt;
 Soup table = soup.GetNamedSoup(&amp;quot;table&amp;quot;);&lt;br /&gt;
;Notes&lt;br /&gt;
*[[#CountTags|CountTags()]] can be used to establish whether or not the returned Soup has any data.&lt;br /&gt;
 Soup soup = GetAsset().GetConfigSoup().GetNamedSoup(&amp;quot;Not Present&amp;quot;);  // always returns true&lt;br /&gt;
 if (soup and soup.CountTags() &amp;gt; 0)                                   // returns false if soup is empty&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;font color=#808080&amp;gt;soup1:  forename   &amp;quot;Gordon&amp;quot;&lt;br /&gt;
         surname    &amp;quot;Bennett&amp;quot;&lt;br /&gt;
         married    0&lt;br /&gt;
         height     1.65 &lt;br /&gt;
         address {&lt;br /&gt;
            0       &amp;quot;1 High Street&amp;quot;&lt;br /&gt;
            1       &amp;quot;Southend&amp;quot;&lt;br /&gt;
            2       &amp;quot;Essex&amp;quot;&lt;br /&gt;
         }&amp;lt;/font&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 Soup address = soup.GetNamedSoup(&amp;quot;address&amp;quot;); &lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;font color=#808080&amp;gt;returns 0       &amp;quot;1 High Street&amp;quot;&lt;br /&gt;
         1       &amp;quot;Southend&amp;quot;&lt;br /&gt;
         2       &amp;quot;Essex&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==GetNamedTag==&lt;br /&gt;
{{MethodHeader|public native string GetNamedTag(string name)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;name&amp;#039;&amp;#039;&amp;#039; = name of tag from which data is required.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*String value associated with the name parameter.&lt;br /&gt;
*If the tag does not exist an empty string is returned.&lt;br /&gt;
;Syntax&lt;br /&gt;
 string value = soup.GetNamedTag(&amp;quot;tagName&amp;quot;);&lt;br /&gt;
;Notes&lt;br /&gt;
 &amp;lt;font color=#808080&amp;gt;soup1:  forename   &amp;quot;Gordon&amp;quot;&lt;br /&gt;
         surname    &amp;quot;Bennett&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 string data = soup1.GetNamedTag(&amp;quot;surname&amp;quot;);   // returns &amp;quot;Bennett&amp;quot;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==GetNamedTagAsBool==&lt;br /&gt;
{{MethodHeader|public native bool GetNamedTagAsBool(string name)&amp;lt;br&amp;gt;public native bool GetNamedTagAsBool(string name, bool default)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;name&amp;#039;&amp;#039;&amp;#039; = name of tag from which data is required.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*Boolean value associated with the &amp;#039;&amp;#039;name&amp;#039;&amp;#039; parameter.&lt;br /&gt;
;Syntax&lt;br /&gt;
 bool found = soup.GetNamedTagAsBool(&amp;quot;tagName&amp;quot;);&lt;br /&gt;
 bool found = soup.GetNamedTagAsBool(&amp;quot;tagName&amp;quot;, true);&lt;br /&gt;
&lt;br /&gt;
;Notes&lt;br /&gt;
*For the first variant if the tag does not exist &amp;#039;&amp;#039;false&amp;#039;&amp;#039; is returned.&lt;br /&gt;
*For the second variant if the tag does not exist it will be created and assigned the value of &amp;#039;&amp;#039;default&amp;#039;&amp;#039;.&lt;br /&gt;
*In this case &amp;#039;&amp;#039;default&amp;#039;&amp;#039; will be returned by the method.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==GetNamedTagAsFloat==&lt;br /&gt;
{{MethodHeader|public native float GetNamedTagAsFloat(string name)&amp;lt;br&amp;gt;public native float GetNamedTagAsFloat(string name, float defaultValue)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;name&amp;#039;&amp;#039;&amp;#039; = name of tag from which data is required.&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;defaultValue&amp;#039;&amp;#039;&amp;#039; = value to return if the tag is undefined.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*Float value associated with the &amp;#039;&amp;#039;name&amp;#039;&amp;#039; parameter&lt;br /&gt;
*If the tag does not exist defaultValue will be returned, or 0.00 for the first variant.&lt;br /&gt;
;Syntax&lt;br /&gt;
 float speed = soup.GetNamedTagAsFloat(&amp;quot;speed&amp;quot;)&lt;br /&gt;
;Notes&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==GetNamedTagAsInt==&lt;br /&gt;
{{MethodHeader|public native int GetNamedTagAsInt(string name)&amp;lt;br&amp;gt;public native int GetNamedTagAsInt(string name, int default)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;name&amp;#039;&amp;#039;&amp;#039; = name of tag from which data is required.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*Integer value associated with the &amp;#039;&amp;#039;name&amp;#039;&amp;#039; parameter.&lt;br /&gt;
;Syntax&lt;br /&gt;
 int count = soup.GetNamedTagAsInt(&amp;quot;count&amp;quot;);&lt;br /&gt;
 int count = soup.GetNamedTagAsBool(&amp;quot;count&amp;quot;, 25);&lt;br /&gt;
&lt;br /&gt;
;Notes&lt;br /&gt;
*For the first variant if the tag does not exist 0 is returned.&lt;br /&gt;
*For the second variant if the tag does not exist it will be created and assigned the value of &amp;#039;&amp;#039;default&amp;#039;&amp;#039;.&lt;br /&gt;
*In this case &amp;#039;&amp;#039;default&amp;#039;&amp;#039; will be returned by the method.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==GetNamedTagAsKUID==&lt;br /&gt;
{{MethodHeader|public native KUID GetNamedTagAsKUID(string name)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;name&amp;#039;&amp;#039;&amp;#039; = name of tag from which data is required.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*KUID reference associated with the name parameter.&lt;br /&gt;
*if the tag does not exist null is returned.&lt;br /&gt;
;Syntax&lt;br /&gt;
 KUID kuid = soup.GetNamedTagAsKUID(&amp;quot;kuidValue&amp;quot;);&lt;br /&gt;
;Notes&lt;br /&gt;
*[[#SetNamedTag|SetNamedTag()]] can write a KUID in string format for retrieval by this method.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==IsLocked==&lt;br /&gt;
{{MethodHeader|public native bool IsLocked(void)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*None&lt;br /&gt;
;Returned Value&lt;br /&gt;
*Boolean value indicating whether data can be written to the Soup.&lt;br /&gt;
;Syntax&lt;br /&gt;
 bool canWriteData = !soup.IsLocked();&lt;br /&gt;
;Notes&lt;br /&gt;
*Config.txt data returned by [[Asset#GetConfigSoup|GetConfigSoup()]] is always read-only&lt;br /&gt;
*Attempting to write data to a locked soup will cause an exception with the message &amp;quot;parent soup is locked&amp;quot;&lt;br /&gt;
*It is not possible to write directly to a nested soup.&lt;br /&gt;
 To update a sub soup:&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;font color=#808080&amp;gt;soup1:   forename   &amp;quot;Gordon&amp;quot;&lt;br /&gt;
          surname    &amp;quot;Bennett&amp;quot;&lt;br /&gt;
          married    0&lt;br /&gt;
          height     1.65 &lt;br /&gt;
          address {&lt;br /&gt;
             0       &amp;quot;1 High Street&amp;quot;&lt;br /&gt;
             1       &amp;quot;Southend&amp;quot;&lt;br /&gt;
             2       &amp;quot;Essex&amp;quot;&lt;br /&gt;
          }&amp;lt;/font&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 Soup subSoup = soup.GetNamedSoup(&amp;quot;address&amp;quot;);     // copy the sub soup data to a temporary soup&lt;br /&gt;
 subSoup.SetNamedTag(3,&amp;quot;SS2 3PX&amp;quot;);                // add a new tag&lt;br /&gt;
 soup.SetNamedSoup(&amp;quot;address&amp;quot;,subSoup);            // write the amended sub soup back to its parent&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;font color=#808080&amp;gt;result:  data:  forename   &amp;quot;Gordon&amp;quot;&lt;br /&gt;
          surname    &amp;quot;Bennett&amp;quot;&lt;br /&gt;
          married    0&lt;br /&gt;
          height     1.65 &lt;br /&gt;
          address {&lt;br /&gt;
             0       &amp;quot;1 High Street&amp;quot;&lt;br /&gt;
             1       &amp;quot;Southend&amp;quot;&lt;br /&gt;
             2       &amp;quot;Essex&amp;quot;&lt;br /&gt;
             3       &amp;quot;SS2 3PX&amp;quot;&lt;br /&gt;
          }&amp;lt;/font&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==RemoveNamedTag==&lt;br /&gt;
{{MethodHeader|public native void RemoveNamedTag(string name)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;name&amp;#039;&amp;#039;&amp;#039; = name of tag to delete.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*None&lt;br /&gt;
;Syntax&lt;br /&gt;
 soup.RemoveNamedTag(&amp;quot;address&amp;quot;);&lt;br /&gt;
;Notes&lt;br /&gt;
*Deletes the named tag and its associated value.&lt;br /&gt;
*If the tag references a sub soup the entire soup will be removed.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==SetNamedSoup==&lt;br /&gt;
{{MethodHeader|public native void SetNamedSoup(string name, Soup value)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;name&amp;#039;&amp;#039;&amp;#039; = name of subsoup tag to assign.&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;value&amp;#039;&amp;#039;&amp;#039; = Soup data to write to this tag&lt;br /&gt;
;Returned Value&lt;br /&gt;
*None&lt;br /&gt;
;Syntax&lt;br /&gt;
 soup1.SetNamedSoup(&amp;quot;address&amp;quot;,soup2);&lt;br /&gt;
;Notes&lt;br /&gt;
*Creates a new database tag and writes &amp;#039;&amp;#039;value&amp;#039;&amp;#039; to it as a new sub soup.&lt;br /&gt;
*If the tag already exists it will be updated.&lt;br /&gt;
 &amp;lt;font color=#808080&amp;gt;soup1:   forename   &amp;quot;Gordon&amp;quot;&lt;br /&gt;
          surname    &amp;quot;Bennett&amp;quot;&lt;br /&gt;
          married    0&lt;br /&gt;
          height     1.65 &lt;br /&gt;
 &lt;br /&gt;
 soup2:   address {&lt;br /&gt;
             0       &amp;quot;1 High Street&amp;quot;&lt;br /&gt;
             1       &amp;quot;Southend&amp;quot;&lt;br /&gt;
             2       &amp;quot;Essex&amp;quot;&lt;br /&gt;
          }&amp;lt;/font&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 soup1.SetNamedSoup(&amp;quot;address&amp;quot;,soup2);            // write the sub soup data to the address tag&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;font color=#808080&amp;gt;result:  forename   &amp;quot;Gordon&amp;quot;&lt;br /&gt;
          surname    &amp;quot;Bennett&amp;quot;&lt;br /&gt;
          married    0&lt;br /&gt;
          height     1.65 &lt;br /&gt;
          address {&lt;br /&gt;
             0       &amp;quot;1 High Street&amp;quot;&lt;br /&gt;
             1       &amp;quot;Southend&amp;quot;&lt;br /&gt;
             2       &amp;quot;Essex&amp;quot;&lt;br /&gt;
          }&amp;lt;/font&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==SetNamedTag==&lt;br /&gt;
{{MethodHeader|public void SetNamedTag(string name, bool value)&amp;lt;br&amp;gt;public void SetNamedTag(string name, float value)&amp;lt;br&amp;gt;public void SetNamedTag(string name, int value)&amp;lt;br&amp;gt;public void SetNamedTag(string name, KUID value)&amp;lt;br&amp;gt;public void SetNamedTag(string name, string value)&lt;br /&gt;
}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;name&amp;#039;&amp;#039;&amp;#039; = tag name to assign a value to.&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;value&amp;#039;&amp;#039;&amp;#039; = data to assign to tag, this can be of type bool, float, int KUID or string.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*None&lt;br /&gt;
;Syntax&lt;br /&gt;
 soup.SetNamedTag(&amp;quot;index&amp;quot;,1);&lt;br /&gt;
 soup.SetNamedTag(&amp;quot;open&amp;quot;,true);&lt;br /&gt;
 soup.SetNamedTag(&amp;quot;myKUID&amp;quot;,&amp;quot;&amp;lt;KUID:1234:5678&amp;gt;&amp;quot;);&lt;br /&gt;
;Notes&lt;br /&gt;
*The tag value is created if it does not already exist and overwritten otherwise&lt;br /&gt;
*KUIDs may be entered as strings or as KUID references.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Code Examples==&lt;br /&gt;
{{MethodHeader|Soup to Array Conversion}}&lt;br /&gt;
*Soups cannot directly store Array types but conversion between Arrays and Soups is fairly straightforward.&lt;br /&gt;
*Similar code can be used for other array types as long as the Soup class supports the base type of the array.&lt;br /&gt;
*Lists of GameObjects can be saved by reference to their session name, using GameObject.GetName(), or if the list is needed during the current session only, by referencing their ID using GameObject.GetId().&lt;br /&gt;
 Soup IntArrayToSoup(int[] numbers) {&lt;br /&gt;
    int i;&lt;br /&gt;
    Soup soup = Constructors.NewSoup();&lt;br /&gt;
    for (i = 0; i &amp;lt; numbers.size(); i++) {&lt;br /&gt;
       soup.SetNamedTag(i,numbers[i]);&lt;br /&gt;
    }&lt;br /&gt;
    return soup;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 int[] SoupToIntArray(Soup soup) {  // any non integer values will be saved as zero&lt;br /&gt;
    int i;&lt;br /&gt;
    int[] numbers = new int[0];&lt;br /&gt;
    for (i = 0; i &amp;lt; soup.CountTags(); i++) {&lt;br /&gt;
       string tag = soup.GetIndexedTagName(i);&lt;br /&gt;
       numbers[numbers.size()] = soup.GetNamedTagAsInt(tag);&lt;br /&gt;
    }&lt;br /&gt;
    return numbers;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Related Methods==&lt;br /&gt;
&lt;br /&gt;
[[class Asset#GetConfigSoup|Asset.GetConfigSoup()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Class Constructors#NewSoup|Constructors.NewSoup()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[class PropertyObject#GetProperties|PropertyObject.GetProperties()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[class PropertyObject#SetProperties|PropertyObject.SetProperties()]]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Categories==&lt;br /&gt;
[[Category:Script Class]]&lt;/div&gt;</summary>
		<author><name>Andi06</name></author>
	</entry>
</feed>