Difference between revisions of "Template:LSL Conditional"

From Second Life Wiki
Jump to navigation Jump to search
m (ahhhhh)
(Noted caveat in boolean evaluation of LSO-compiled lists: BUG-230728)
 
(5 intermediate revisions by one other user not shown)
Line 70: Line 70:
}}
}}
</div>
</div>
</noinclude><includeonly>{{#vardefine:pe_name|{{{statement_end|}}}}}{{#vardefine:pe_desc|{{#var:p_{{#var:pe_name}}_desc}}{{{statement_end_desc|}}}}}{{#vardefine:p1_name|{{{p1_name|}}}}}{{#vardefine:p1_type|{{{p1_type|}}}}}{{#vardefine:p_{{#var:p1_name}}_desc|{{#var:p_{{#var:p1_name}}_desc}}{{{p1_desc|}}}}}{{#vardefine:p2_name|{{{p2_name|}}}}}{{#vardefine:p2_type|{{{p2_type|}}}}}{{#vardefine:p_{{#var:p2_name}}_desc|{{#var:p_{{#var:p2_name}}_desc}}{{{p2_desc|}}}}}{{#vardefine:p3_name|{{{p3_name|}}}}}{{#vardefine:p3_type|{{{p3_type|}}}}}{{#vardefine:p_{{#var:p3_name}}_desc|{{#var:p_{{#var:p3_name}}_desc}}{{{p3_desc|}}}}}{{#vardefine:p4_name|{{{p4_name|}}}}}{{#vardefine:p4_type|{{{p4_type|}}}}}{{#vardefine:p_{{#var:p4_name}}_desc|{{#var:p_{{#var:p4_name}}_desc}}{{{p4_desc|}}}}}{{#vardefine:p5_name|{{{p5_name|}}}}}{{#vardefine:p5_type|{{{p5_type|}}}}}{{#vardefine:p_{{#var:p5_name}}_desc|{{#var:p_{{#var:p5_name}}_desc}}{{{p5_desc|}}}}}{{#vardefine:p6_name|{{{p6_name|}}}}}{{#vardefine:p6_type|{{{p6_type|}}}}}{{#vardefine:p_{{#var:p6_name}}_desc|{{#var:p_{{#var:p6_name}}_desc}}{{{p6_desc|}}}}}{{#vardefine:p7_name|{{{p7_name|}}}}}{{#vardefine:p7_type|{{{p7_type|}}}}}{{#vardefine:p_{{#var:p7_name}}_desc|{{#var:p_{{#var:p7_name}}_desc}}{{{p7_desc|}}}}}{{#vardefine:p8_name|{{{p8_name|}}}}}{{#vardefine:p8_type|{{{p8_type|}}}}}{{#vardefine:p_{{#var:p8_name}}_desc|{{#var:p_{{#var:p8_name}}_desc}}{{{p8_desc|}}}}}{{#vardefine:p9_name|{{{p9_name|}}}}}{{#vardefine:p9_type|{{{p9_type|}}}}}{{#vardefine:p_{{#var:p9_name}}_desc|{{#var:p_{{#var:p9_name}}_desc}}{{{p9_desc|}}}}}{{#vardefine:p10_name|{{{p10_name|}}}}}{{#vardefine:p10_type|{{{p10_type|}}}}}{{#vardefine:p_{{#var:p10_name}}_desc|{{#var:p_{{#var:p10_name}}_desc}}{{{p10_desc|}}}}}{{#vardefine:p11_name|{{{p11_name|}}}}}{{#vardefine:p11_type|{{{p11_type|}}}}}{{#vardefine:p_{{#var:p11_name}}_desc|{{#var:p_{{#var:p11_name}}_desc}}{{{p11_desc|}}}}}{{#vardefine:p12_name|{{{p12_name|}}}}}{{#vardefine:p12_type|{{{p12_type|}}}}}{{#vardefine:p_{{#var:p12_name}}_desc|{{#var:p_{{#var:p12_name}}_desc}}{{{p12_desc|}}}}}{{#vardefine:return_end|&nbsp;{{#if:{{#var:pe_desc}}|{{HoverText|{{#var:pe_name}}|{{#var:pe_desc}}}}|{{#var:pe_name}}}}}}{{#vardefine:name|{{{statement}}}}}{{#vardefine:type|flow control}}{{#vardefine:template|none}}{{#ifeq:{{#var:mode}}|god|{{{{#ifeq:{{#var:mode}}|god|LSL_Generic/god|!}}|}} }}{{#ifeq:{{#var:mode}}|request|{{{{#ifeq:{{#var:mode}}|request|LSL_Generic/request|!}}|}} }}{{#if:{{{deprecated|}}}{{{depreciated|}}}|{{{{#if:{{{deprecated|}}}{{{depreciated|}}}|LSL_Generic/deprecated|!}}|{{{deprecated|}}}{{{depreciated|}}}|}}}}{{#vardefine:mode|{{#var:mode}}{{{mode|}}}}}{{#vardefine:self|{{#var:self}}{{{self|}}}}}{{#vardefine:sort|{{#if:{{#var:sort}}|{{#var:sort}}|{{#if:{{{sort|}}}|{{{sort}}}|{{ucfirst:{{#var:name}}}}}}}}}}{{#vardefine:header_footnote|{{{statement_desc|}}}}}{{#vardefine:header_desc|{{{statement_type|}}}}}{{#vardefine:separator|<nowiki>;</nowiki>}}{{#vardefine:header_text|{{LSL_Generic/Text}}}}{{#vardefine:header_title|{{#if:{{{statement_title|}}}|{{{statement_title|}}}|{{LSL_Generic/Title}}}}}}<div id="RealTitleBanner" style="display:none;"><span id="RealTitle">{{#var:name}}</span></div> __NOTOC__ {{#if:{{#var:self}}|| __NOEDITSECTION__ }} {{#var:header}}
</noinclude><includeonly>{{#if:
 
{{Footnote|handle=OpenSim|The OpenSim LSL compiler will not do this implicitly. You will need to use an explicit check.}}
 
{{#if:{{#var:history}}{{{history|}}}|
{{#vardefine:history|{{#var:history}}{{PBR}}
{{{history|}}}{{PBR}}}}
}}
 
{{#if:{{#var:deepnotes}}{{{deepnotes|}}}|
{{#vardefine:deepnotes|{{#var:deepnotes}}{{PBR}}
{{{deepnotes|}}}{{PBR}}}}
}}
 
{{#if:{{#var:mono}}{{{mono|}}}|
{{#vardefine:mono|{{#var:mono}}{{PBR}}
{{{mono|}}}{{PBR}}}}
}}
 
{{#if:{{#var:lso}}{{{lso|}}}|
{{#vardefine:lso|{{#var:lso}}{{PBR}}
{{{lso|}}}{{PBR}}}}
}}
 
{{#vardefine:issues|{{#var:issues}}
{{{issues|}}}}}
 
{{#vardefine:also_tests|{{#var:also_tests}}
{{{also_tests|}}}}}
 
{{#if:{{#var:location}}{{{location|}}}|
{{#vardefine:location|{{#var:location}}{{PBR}}
{{{location|}}}{{PBR}}}}
}}
 
{{#if:{{#var:messaging}}{{{messaging|}}}|
{{#vardefine:messaging|{{#var:messaging}}{{PBR}}
{{{messaging|}}}{{PBR}}}}
}}
 
}}{{#vardefine:pe_name|{{{statement_end|}}}}}{{#vardefine:pe_desc|{{#var:p_{{#var:pe_name}}_desc}}{{{statement_end_desc|}}}}}{{#vardefine:p1_name|{{{p1_name|}}}}}{{#vardefine:p1_type|{{{p1_type|}}}}}{{#vardefine:p_{{#var:p1_name}}_desc|{{#var:p_{{#var:p1_name}}_desc}}{{{p1_desc|}}}}}{{#vardefine:p2_name|{{{p2_name|}}}}}{{#vardefine:p2_type|{{{p2_type|}}}}}{{#vardefine:p_{{#var:p2_name}}_desc|{{#var:p_{{#var:p2_name}}_desc}}{{{p2_desc|}}}}}{{#vardefine:p3_name|{{{p3_name|}}}}}{{#vardefine:p3_type|{{{p3_type|}}}}}{{#vardefine:p_{{#var:p3_name}}_desc|{{#var:p_{{#var:p3_name}}_desc}}{{{p3_desc|}}}}}{{#vardefine:p4_name|{{{p4_name|}}}}}{{#vardefine:p4_type|{{{p4_type|}}}}}{{#vardefine:p_{{#var:p4_name}}_desc|{{#var:p_{{#var:p4_name}}_desc}}{{{p4_desc|}}}}}{{#vardefine:p5_name|{{{p5_name|}}}}}{{#vardefine:p5_type|{{{p5_type|}}}}}{{#vardefine:p_{{#var:p5_name}}_desc|{{#var:p_{{#var:p5_name}}_desc}}{{{p5_desc|}}}}}{{#vardefine:p6_name|{{{p6_name|}}}}}{{#vardefine:p6_type|{{{p6_type|}}}}}{{#vardefine:p_{{#var:p6_name}}_desc|{{#var:p_{{#var:p6_name}}_desc}}{{{p6_desc|}}}}}{{#vardefine:p7_name|{{{p7_name|}}}}}{{#vardefine:p7_type|{{{p7_type|}}}}}{{#vardefine:p_{{#var:p7_name}}_desc|{{#var:p_{{#var:p7_name}}_desc}}{{{p7_desc|}}}}}{{#vardefine:p8_name|{{{p8_name|}}}}}{{#vardefine:p8_type|{{{p8_type|}}}}}{{#vardefine:p_{{#var:p8_name}}_desc|{{#var:p_{{#var:p8_name}}_desc}}{{{p8_desc|}}}}}{{#vardefine:p9_name|{{{p9_name|}}}}}{{#vardefine:p9_type|{{{p9_type|}}}}}{{#vardefine:p_{{#var:p9_name}}_desc|{{#var:p_{{#var:p9_name}}_desc}}{{{p9_desc|}}}}}{{#vardefine:p10_name|{{{p10_name|}}}}}{{#vardefine:p10_type|{{{p10_type|}}}}}{{#vardefine:p_{{#var:p10_name}}_desc|{{#var:p_{{#var:p10_name}}_desc}}{{{p10_desc|}}}}}{{#vardefine:p11_name|{{{p11_name|}}}}}{{#vardefine:p11_type|{{{p11_type|}}}}}{{#vardefine:p_{{#var:p11_name}}_desc|{{#var:p_{{#var:p11_name}}_desc}}{{{p11_desc|}}}}}{{#vardefine:p12_name|{{{p12_name|}}}}}{{#vardefine:p12_type|{{{p12_type|}}}}}{{#vardefine:p_{{#var:p12_name}}_desc|{{#var:p_{{#var:p12_name}}_desc}}{{{p12_desc|}}}}}{{#vardefine:return_end|&nbsp;{{#if:{{#var:pe_desc}}|{{HoverText|{{#var:pe_name}}|{{#var:pe_desc}}}}|{{#var:pe_name}}}}}}{{#vardefine:name|{{{statement}}}}}{{#vardefine:type|flow control}}{{#vardefine:template|none}}{{#ifeq:{{#var:mode}}|god|{{{{#ifeq:{{#var:mode}}|god|LSL_Generic/god|!}}|}} }}{{#ifeq:{{#var:mode}}|request|{{{{#ifeq:{{#var:mode}}|request|LSL_Generic/request|!}}|}} }}{{#if:{{{deprecated|}}}{{{depreciated|}}}|{{{{#if:{{{deprecated|}}}{{{depreciated|}}}|LSL_Generic/deprecated|!}}|{{{deprecated|}}}{{{depreciated|}}}|}}}}{{#vardefine:mode|{{#var:mode}}{{{mode|}}}}}{{#vardefine:self|{{#var:self}}{{{self|}}}}}{{#vardefine:sort|{{#if:{{#var:sort}}|{{#var:sort}}|{{#if:{{{sort|}}}|{{{sort}}}|{{ucfirst:{{#var:name}}}}}}}}}}{{#vardefine:header_footnote|{{{statement_desc|}}}}}{{#vardefine:header_desc|{{{statement_type|}}}}}{{#vardefine:separator|<nowiki>;</nowiki>}}{{#vardefine:header_text|{{LSL_Generic/Text}}}}{{#vardefine:header_title|{{#if:{{{statement_title|}}}|{{{statement_title|}}}|{{LSL_Generic/Title}}}}}}{{#ifeq:{{NAMESPACE}}|Template|<div></div>|<div id="RealTitleBanner" style="display:none;"><span id="RealTitle">{{#var:name}}</span></div>}} __NOTOC__ {{#if:{{#var:self}}|| __NOEDITSECTION__ }} {{#var:header}}
<div id="box">
<div id="box">
<h2>{{#var:header_title}}</h2>
<h2>{{#var:header_title}}</h2>
Line 79: Line 119:
<h2>Specification</h2>
<h2>Specification</h2>
<div style="padding: 0.5em">
<div style="padding: 0.5em">
{{LSL_Constants_Conditional}}
<!--LSL_Constants_Conditional - BEGIN-->
<div style="float:left;">
{{{!}} {{Prettytable}}
{{!}}+ '''Conditional Types'''
{{!}}-{{Hl2}}
!Type
!Condition
{{!}}-
{{!}}[[integer]]
{{!}}True if it is not zero.
{{!}}-
{{!}}[[float]]
{{!}}True if it is not zero.{{Footnote|handle=OpenSim}}
{{!}}-
{{!}}[[string]]
{{!}}True if its [[llStringLength|length]] is not zero.
{{!}}-
{{!}}[[key]]
{{!}}True only if it is a valid key and not [[NULL_KEY]].
{{!}}-
{{!}}[[vector]]
{{!}}True if the vector is not [[ZERO_VECTOR]].
{{!}}-
{{!}}[[rotation]]
{{!}}True if the rotation is not [[ZERO_ROTATION]].
{{!}}-
{{!}}[[list]]
{{!}}True if the [[llGetListLength|length]] is not zero.  Note that correct behavior is only seen with Mono-compiled scripts; LSO-compiled scripts incorrectly resolve to [[false]] if the list is non-empty: BUG-230728
{{!}}}
</div>
<!--LSL_Constants_Conditional - END-->
{{#var:spec}}{{PBR}}
{{#var:spec}}{{PBR}}
{{{spec|}}}{{PBR}}
{{{spec|}}}{{PBR}}
Line 120: Line 190:
{{!}}} }}
{{!}}} }}
{{#if:{{#var:also_footer}}{{{also_footer|}}}|<br/>{{#var:also_footer}}{{{also_footer|}}}}}
{{#if:{{#var:also_footer}}{{{also_footer|}}}|<br/>{{#var:also_footer}}{{{also_footer|}}}}}
</div></div>}}{{#if:{{#var:location}}{{{location|}}}|
</div></div>}}{{#if:{{#var:deepnotes}}{{#var:mono}}{{#var:lso}}{{#var:history}}{{#var:also_tests}}{{#var:issues{{#var:direction}}}}{{#var:location}}{{#var:messaging}}{{#var:footnotes}}{{#if:{{#pos:{{#var:moded}}|u}}||1}}{{{signature|}}}{{{haiku|}}}{{{poetry|}}}|<div id="box">
<div id="box">
== Deep Notes ==
<h2>Source Location</h2>
<div style="padding: 0.5em"><div>
<div style="padding: 0.5em">
{{#var:deepnotes}}
{{#var:location}}{{{location|}}}
</div>{{#if:{{#var:mono}}|
</div></div>}}{{#var:footer}}<span id="sort" style="display:none;">{{#var:sort}}</span>{{#if:{{{self|}}}|| {{#ifeq:{{#var:mode}}|request||{{LSLC|Flow Control{{#var:lang}}|{{#var:sort}}}}}} {{#if:{{#var:examples}}{{{examples|}}}||{{LSLC|Needs Example|{{#var:sort}}|{{#var:lang}}}}}} {{#if:{{{cat1|}}}|{{LSLC|{{{cat1}}}|{{#var:sort}}}}}} {{#if:{{{cat2|}}}|{{LSLC|{{{cat2}}}|{{#var:sort}}}}}} {{#if:{{{cat3|}}}|{{LSLC|{{{cat3}}}|{{#var:sort}}}}}} {{#if:{{{cat4|}}}|{{LSLC|{{{cat4}}}|{{#var:sort}}}}}} {{#if:{{{cat5|}}}|{{LSLC|{{{cat5}}}|{{#var:sort}}}}}} {{#if:{{{cat6|}}}|{{LSLC|{{{cat6}}}|{{#var:sort}}}}}} }}</includeonly>
<h4> Mono VM Notes </h4><div>
{{#var:mono}}
</div>}}{{#if:{{#var:lso}}|
<h4> LSO VM Notes </h4><div>
{{#var:lso}}
</div>}}{{#if:{{#var:history}}|
<h4> History </h4><div>
{{#var:history}}
</div>}}
{{Anchor|Issues}}{{LSL_Generic/Issues}}{{#if:{{#var:also_tests}}|
<h3>Tests</h3>
{{{!}}
{{#var:also_tests}}
{{!}}}
}}{{#if:{{#var:location}}|
<h4> Source </h4><div>
{{#var:location}}
</div>}}{{#if:{{#var:messaging}}|
<h4> Messaging </h4><div>
{{#var:messaging}}
</div>}}{{#if:{{#var:footnotes}}|
<h4 style="margin-bottom:0;"> Footnotes </h4>
{{{{#if:{{#var:footnotes}}|Footnotes|!}}|}}
}}
{{#if:{{{haiku|}}}{{{poetry|}}}|{{Collapsible_Table|table-class=haiku|table-style=width:100%;|title-style=text-align:left;|title=<h4 style="margin-top:0;">Haiku</h4>|content={{!}}
{{{haiku|}}}
{{{poetry|}}}
}}}}
</div></div>}}{{#if:{{{comments|}}}|<div id="box">
<h2>Comments</h2>
<div style="padding: 0.5em;">
{{{comments|}}}
</div></div>}}
<div style="display:none" class="hidden-text" id="hidden-text">{{#var:hidden-text}}</div>
{{#var:footer}}<span id="sort" style="display:none;">{{#var:sort}}</span>{{#if:{{{self|}}}|| {{#ifeq:{{#var:mode}}|request||{{LSLC|Flow Control{{#var:lang}}|{{#var:sort}}}}}} {{#if:{{#var:examples}}{{{examples|}}}||{{LSLC|Needs Example|{{#var:sort}}|{{#var:lang}}}}}} {{#if:{{{cat1|}}}|{{LSLC|{{{cat1}}}|{{#var:sort}}}}}} {{#if:{{{cat2|}}}|{{LSLC|{{{cat2}}}|{{#var:sort}}}}}} {{#if:{{{cat3|}}}|{{LSLC|{{{cat3}}}|{{#var:sort}}}}}} {{#if:{{{cat4|}}}|{{LSLC|{{{cat4}}}|{{#var:sort}}}}}} {{#if:{{{cat5|}}}|{{LSLC|{{{cat5}}}|{{#var:sort}}}}}} {{#if:{{{cat6|}}}|{{LSLC|{{{cat6}}}|{{#var:sort}}}}}} }}</includeonly>

Latest revision as of 09:36, 11 May 2021

{{LSL_Conditional
|statement
|statement_header
|statement_desc
|statement_end
|statement_end_desc
|p1_name|p1_desc
|p2_name|p2_desc
|p3_name|p3_desc
|p4_name|p4_desc
|p5_name|p5_desc
|p6_name|p6_desc
|p7_name|p7_desc
|p8_name|p8_desc
|p9_name|p9_desc
|p10_name|p10_desc
|p11_name|p11_desc
|p12_name|p12_desc
|constants
|examples
|helpers
|also_header
|also_functions
|also_tests
|also_articles
|also_footer
|notes
|mode
|deprecated
|cat1
|cat2
|cat3
|cat4
}}

funckyloop( i; f; s; k; l; v; rstatement_end

statement_type

•  i i
•  f f
•  s s
•  k k
•  l l
•  v v
•  r r
•  statement_end statement_end_desc


A fictitious statement type

Specification

Conditional Types
Type Condition
integer True if it is not zero.
float True if it is not zero.[1]
string True if its length is not zero.
key True only if it is a valid key and not NULL_KEY.
vector True if the vector is not ZERO_VECTOR.
rotation True if the rotation is not ZERO_ROTATION.
list True if the length is not zero. Note that correct behavior is only seen with Mono-compiled scripts; LSO-compiled scripts incorrectly resolve to false if the list is non-empty: BUG-230728

spec

Examples

examples

Notes

notes


Useful Snippets

helpers

See Also

also_header

Events

  • also_events

Functions

  • also_functions

Tests

  • also_tests
  • also_tests

Articles

  • also_articles


also_footer

Deep Notes

Search JIRA for related Issues

Tests

  • also_tests

Footnotes

  1. ^ The OpenSim LSL compiler will not do this implicitly. You will need to use an explicit check.